单片机莫名其妙复位

[复制链接]
chlylove 发表于 2010-5-27 17:13 | 显示全部楼层
我的意思是 MAIN()里最好是设置一个主循环,还要在C程序里最好不要去设置SP的置,这不是汇编,这只是PROC结构方面的事,对于程序出现的问题,如果会使用KEIL软件的话,到里面去调试,查看单片机每一个有关方面的RAM里的数据,找出问题所在。
ningling_21 发表于 2010-5-27 18:41 | 显示全部楼层
32# gx_huang

事实证明,有时候是要的...
alpha321 发表于 2010-5-27 21:42 | 显示全部楼层
16楼"基本程序架构"是不错的, 按这个思路整理一下你的程序, 应该不会有问题.
初学编程, 特别要注意程序结构要清晰, 另外上传时顺便写一点编程思路或功能说明,
各位大侠虽古道热肠, 可也不能花时间在一堆凌乱的代码中埋头梳理啊, 请多理解.
另外, 可以看看STC单片机本身的特性是否有应用上的问题.
题外话有点多, 请楼主原谅.
xlsbz 发表于 2010-5-27 21:46 | 显示全部楼层
不加wihel 不行啊

不加就会 继续跑 一直跑到不确定的位置

再跑回来

你看看反汇编就知道了

那个圈圈在这个论坛发了个这方面的帖子 让我佩服的不得了
lovetan 发表于 2010-5-28 09:59 | 显示全部楼层
应该是sp的问题.
ddtx 发表于 2010-5-28 12:50 | 显示全部楼层
是呀,没有一个死循环,单片机执行完了就要复位,很正常
haidong2732 发表于 2010-5-28 16:53 | 显示全部楼层
首先,你的程序要在while(1)中循环执行。其次,你做的应该是小车吧,如果你的程序没问题,多半是驱动电机运转时,引入了干扰信号导致电源不稳定,或干扰信号直接进入单片机内,引起复位,不知道你的硬件电路是否有去干扰措施?最好将单片机供电和电机供电隔离。
miracly 发表于 2010-5-28 20:48 | 显示全部楼层
while(1)
{

}
在哪里?
一点一点的屏蔽吧。
还有,上来给sp赋值?C51仿佛不用这样子。

看看是不是有函数递归调用了。
pangjiang 发表于 2010-6-1 09:02 | 显示全部楼层
看看是不是看门狗打开了?我用AVR时也碰到过类似奇怪的事情,不过那个好像是硬件原因造成的,当时用的电源芯片电流比较小,后来换了个大的就好了,估计是启动时消耗电流过大,造成电源芯片拉低引起复位
pangjiang 发表于 2010-6-1 09:03 | 显示全部楼层
程序也是在执行到延时程序出的问题,如果跳过延时程序就不会有问题,后来把延时程序改短也可以
jsjdhuangwei 发表于 2010-6-2 10:03 | 显示全部楼层
我也遇到一个相似的问题,一个函数接受外部信号后才动作,但是调试的时候,老接受不到外部信号,你说程序会咋办...汇编的时候你会看到这个又跳到主循环的开始处。。
pangjiang 发表于 2010-6-2 20:11 | 显示全部楼层
有可能是你中断开了,但没有中断入口函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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