为什么运行到延时程序就死机?

[复制链接]
3985|18
 楼主| c555 发表于 2010-7-20 12:42 | 显示全部楼层 |阅读模式
本帖最后由 救火车 于 2010-7-21 09:48 编辑

        我写的程序运行语句可以,但就是不运行延时程序,程序中运行到延时程序,程序就好像死机了,什么反应都没有了。原来是用stc12系列的,改成stc11系列的,就出这问题了。有没有遇到类似问题的?
hgjinwei 发表于 2010-7-20 12:44 | 显示全部楼层
 楼主| c555 发表于 2010-7-20 12:58 | 显示全部楼层
进一步测试,延时程序能进入,就是程序跳出后,不知程序跑到哪里去了,就死机了。软件模拟是没有问题的。
c51写的。
yewuyi 发表于 2010-7-20 13:34 | 显示全部楼层
        我写的程序运行语句可以,但就是不运行延时程序,程序中运行到延时程序,程序就好像死机了,什么反应都没有了。原来是用stc12系列的,改成stc11系列的,就出这问题了。有没有遇到类似问题的? ...
c555 发表于 2010-7-20 12:42


因为写了太多的错别字!
 楼主| c555 发表于 2010-7-20 14:31 | 显示全部楼层
void delayms(unsigned int tt) {
    unsigned int t;                    //   ?                             
    for(;tt>0;tt--)               
       for(t=230;t>0;t--)        //  ?       
        {                                                 
          ;
        }     
}
:dizzy:直接晕了,这就是那个延时函数,在另一个单片机用的好好的。这里就不行了。我将打  “?”  的两条语句去了就能运行了,难道for程序不能嵌套?
lost1421 发表于 2010-7-20 14:47 | 显示全部楼层
unsigned int t;反汇编看看t是什么样的,会不会因为该值是临时变量,由于中断的缘故,该变量的值老是被修改而无法到达0。
 楼主| c555 发表于 2010-7-20 15:05 | 显示全部楼层
:(已经把程序中大部分都删除了,就留一个延时程序了,真正原因还是没找到啊!这么个小问题,折腾一天了。
宇容创行 发表于 2010-7-20 15:12 | 显示全部楼层
有狗吗?
jweiok 发表于 2010-7-20 15:29 | 显示全部楼层
建议看下网上别人怎么写的延时程序,你这个的看着别扭
cubasa 发表于 2010-7-20 16:34 | 显示全部楼层
楼主不知道节约啊,可以用char的要用int。
这种情况下只有看反汇编了。
如果有条件,可以把关键值通过串口上传到PC中看看。
NE5532 发表于 2010-7-20 16:36 | 显示全部楼层
考虑狗、中断、和函数重入、堆栈溢出的问题。
lyn3210 发表于 2010-7-20 17:08 | 显示全部楼层
加入:NOP NOP试试。
原野之狼 发表于 2010-7-20 17:14 | 显示全部楼层
多半是狗的问题 只是楼主做事不严谨 连标题都写错别字 看着别扭
sinanjj 发表于 2010-7-20 17:46 | 显示全部楼层
我第一反应是卫生巾****
mohanwei 发表于 2010-7-20 19:04 | 显示全部楼层
基本就是看门狗没设好
szshawn2010 发表于 2010-7-21 07:26 | 显示全部楼层
看一下,这两款芯片的堆栈级 是不是一样多的。如果工作OK的芯片堆栈比工作不OK的多,即是堆栈出混乱
cubasa 发表于 2010-7-21 09:29 | 显示全部楼层
……他说风雨中这些痛算什么,擦干泪,不要问“卫生”么?
seabada 发表于 2010-7-21 13:06 | 显示全部楼层
没有遇见过这种情况啊
一棵小草 发表于 2010-7-21 13:33 | 显示全部楼层
呵呵,LZ应该不适合写程序,因为不严谨,没耐心。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

264

主题

556

帖子

3

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