51单片机软件三重监视抗干扰技术
MOV 60H,#00H ;断点修改为0000H
MOV 61H,#00H
PUSH 60H
PUSH 61H
RETI ;返回
3 T0中断服务程序监视过程设计
T0中断的功能是监视T1中断服务程序的运行状态。由于T0中断服务程序较短,因干扰而引起的“死循环”的几率很小,重点考虑中断关闭故障。A1、B1为T1中断运行状态观测单元。A1的初值为00H,T1每中断一次,A1便加1,T0中断服务程序中若检测到A1>0,说明T1中断正常;若A1=0,则B1单元加1(B1的初值为00H),若B1的累加值大于Q,说明T1中断失效,失效时间为T0定时溢出时间与Q值之积。例如:T0的定时溢出时间为4ms,T1的定时溢出时间为2 ms,当Q=5时,说明允许T1的失效时间为20 ms,在这样长的时间内,T1并没有发生中断,说明T1中断发生了故障。由于T0中断级别高于T1中断级别,所以T1的任何故障(如死循环、中断关闭)都会由T0检测出来。T0中断服务程序一般很短,发生“死循环”的几率很小。
设单片机晶振频率为6MHz,T0以工作方式1产生4 ms的定时中断,则T0的计数初值为:
(216-N)×2×10-6=4×10-3
N=63536D=F830H
设计数单元A0、A1、B1分别为内RAM 30H、31H、32H,Q=5,60H、61H为暂存单元,则T0中断监视程序如下:
PUSH PSW ;保护现场
PUSH ACC
MOV TH0,#0F8H ;设T0初值
MOV TL0,#30H
INC 30H ;A0加1
MOV A,31H ;A1单元判0
JZ loop1
CLR A ;清A1、B1单元
MOV 31H,A
MOV 32H,A
loop0:POP ACC ;恢复现场
POP PSW
RETI ;返回
loop1:INC 32H ;B1加1
CLR C
MOV A ,32H;B1≥Q?
SUBB A,#05H
JC loop0
POP ACC ;恢复现场
POP PSW
POP 60H ;原断点弹出
POP 61H
MOV 60H,#00H ;修改断点0000H
MOV 61H,#00H
PUSH 60H
PUSH 61H
RETI
当系统受到干扰后,主程序可能发生“死循环”,中断服务程序也可能陷入“死循环”,或因中断方式字的破坏而关闭中断。主程序的“死循环”可由T1中断服务程序监视;T1中断服务程序的“死循环”和中断关闭故障由T0中断服务程序监视;T0的中断故障可由主程序监视。由于采取了三重软件监测方法,大大提高了系统运行的可靠性。
评论