软件,很多书都讲了,只是没有扩展来讲。
一般的,写程序的同志把功能完成了。就觉得万事大吉了。
很少考虑软件抗干扰的问题。
设计上,只要添加适当代码,就能解决大部分死机问题。
先明白一个问题:干扰到底干扰到单片机什么东西,那就是寄存器,特别是PC寄存器。
那么在程序中就要时时刷新 寄存器,特别是输出寄存器。
举例:(emc 单片机为例子) org 0 mov a,@25 mov 0x20,a clr 0x21 ;;;;;;;;;;;;;; s1 : inc 0x21 mov a,0x20 sub a,0x21 jbs 3,2 jmp s11 jmp s22;;;
s11: jmp s1
s22: clr 0x21 6,2端口取反,输出一个波形 jmp s1 ;;;;;;;;;;;;;;;;;;;; 该程序就有个问题,干扰后,0x20寄存器如果被干扰变成其他值后,6,2的频率就变了
以下的办法就不会了,但大家都习惯第一种,(称为初始化) ;;;;;;;;;;;;;;;;;;;;;;; org 0 ; mov a,@25 ; mov 0x20,a clr 0x21 ;;;;;;;;;;;;;; s1 : mov a,@25 mov 0x20,a inc 0x21 mov a,0x20 sub a,0x21 jbs 3,2 jmp s11 jmp s22;;;
s11: jmp s1
s22: clr 0x21 6,2端口取反,输出一个波形 jmp s1
虽然很简单,但我就测试到一程序就是按我说的第一种办法写的
|