滚印车间
您当前的位置:贴片加工 > 基础知识

因为一条语句整个单片机不运行了。。。

时间:2020-10-24 06:05:05  来源:  浏览量:
就因为一条赋值语句(标记那条),整个单片机就不运行了。。。下面是我的主程序
void main()
{
    read_9byte_eeprom(0,0);
    delay(300);
    TT=D1;
    PP=D2*100000+D3*10000+D4*1000+D5*100+D6*10+D7;


    EA=1;                                     //打开中断总开关
    EX0=0;                                     //允许外部中断0
    EX1=1;                                     //允许外部中断1
    IT0=1;                                     //外部中断0采用下降沿触发
    IT1=1;                                     //外部中断1采用下降沿触发
    ET0=1;                                     //允许定时器0中断
    ET1=1;                                     //允许定时器1中断
    PT0=1;                                     //定时器0设置为最高优先级
    TMOD=0x11;                                 //设置定时器0和1为工作方式1

    timer0=0;
    Timer1=0;
    buzzer=1;
    count=1;

    lcd_init();
    while(1)
    {
      Timer1=0;
      bmp180_convert();
      deplay_and_save();
      buzzer=1;
      if((Temperature>(TT*10))|(Pressure>PP)) buzzer=0;
      EX0=1;
      EX1=1;   
      TR1=1;
      while(Timer1<100);
      TR1=0;
      EX1=0;
      EX0=0;
    }  
}
就是标记的那条语句。编译没有错误,能生成hex文件,也可以下载进单片机,但单片机就不运行,没有反应。如果把这条语句注释掉,单片机又能正常运行。。。。。我实在搞不懂。我用的是stc89C52RC


是不是数据类型不对,超出数据类型的数值范围了,试试把PP定义成float


你的PP这个参数是用来干嘛的?


人中狼 发表于 2017-5-4 21:58
是不是数据类型不对,超出数据类型的数值范围了,试试把PP定义成float

人中狼 发表于 2017-5-4 21:58
是不是数据类型不对,超出数据类型的数值范围了,试试把PP定义成float

人中狼 发表于 2017-5-4 21:58
是不是数据类型不对,超出数据类型的数值范围了,试试把PP定义成float

液晶能初始化吗,编译只是按编译规则检查而已,逻辑错误或数据类型等错误是查不出来的,现在需要判断单片机是不运行,还是PP这个数据无效了


人中狼 发表于 2017-5-4 22:17
液晶能初始化吗,编译只是按编译规则检查而已,逻辑错误或数据类型等错误是查不出来的,现在需要判断单片机是不运行,还是PP这个数据无效了

人中狼 发表于 2017-5-4 22:17
液晶能初始化吗,编译只是按编译规则检查而已,逻辑错误或数据类型等错误是查不出来的,现在需要判断单片机是不运行,还是PP这个数据无效了

试试把这段read_9byte_eeprom(0,0);
    delay(300);
    TT=D1;
    PP=D2*100000+D3*10000+D4*1000+D5*100+D6*10+D7;
移到液晶初始化之后


人中狼 发表于 2017-5-4 22:40
试试把这段read_9byte_eeprom(0,0);
    delay(300);
    TT=D1;

目前解决了。我猜应该是代码量超了的原因。我修改了不少非必要的全局变量,剪短了几十行代码,现在运行正常了


CT0618 发表于 2017-5-5 11:38
目前解决了。我猜应该是代码量超了的原因。我修改了不少非必要的全局变量,剪短了几十行代码,现在运行正常了

这肯定是超出了单片机的RAM大小,导致程序跑飞了


程序跑飞了,我之前也碰到过类似的  不过那个是小数运算  A=455/10.0*5,使用的是STC15系列的芯片,程序卡这里。


学习学习0.0,小白在此记笔记了


学习一下,观望


这个PP是你宏定义的一个参数,程序里有它的相关计算 应该是这个参数不对了 所以无法正常运行


就是代码量超出了


就是代码量超出了

  • 关于uc3842推挽输出的电压问题uc3842的六脚输出是一个推挽输出,7脚vcc要接16v以上的电压,但是有些mos管Vgs电压为正负20v,推挽输出的方波驱动信号可能会超过20v,这样岂不是很容烧坏管子?有没有什么更好的设计

  • 推荐资讯
    相关文章
    栏目更新
    栏目热门
    关于我们
    电脑周边
    家用电器
    通讯
    地区
    新闻中心
    深圳贴片加工厂
     
    • ☆电源板
    • ☆U盘
    • ☆网卡
    • ☆显卡
    • ☆监控摄像头
    • ☆电脑主板
    • ☆平板电脑主板
    • ☆DVD主板
    • 解码板
    • 伺服板
    • 高频头板
    • 复读机板
    • 音响主板
    • ☆手机主板
    • ☆手机按键板
    • ☆无线电话机
    • ☆对讲机主板
    • ☆深圳
    • 东莞
    • 广州
    • 龙岗
    • 宝安
    • 龙华
    • 坂田