搜索
bottom↓
回复: 28

彻底败给51了,程序都不知道怎么写了

[复制链接]

出0入0汤圆

发表于 2013-3-8 15:23:09 | 显示全部楼层 |阅读模式
学单片机的时候是51入门,
现在已经N些年没碰过51了,一直在用stm32
现在突然要用51,STC12LE2052,都不知道怎么写程序了
首先因为Keil里面没有宏晶的片子,所以不知道要选哪个型号代替
我选了89C51,简单代码如下:

#include <reg51.h>

void main()
{
    P3 = 0x0f;
    P1 = 0x0f;
    while(1);
}

ISP下载(ISP好的,下载公司现成的Hex能用),就是没动静,哎,感觉好失败啊
哪位能耐心说说,谢谢了

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入93汤圆

发表于 2013-3-8 15:25:13 | 显示全部楼层
彻底败给楼主了,都不知道怎么说了

出0入0汤圆

 楼主| 发表于 2013-3-8 15:26:34 | 显示全部楼层
tim 发表于 2013-3-8 15:25
彻底败给楼主了,都不知道怎么说了

哎...我也不知道怎么说自己了
兄弟你还是说说吧
我快憋死了

出0入0汤圆

发表于 2013-3-8 15:38:47 | 显示全部楼层
快憋死

出0入93汤圆

发表于 2013-3-8 15:41:16 | 显示全部楼层
老妖的网站上有头文件

出0入0汤圆

发表于 2013-3-8 15:42:07 | 显示全部楼层
本帖最后由 adamwin2011 于 2013-3-8 15:43 编辑

LZ,我能说你基础不牢实吗
……………………………………
1、没有STC12LE2052能用其他型号代替?寄存器一样吗?
你该先找STC12LE2052的数据手册看看吧

2、keil里确实没有STC,要用怎么办?只有在Keil C中增加STC型号,
加头文件,怎么增加,宏晶网上有吧

3、ISP下载,你得用STC-ISP

出0入0汤圆

发表于 2013-3-8 15:43:51 | 显示全部楼层
呵呵,这种事情很正常。找个建好的工程吧,网上应该一大把。

出0入0汤圆

发表于 2013-3-8 15:52:25 | 显示全部楼层
不是用串口下载程序么,你的ISP是这个么

出0入0汤圆

 楼主| 发表于 2013-3-8 15:57:20 | 显示全部楼层
adamwin2011 发表于 2013-3-8 15:42
LZ,我能说你基础不牢实吗
……………………………………
1、没有STC12LE2052能用其他型号代替?寄存器一样 ...

嗯,基础确实不牢
1、大部分寄存器一样的,有一些功能寄存器可以从2052的头文件里找到,自己定义
2、这个我已经找过了,他网站上面有两个.cdb文件,按网上的方法添加,发现里面也没有这个型号,貌似这个型号比较老了
3、ISP下载我用的是这个,下载没问题,因为我吧现成的hex下进去能运行

所以....问题是不知道代码要怎么写

出0入0汤圆

 楼主| 发表于 2013-3-8 15:58:08 | 显示全部楼层
wikicd 发表于 2013-3-8 15:43
呵呵,这种事情很正常。找个建好的工程吧,网上应该一大把。

嗯,是串口的

出0入0汤圆

 楼主| 发表于 2013-3-8 16:01:32 | 显示全部楼层
wikicd 发表于 2013-3-8 15:43
呵呵,这种事情很正常。找个建好的工程吧,网上应该一大把。

兄弟能给一个我看一眼吗,网上我真心没找到
谢谢了

出0入0汤圆

 楼主| 发表于 2013-3-8 16:06:02 | 显示全部楼层
tim 发表于 2013-3-8 15:41
老妖的网站上有头文件

头文件之前就下好了,主要问题还是工程框架,以为添加了他官网上那个文件,里面也找不到STC12le2052这个型号(估计被抛弃了,官网说用5201代替2052)
吐槽一下老妖的网站,真心蛋疼的网站,太乱了

出0入0汤圆

发表于 2013-3-8 16:06:56 | 显示全部楼层
苦行僧 发表于 2013-3-8 15:57
嗯,基础确实不牢
1、大部分寄存器一样的,有一些功能寄存器可以从2052的头文件里找到,自己定义
2、这个 ...

