打印

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

[复制链接]
3292|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c555|  楼主 | 2010-7-20 12:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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


因为写了太多的错别字!

使用特权

评论回复
5
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程序不能嵌套?

使用特权

评论回复
6
lost1421| | 2010-7-20 14:47 | 只看该作者
unsigned int t;反汇编看看t是什么样的,会不会因为该值是临时变量,由于中断的缘故,该变量的值老是被修改而无法到达0。

使用特权

评论回复
7
c555|  楼主 | 2010-7-20 15:05 | 只看该作者
:(已经把程序中大部分都删除了,就留一个延时程序了,真正原因还是没找到啊!这么个小问题,折腾一天了。

使用特权

评论回复
8
宇容创行| | 2010-7-20 15:12 | 只看该作者
有狗吗?

使用特权

评论回复
9
jweiok| | 2010-7-20 15:29 | 只看该作者
建议看下网上别人怎么写的延时程序,你这个的看着别扭

使用特权

评论回复
10
cubasa| | 2010-7-20 16:34 | 只看该作者
楼主不知道节约啊,可以用char的要用int。
这种情况下只有看反汇编了。
如果有条件,可以把关键值通过串口上传到PC中看看。

使用特权

评论回复
11
NE5532| | 2010-7-20 16:36 | 只看该作者
考虑狗、中断、和函数重入、堆栈溢出的问题。

使用特权

评论回复
12
lyn3210| | 2010-7-20 17:08 | 只看该作者
加入:NOP NOP试试。

使用特权

评论回复
13
原野之狼| | 2010-7-20 17:14 | 只看该作者
多半是狗的问题 只是楼主做事不严谨 连标题都写错别字 看着别扭

使用特权

评论回复
14
sinanjj| | 2010-7-20 17:46 | 只看该作者
我第一反应是卫生巾****

使用特权

评论回复
15
mohanwei| | 2010-7-20 19:04 | 只看该作者
基本就是看门狗没设好

使用特权

评论回复
16
szshawn2010| | 2010-7-21 07:26 | 只看该作者
看一下,这两款芯片的堆栈级 是不是一样多的。如果工作OK的芯片堆栈比工作不OK的多,即是堆栈出混乱

使用特权

评论回复
17
cubasa| | 2010-7-21 09:29 | 只看该作者
……他说风雨中这些痛算什么,擦干泪,不要问“卫生”么?

使用特权

评论回复
18
seabada| | 2010-7-21 13:06 | 只看该作者
没有遇见过这种情况啊

使用特权

评论回复
19
一棵小草| | 2010-7-21 13:33 | 只看该作者
呵呵,LZ应该不适合写程序,因为不严谨,没耐心。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

264

主题

556

帖子

3

粉丝