单片机软件三重监视抗干扰技术
2 T1中断服务程序监视过程设计
T1中断服务程序在完成特定测控功能的同时,还要监视主程序的运行状态。在中断服务程序中设置一个主程序运行计时器M1,T1每中断一次,M便自行加1。M中的数值与T1定时溢出时间之积表示时间值。若由M表示的时间值大于主程序的运行时间,说明主程序因干扰而陷入了“死循环”,T1中断服务程序便修改断点地址,返回0000H,进行出错处理。若M不大于主程序运行时间,说明主程序运行正常,中断服务程序也正常返回。M单元在系统主程序运行中循环清“0”。
设单片机晶振频率为6MHz,T1以工作方式1产生2ms的定时中断,则T1的计数初值为:
(216-N)×2×10-6=2×10-3
N=64536D=FC18H
主程序的最大循环时间为200ms,T取值应不小于64H,可取68H。A1为T1中断程序运行状态监测单元,取内RAM 31H单元,M仍取50H单元,60H、61H为暂存单元,则T1中断监视程序如下:
PUSH PSW ;保护现场
PUSH ACC
MOV TH1, #0FCH ;T1置初值
MOV TL1, #18H
INC 31H ;A1单元加1
INC 50H ;M单元加1
CLR C
MOV A,#68H
SUBB A,50H ;T≥M?
JC loop
… ;中断测控程序
POP ACC ;恢复现场
POP PSW
RETI ;返回
loop:POP ACC ;恢复现场
POP PSW
POP 60H ;原断点弹出
POP 61H
MOV 60H,#00H ;断点修改为0000H
MOV 61H,#00H
PUSH 60H
PUSH 61H
RETI ;返回
评论