坛子里找的:
http://www.amobbs.com/thread-4374614-1-1.html

出0入0汤圆

发表于 2013-3-8 16:06:59 | 显示全部楼层
苦行僧 发表于 2013-3-8 16:01
兄弟能给一个我看一眼吗,网上我真心没找到
谢谢了

这个。。。不好意思,也没有。只是我一般用新编译工具+新片子都要找现有工程,否则遇到问题被搞死。

出0入0汤圆

 楼主| 发表于 2013-3-8 16:23:20 | 显示全部楼层
adamwin2011 发表于 2013-3-8 16:06
坛子里找的:
http://www.amobbs.com/thread-4374614-1-1.html

谢谢,自己刚刚把IO给摸索通了,原来也 要配置

出0入0汤圆

发表于 2013-3-8 16:39:35 | 显示全部楼层
STC的新下载软件有很多东西可值得撸主看的!

出0入84汤圆

发表于 2013-3-8 16:44:07 | 显示全部楼层
看了LZ的程序偶惊呆了,你让单片机什么都不干,它怎么会有反应呢

出0入0汤圆

 楼主| 发表于 2013-3-8 17:36:17 | 显示全部楼层
czzhouyun 发表于 2013-3-8 16:44
看了LZ的程序偶惊呆了,你让单片机什么都不干,它怎么会有反应呢

呵呵,我只是试一下,IO输出高低电平,不知道原来这个片子的IO也要配置
好像记得之前的89C51不用配置IO口就能用来着.....

出0入0汤圆

发表于 2013-3-8 17:51:57 | 显示全部楼层
我没看出什么问题来

keil里没有stc单片机型号,可以用89C51代替,我从来没添加过,这个是没问题的。
include使用reg51.h,只要不用到stc专有的寄存器,是可以的。通用的部分是能正常使用的。老妖给的头文件只是比reg51.h多了stc所带的外设的sfr地址

下载用stc官网提供的串口下载工具,注意他的使用要求,先点“下载”按钮,再上电源。

IO不配置就是普通的51模式,P0-P3均带上拉的“准双向口模式”

出0入0汤圆

发表于 2013-3-8 20:42:46 | 显示全部楼层
路过.学习一下

出0入0汤圆

 楼主| 发表于 2013-3-8 20:43:59 | 显示全部楼层
zhujinliang2124 发表于 2013-3-8 17:51
我没看出什么问题来

keil里没有stc单片机型号,可以用89C51代替,我从来没添加过,这个是没问题的。

嗯,我应该没把问题说明白,我是说keil里找不到stc的型号,然后忘记了51程序的一般格式,比如sbit定义之类
下载这些都没问题的
谢谢回复,现在这些我都搞明白了,呵呵

出0入0汤圆

发表于 2013-3-9 11:06:17 | 显示全部楼层
老师傅碰到新问题,

出0入0汤圆

发表于 2013-3-12 09:08:15 | 显示全部楼层
我也遇到了,折腾了很久,发现没有把C文件加入工程!!!!!

出0入0汤圆

发表于 2013-3-12 09:28:53 | 显示全部楼层
来一个51的红外线解码列子供参考

------------------------------------------------------------
  名称:遥控器红外解码,PO口接LED,显示功能码以供查看
  编写:mhjerry
  日期:20011.7
  内容:按遥控器上的按键,会在PO口LED上显示
-*------------------------------------------------------------*/  
#include "reg52.h"   //头文件,STC的片子通用,除了特殊寄存器之外可以通用  
  
//定义 此口为红外信号输入MCU口  
sbit IR_Out = P3^2;   
  
// 主程序运行标志位,运行主程序时LED灭,运行中断程序时LED亮   
sbit IR_Flag = P3^1;  
  
// LED显示口  
#define LED_Port P1  
  
