苦行僧 发表于 2013-3-8 15:23:09

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

学单片机的时候是51入门,
现在已经N些年没碰过51了,一直在用stm32
现在突然要用51,STC12LE2052,都不知道怎么写程序了
首先因为Keil里面没有宏晶的片子,所以不知道要选哪个型号代替
我选了89C51,简单代码如下:

#include <reg51.h>

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

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

tim 发表于 2013-3-8 15:25:13

彻底败给楼主了,都不知道怎么说了 {:titter:}

苦行僧 发表于 2013-3-8 15:26:34

tim 发表于 2013-3-8 15:25 static/image/common/back.gif
彻底败给楼主了,都不知道怎么说了

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

wkman 发表于 2013-3-8 15:38:47

快憋死{:sweat:}{:sweat:}{:sweat:}

tim 发表于 2013-3-8 15:41:16

老妖的网站上有头文件

adamwin2011 发表于 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

wikicd 发表于 2013-3-8 15:43:51

呵呵,这种事情很正常。找个建好的工程吧,网上应该一大把。

yirenonege 发表于 2013-3-8 15:52:25

不是用串口下载程序么,你的ISP是这个么

苦行僧 发表于 2013-3-8 15:57:20

adamwin2011 发表于 2013-3-8 15:42 static/image/common/back.gif
LZ,我能说你基础不牢实吗
……………………………………
1、没有STC12LE2052能用其他型号代替?寄存器一样 ...

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

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

苦行僧 发表于 2013-3-8 15:58:08

wikicd 发表于 2013-3-8 15:43 static/image/common/back.gif
呵呵,这种事情很正常。找个建好的工程吧,网上应该一大把。

嗯,是串口的{:lol:}

苦行僧 发表于 2013-3-8 16:01:32

wikicd 发表于 2013-3-8 15:43 static/image/common/back.gif
呵呵,这种事情很正常。找个建好的工程吧,网上应该一大把。

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

苦行僧 发表于 2013-3-8 16:06:02

tim 发表于 2013-3-8 15:41 static/image/common/back.gif
老妖的网站上有头文件

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

adamwin2011 发表于 2013-3-8 16:06:56

苦行僧 发表于 2013-3-8 15:57 static/image/common/back.gif
嗯,基础确实不牢
1、大部分寄存器一样的,有一些功能寄存器可以从2052的头文件里找到,自己定义
2、这个 ...

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

wikicd 发表于 2013-3-8 16:06:59

苦行僧 发表于 2013-3-8 16:01 static/image/common/back.gif
兄弟能给一个我看一眼吗,网上我真心没找到
谢谢了

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

苦行僧 发表于 2013-3-8 16:23:20

adamwin2011 发表于 2013-3-8 16:06 static/image/common/back.gif
坛子里找的:
http://www.amobbs.com/thread-4374614-1-1.html

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

草芥风中散 发表于 2013-3-8 16:39:35

STC的新下载软件有很多东西可值得撸主看的!

czzhouyun 发表于 2013-3-8 16:44:07

看了LZ的程序偶惊呆了,你让单片机什么都不干,它怎么会有反应呢

苦行僧 发表于 2013-3-8 17:36:17

czzhouyun 发表于 2013-3-8 16:44 static/image/common/back.gif
看了LZ的程序偶惊呆了,你让单片机什么都不干,它怎么会有反应呢

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

zhujinliang2124 发表于 2013-3-8 17:51:57

我没看出什么问题来

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

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

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

jz701209李 发表于 2013-3-8 20:42:46

路过.学习一下

苦行僧 发表于 2013-3-8 20:43:59

zhujinliang2124 发表于 2013-3-8 17:51 static/image/common/back.gif
我没看出什么问题来

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


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

vc8fans 发表于 2013-3-9 11:06:17

老师傅碰到新问题,

qq635274216 发表于 2013-3-12 09:08:15

我也遇到了,折腾了很久,发现没有把C文件加入工程!!!!!

lengshuicha 发表于 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 = {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 >>= 1;   // 把上次的数据位右移一位

            TH0 = 0xfc;
            TL0 = 0xe7;
            TR0 = 1;
            while( !TF0 );
            TR0=0;
            TF0=0;            //延时0.793ms   
            
            // 若为数据"1",则延时后IR_Out为高电平
            if( IR_Out )   
            {
                dat |= 0x80;   // 所有数据位1放最高位
                while( IR_Out );    // 等待高电平过去
            }
      }
    }   
    LED_Port = dat;
    EX0=1;      // 开中断
    return;
}
/*------------------------------------------------------------*-
---- END OF FILE -------------------------------------------
-*------------------------------------------------------------*/

xpxp 发表于 2013-3-12 10:54:08

楼主的程序,简洁、工整,没有语法上的错误,应该是可以运行的。

苦行僧 发表于 2013-3-12 18:27:04

xpxp 发表于 2013-3-12 10:54 static/image/common/back.gif
楼主的程序,简洁、工整,没有语法上的错误,应该是可以运行的。

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

苦行僧 发表于 2013-3-12 18:28:19

lengshuicha 发表于 2013-3-12 09:28 static/image/common/back.gif
来一个51的红外线解码列子供参考

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


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

承浩2012 发表于 2013-3-12 18:40:26

硬件对不对?

苦行僧 发表于 2013-3-12 18:43:47

承浩2012 发表于 2013-3-12 18:40 static/image/common/back.gif
硬件对不对?

对的,已经解决了,呵呵
页: [1]
查看完整版本: 彻底败给51了,程序都不知道怎么写了