[51单片机] 单片机自动复位

[复制链接]
4136|8
 楼主| puppet21 发表于 2013-9-24 15:04 | 显示全部楼层 |阅读模式
写了一段一个单片机发报控制多个单片机的代码,基本功能都实现了,但有一个很奇怪的情况出现:

程序运行到一个特定的时候,P0,P2 口I/O响应后,被控制的单片机系统会出现自动复位的情况,一切数据归初始状态,计时器、变量等等全部回0,请问是不是我的部分代码触发了一些系统地址让它复位了?

简单的测试过后怀疑是这么一段代码出现问题,第一次执行完这段没问题,第二第三次就会出问题。
                 if(controlindex == 1)
                 {
                         i = 0 ;
                         controlindex = 0 ;
                        while((newnode[i] & 0xff)!= 0xff)
                        {
                                if((nownode & 0xff)== (newnode[i]& 0xff)){P0 = nownode;}
                                i++;
                        }
                       
                 }

求大神解答~!!~!感激不尽!
ayb_ice 发表于 2013-9-24 15:25 | 显示全部楼层
代码能有什么问题,否则不可能编译通过

谁知道你的需求是什么
单片机学习123 发表于 2013-9-24 15:47 | 显示全部楼层
详细点
w522930954 发表于 2013-9-24 16:26 | 显示全部楼层
while条件进去后出不来导致看门狗复位?或者指针溢出导致复位?先关狗吧
dirtwillfly 发表于 2013-9-24 17:40 | 显示全部楼层
可能是你没关看门狗
游浪星 发表于 2013-9-24 18:58 | 显示全部楼层
w522930954 发表于 2013-9-24 16:26
while条件进去后出不来导致看门狗复位?或者指针溢出导致复位?先关狗吧

指针溢出??什么意思
21ID 发表于 2013-9-24 21:22 | 显示全部楼层
第二次和第三次出现复位,应该不是看门狗引起的
 楼主| puppet21 发表于 2013-9-25 10:14 | 显示全部楼层
w522930954 发表于 2013-9-24 16:26
while条件进去后出不来导致看门狗复位?或者指针溢出导致复位?先关狗吧

经过一晚上的测试,终于调好了,不是狗的问题,程序很小,不用狗,确实是指针溢出的。控制系统不停发报,子系统不停接收,因为我没有判断停止接收的状态。当超过单片机的内存的时候,系统就自动复位了。原因是知道,不过原理不是很清楚。
w522930954 发表于 2013-9-25 10:26 | 显示全部楼层
puppet21 发表于 2013-9-25 10:14
经过一晚上的测试,终于调好了,不是狗的问题,程序很小,不用狗,确实是指针溢出的。控制系统不停发报, ...

找到发生越界的指针,对其指向的内存进行排查,关键看内存部分的界限。有一些++,或者--多加1或多减咦会直接导致指针越界
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

140

帖子

0

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