// 用于存放按键码值,初始化为0000 0000这样接受数据时可以只考虑1了   
unsigned char dat[4] = {0,0,0,0};  
  
  
/*............................................................*/  
void main()  
{  
    IR_Out = 1;     // 此口为MCU输入口,故需要置1  
    IR_Flag = 1;    // 灭LED灯  
    TMOD = 0x01;    // 定时器0,方式1  
    IT0 = 1;        // 外部中断0,下降沿触发  
    EX0 = 1;        // 准许外部中断  
    EA = 1;         // CPU准许中断  
  
    while(1)  
    {  
        IR_Flag = 1;// 执行主程序时,LED灯灭  
    }  
}  
/*------------------------------------------------------------*-  
  函数名称:Int0()
  函数输入:无(容许中断时,外部触发)
  函数输出:无
  函数说明:外部中断0中断处理
-*------------------------------------------------------------*/  
void Int0() interrupt 0  
{  
    unsigned char i,j;  
    EX0 = 0;            // 关闭外部中断0  
    IR_Flag = 0;        // 执行中断程序时,LED灯亮  
    i = 10;             // 0.793ms延时,运行10次  
    while( --i )  
    {  
        // 定时0.793ms,延时0.793ms*10=7.93ms  
        TH0 = 0xfc;  
        TL0 = 0xe7;  
        TR0 = 1;  
        while( !TF0 );  
        TF0 = 0;  
        TR0 = 0;  
         
        // 这7.93ms期间只要IR_Out变高电平,就非合法的红外信号,跳出  
        if( IR_Out )  
        {  
            EX0 = 1;    // 准许中断  
            return ;  
        }  
    }  
      
    // 程序进行到这里,表明是合法的红外信号(利用9ms判断)  
    while( !IR_Out );   // 等待9ms低电平过去  
      
    // 程序进行到这里,表明经过9ms低电平  
    TH0 = 0xf6;  
    TL0 = 0xff;  
    TR0 = 1;  
    while( !TF0 );  
    TF0 = 0;  
    TR0 = 0;            // 延时2.305ms  
      
    // IR_Out 为低表明是连发码,不予理睬,跳出  
    if( !IR_Out )  
    {  
        EX0=1;  
        return;  
    }  
  
    // 程序进行到这里,表明是引导码,等待4.5ms高电平的过去  
    while( IR_Out );      
      
    // 开始接收用户码  
    for(i=0; i<4; i++)  
    {  
        for(j=0; j<8; j++)  
        {  
            while( !IR_Out );   // 等待低电平过去  
            dat[i] >>= 1;     // 把上次的数据位右移一位  
  
            TH0 = 0xfc;  
            TL0 = 0xe7;  
            TR0 = 1;  
            while( !TF0 );  
            TR0=0;  
            TF0=0;              //延时0.793ms   
              
            // 若为数据"1",则延时后IR_Out为高电平  
            if( IR_Out )   
            {  
                dat[i] |= 0x80;     // 所有数据位1放最高位  
                while( IR_Out );    // 等待高电平过去  
            }  
        }  
    }     
    LED_Port = dat[2];  
    EX0=1;      // 开中断  
    return;  
}  
/*------------------------------------------------------------*-
  ---- END OF FILE -------------------------------------------
-*------------------------------------------------------------*/

出0入0汤圆

发表于 2013-3-12 10:54:08 | 显示全部楼层
楼主的程序,简洁、工整,没有语法上的错误,应该是可以运行的。

出0入0汤圆

 楼主| 发表于 2013-3-12 18:27:04 | 显示全部楼层
xpxp 发表于 2013-3-12 10:54
楼主的程序,简洁、工整,没有语法上的错误,应该是可以运行的。

呵呵,见笑了,我只是试试代码是不是这么写的
忘记配置IO了,所以没输出,还以为哪里出问题呢

出0入0汤圆

 楼主| 发表于 2013-3-12 18:28:19 | 显示全部楼层
lengshuicha 发表于 2013-3-12 09:28
来一个51的红外线解码列子供参考

------------------------------------------------------------

谢谢,红外已经用捕获方式搞定

出0入0汤圆

发表于 2013-3-12 18:40:26 来自手机 | 显示全部楼层
硬件对不对?

出0入0汤圆

 楼主| 发表于 2013-3-12 18:43:47 | 显示全部楼层
承浩2012 发表于 2013-3-12 18:40
硬件对不对?

对的,已经解决了,呵呵
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 10:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表