怎样避免单片机死机?

刚刚做了一个程序,C语言写的,测试时有时会死机,但是同一个项目,另一个人用的是汇编做的,测试时会受到一点干扰,但绝对不会死机。最后虽然把硬件干扰排除了,能正常工作了,也不会死机。但还是不放心。在网上查了查,有的说是触发了中断进入了死循环,还有可以做软件陷阱,能不能详细解释一下,怎样才能使单片机不死机呢?
想过看门狗,但效果不是太行。

单片机会不会死机与编程语言没有什么关系吧。死机通常是受干扰程序跑飞了,常用防死机的方法是使用看门狗,好多单片机都内置了看门狗,只要在主程序初始化时启动它,在主循环中加上喂狗指令,一旦死机,看门狗会在一到两秒内复位单片机。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-01
建议把一些不用的中断都关掉,不用的端口也关掉,像SPI、串口什么的,尽量不要使用 go to 语句。我感觉是你做的程序是不是有bug,可否传上代码,一起分析分析。追问

程序太长了,里面确实使用了goto语句,程序的功能主要是配料,要求有暂停功能,暂停回来配料比例还不能变,没有什么更好的算法使程序暂停,只能使用goto,不知道您有没有好的算法,让程序具有暂停功能,我也怀疑是goto语句跳转出错使单片机死机了。

追答

不知道你这个“暂停功能”是什么意思,听说,goto语句,可以用do ,while 语句代替,但我从来没用过。让程序暂停我认为比较简单方法是,用while 语句参考如下:
*********************
BF=1;
while(BF)
{
//////////////
当想让程序继续运行时,可让,BF=0;
例如某个按键动作了,键盘服务程序里使BF=0;则跳出这个循环了,继续执行下边的代码
///////////
}
********************
建议楼主在做程序时,主程序在一个大循环里跑,里边可以加一些小循环。
我也是菜鸟级别,希望能帮到你。

本回答被提问者采纳
第2个回答  2011-03-01
这和c 或者汇编没关系 c写出来也是要翻译成汇编才工作的 死机可能是你的软件有死循环 或者硬件上有触发中断的连接 可能是某种短路或者外界干扰没有做好屏蔽 请仔细检查一下 我感觉硬件的可能更大 像8位机这样的东西作为工业控制用 不是人为错误不会出现死机 他和咱们pc用的复杂指令芯片不是一个概念 除非你把它放到极端的条件下比如超高温等等 一般不会出现 用看门狗做个预防吧 很多单片机都集成的 比如stc系列的 很好用也便宜
第3个回答  2011-03-01
应该是程序的问题,标准C语言本身就有不少缺陷,使用不当就会导致死机等问题出现。可以的话,你将代码贴出来,让大家帮你分析。
第4个回答  2011-02-28
启动看门狗,死机后会自动复位

若要防止单片机死机,可借助哪个寄存器?
6. 堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。

怎样避免单片机死机?
单片机会不会死机与编程语言没有什么关系吧。死机通常是受干扰程序跑飞了,常用防死机的方法是使用看门狗,好多单片机都内置了看门狗,只要在主程序初始化时启动它,在主循环中加上喂狗指令,一旦死机,看门狗会在一到两秒内复位单片机。

请教各位大侠,关于单片机长时间运行死机的问题
解决方法:对于①,采用晶体振荡器(就是晶振,金属外壳那种,记得匹配好旁路电容)。对于②,更换工业性能稳定的单片机品牌。对于③,硬件设计考虑多点环境干扰,这对硬件工程师要求比较高,不是毕业生或工作经验一年两年的人能做的。必须有相关行业经验的工程师,不然就是工作10年8年也没这能力。(更换工...

求助:单片机可能受到强电干扰经常死机,怎么办
2、单片机用金属外壳封闭,外壳可靠接地;

stc单片机易死机吗
是。内部时钟非常不稳定,容易造成单片机死机,解决方案: 下载程序的时候,选择外部时钟。就能完美解决死机的问题。

外部干扰过大导致单片机死机
这方面我有比较丰富的项目经验。内部看门狗的确可以解决常规的死机现象。但是如果外部干扰过大,导致单片机的晶振停止振荡,内部看门狗同样会停止动作。最好的解决方法就是外接看门狗芯片。给你推荐一个MAX813L,便宜,简单。肯定没有问题。

单片机接上舵机就死机
单片机接上舵机就死机解决如下:1、检查电路连接是否正确且紧固,特别是舵机的电源和控制信号线是否接到正确的引脚。2、确认使用的电源稳压芯片或模块支持足够的输出电流,并且电源电压符合单片机和舵机的电气参数范围。3、编写正确的程序逻辑,检查代码是否有死循环或者其他异常情况,导致程序无法正常执行。4、...

为何单片机会突然死机?
为了预防和解决单片机突然死机的问题,可以采取以下措施:1. 定期进行硬件和软件的检查和维护,确保硬件和软件的稳定性。2. 合理设计程序和算法,避免过度使用或不当使用MCU。3. 确保MCU所处的环境符合其要求,避免环境因素对其造成影响。4. 使用可靠的工具和软件进行开发、测试和调试,避免出现软件问题导致...

51单片机系统每隔一段时间失效,重启又正常疑问
电磁干扰单片机,使之死机。好几种,建议全部用上最保险。1,开关闭合后,触发继电器吸合,改为,开关闭合后延时500ms然后再出发继电器,这时为了解除电磁铁吸合后干扰信号导致单片机误动作。2,P2.0到三机关之间加装光耦,防止继电器吸合断开打火干扰;3,继电器到电磁铁处加装固态继电器,彻底隔绝电磁铁吸合...

单片机的程序为什么老是死机?
单片机程序死机可能由多种原因引起,包括但不限于:软件bug:程序中存在逻辑错误或者未处理的异常情况,导致程序执行异常而死机。资源竞争:多个任务或中断同时竞争相同的资源,导致死锁或资源无法释放,从而导致死机。堆栈溢出:程序使用的堆栈空间不足以存储函数调用过程中的局部变量和返回地址,导致堆栈溢出而...

相似回答