程序中运行到延时程序程序就死机了

[复制链接]
2598|21
 楼主| 小小猫咪 发表于 2014-2-16 08:44 | 显示全部楼层 |阅读模式
程序中运行到延时程序,程序就好像死机了,什么反应都没有了
kangzj 发表于 2014-2-16 08:45 | 显示全部楼层
延时程序能进入吗?
 楼主| 小小猫咪 发表于 2014-2-16 08:46 | 显示全部楼层
程序跳出后,不知程序跑到哪里去了,就死机了。软件模拟是没有问题的。
c51写的。
houcs 发表于 2014-2-16 08:46 | 显示全部楼层
程序呢
 楼主| 小小猫咪 发表于 2014-2-16 08:47 | 显示全部楼层
void delayms(unsigned int tt) {
    unsigned int t;                    //   ?                             
     for(;tt>0;tt--)               
       for(t=230;t>0;t--)        //  ?        
         {                                                
          ;
         }     
}
liuzaiy 发表于 2014-2-16 08:47 | 显示全部楼层
unsigned int t;反汇编看看t是什么样的,会不会因为该值是临时变量,由于中断的缘故,该变量的值老是被修改而无法到达0。
 楼主| 小小猫咪 发表于 2014-2-16 08:48 | 显示全部楼层
已经把程序中大部分都删除了,就留一个延时程序了,真正原因还是没找到啊!
yinxiangh 发表于 2014-2-16 08:48 | 显示全部楼层
可以用char的要用int。
pangb 发表于 2014-2-16 08:49 | 显示全部楼层
考虑狗、中断、和函数重入、堆栈溢出的问题。
chenjunt 发表于 2014-2-16 08:49 | 显示全部楼层
加入:NOP NOP试试。
zyf部长 发表于 2014-2-16 08:50 | 显示全部楼层
可以肯定地说,这个函数没问题
zyf部长 发表于 2014-2-16 08:50 | 显示全部楼层
问题出在其他地方。
 楼主| 小小猫咪 发表于 2014-2-16 08:51 | 显示全部楼层
void delayms(unsigned int tt) {
    unsigned int t;                    //   ?                             
     for(;tt>0;tt--)
{               //少一个
        for(t=230;t>0;t--)        //  ?        
         {                                                
          ;
         }     
}//少一个

}

评论

这个{}可以不要,虽然可读性变差,但语法上没问题。  发表于 2014-2-16 21:08
kangzj 发表于 2014-2-16 08:51 | 显示全部楼层
我觉得问题会不会出现在你调用延时函数主调函数和你定义变量tt这里,把程序在好好检查一下
 楼主| 小小猫咪 发表于 2014-2-16 08:52 | 显示全部楼层
好的,我再看看
houcs 发表于 2014-2-16 08:52 | 显示全部楼层
可以对程序中的函数单步运行看看,看会出现情况
morrisk 发表于 2014-2-16 08:53 | 显示全部楼层
我觉得问题可能在你的变量名上,t和tt稍微不注意会混乱
morrisk 发表于 2014-2-16 08:53 | 显示全部楼层
改个变量名试试吧~ 程序没有问题~
 楼主| 小小猫咪 发表于 2014-2-16 08:54 | 显示全部楼层
houcs 发表于 2014-2-16 08:52
可以对程序中的函数单步运行看看,看会出现情况


看过了
 楼主| 小小猫咪 发表于 2014-2-16 08:55 | 显示全部楼层
先结贴了,谢谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

313

主题

3014

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部