设A0、E0、M计数单元分别为内RAM中的30H、40H和50H单元,监视程序如下:
5@'OL'@ v2F0O1电子园51单片机学习网aTkG"V]~ f }0iloop1:MOV 50H, #00H; 清M单元电子园51单片机学习网:o7[9S-vu M2d
电子园51单片机学习网 i%mSOA+}:?#FMOV 40H, 30H ;暂存A0单元
H0UE,SXPL1Q"v&US'x;|v*Tq Bj1 …; 测控功能模块
t.~7_c;v;w7G1y~Ar2hRE!@pa$J1 CLR C电子园51单片机学习网p Z0~E(e&X/^1P
电子园51单片机学习网8F+dKZ],D)r&dMOV A, 30H
+B/A?%J H1P/U1Wj t;Z^%IN1 SUBB A, 40H; 判断A0变化
.L6lFpa(j1电子园51单片机学习网dQE5fD#hg7r|JZ loop电子园51单片机学习网 ?5l*sf Kg d0i
电子园51单片机学习网%`1@ Zg2JwUSMOV 30H, #00H
JeM8K{O[8T1p$K$b5]7cBJ1 LJMP loop1
(hPE q7V#eIs;N15ij?}su E)B(f+U1 loop:LJMP 0000H电子园51单片机学习网2R,WX-u @
电子园51单片机学习网U7VcmL'g_M-k
2 T1中断服务程序监视过程设计
dD'y)Bb+{@1 T1中断程序流程如图2—1所示。T1中断服务程序在完成特定测控功能的同时,还要监视主程序的运行状态。在中断服务程序中设置一个主程序运行计时器M1,T1每中断一次,M便自行加1。M中的数值与T1定时溢出时间之积表示时间值。若由M表示的时间值大于主程序的运行时间,说明主程序因干扰而陷入了“死循环”,T1中断服务程序便修改断点地址,返回0000H,进行出错处理。若M不大于主程序运行时间,说明主程序运行正常,中断服务程序也正常返回。M单元在系统主程序运行中循环清“0”。
(216-N)×2×10-6=2×10-3电子园51单片机学习网vqDb6p1H)x \,n^5K
N=64536D=FC18H电子园51单片机学习网0z5h2Q%Y(y8C}
H'U LC`:?pR1电子园51单片机学习网eL!]N`E\)`/`
若图1—1中主程序的最大循环时间为200ms,则图2—1中的T取值应不小于64H,可取68H。A1为T1中断程序运行状态监测单元,取内RAM 31H单元,M仍取50H单元,60H、61H为暂存单元,则T1中断监视程序如下: 电子园51单片机学习网n'{L7sk _ T^ z/_
.HN ~ c/pI1 PUSH PSW ;保护现场
8{,{7k"SL1$i OL3_eX1 PUSH ACC
+g@zu f2i2W A1电子园51单片机学习网3Y/~z^IMOV TH1, #0FCH ;T1置初值电子园51单片机学习网 ?)\)y~Z8f;~ O
)dn)T1~9ay ^G&n;v1 MOV TL1, #18H电子园51单片机学习网,L6M:l'JP`9D
电子园51单片机学习网-m&dW/A |w4U/c,Pn/D*LINC 31H ;A1单元加1
3bI']4lz_;h Ko1D7XXK ?c`"C1 INC 50H ;M单元加1电子园51单片机学习网M)Dt7Hqt8C
电子园51单片机学习网;Y+x(|T,u"}.}@9oCLR C电子园51单片机学习网[O%_QFy~1Y2?;@
[ ]9o8Vdoc1 MOV A,#68H
p#q"H7\4P2b VZT&g3q10S5_"{*\1F8l{1 SUBB A,50H ;T≥M?
,c5VvUe6?1电子园51单片机学习网-E\vh DZ&qJC loop
Bc:ZZ&z1gb6sa1oz9STiW*} kWt1 … ;中断测控程序
7sIq _3L&b1电子园51单片机学习网6I*V4VH*D'YQUuPOP ACC ;恢复现场电子园51单片机学习网qs T;Q0T]J2|:d
电子园51单片机学习网N"{y R YM{YAZPOP PSW
#Z ~~-A qX ?n1$OUk-XWm.U2?1 RETI ;返回
;ESsPz'ET4G e1电子园51单片机学习网uG;lh'Y%k8Tloop:POP ACC ;恢复现场
/UU1Vl FYl._3M1QK\~/be1 POP PSW
,C,| f_5Ml&Rn5B'^1Z"Go%RWVu$P1 POP 60H ;原断点弹出
$\^%T k~o#u M18[ o1{Z_H1CH|#P1 POP 61H电子园51单片机学习网$RNfJ6fZ;f7E}
f+^?-?"og Pna5[1 MOV 60H,#00H ;断点修改为0000H电子园51单片机学习网U:E#rf.u"fw(e
Nn,RK6s6J;p C d1 MOV 61H,#00H
+~[.D9U~1_}1电子园51单片机学习网9eFg9p/c^#{oPUSH 60H
!NvEd@j1电子园51单片机学习网l V [(pRL VMPUSH 61H
YT|X9\CQ!M%C1电子园51单片机学习网?zbm5yo RETI ;返回电子园51单片机学习网q4yfxhE7{
;rI!p'J-m6x/L13 T0中断服务程序监视过程设计 电子园51单片机学习网+m:iW\.LM \5_
T0中断程序流程如图3—1所示。T0中断的功能是监视T1中断服务程序的运行状态。由于T0中断服务程序较短,因干扰而引起的“死循环”的几率很小,重点考虑中断关闭故障。图3—1中A1、B1为T1中断运行状态观测单元。A1的初值为00H,T1每中断一次,A1便加1,如图2—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中断服务程序一般很短,发生“死循环”的几率很小。电子园51单片机学习网,[KSY3| Jdq
[+RTs:?~1 电子园51单片机学习网 b/Gf;ls{
设单片机晶振频率为6MHz,T0以工作方式1产生4 ms的定时中断,则T0的计数初值为:
(216-N)×2×10-6=4×10-3 电子园51单片机学习网#X3E Z7D*t&O
N=63536D=F830H
#{G2T x'JJ1电子园51单片机学习网8z/~n.kk#~设计数单元A0、A1、B1分别为内RAM 30H、31H、32H,Q=5,60H、61H为暂存单元,则T0中断监视程序如下:
,K+g H`M[H4f!Eeo6I1I3F&w2V,lY1 PUSH PSW ;保护现场电子园51单片机学习网t8{cJG+l]
-y K&q{*y2U B1 PUSH ACC
M\jyX4t1z#S%S V"I rd9Q&[1 MOV TH0,#0F8H ;设T0初值
1B,iq_|r%?a1电子园51单片机学习网n0e.\6@0?*iMOV TL0,#30H电子园51单片机学习网(a2rY^\+T`[R
电子园51单片机学习网_ {qP_ZD[INC 30H ;A0加1
,i1~ Pq8e'G;yE#OH1g&O!?(R%g V7r U1 MOV A,31H ;A1单元判0电子园51单片机学习网J-sG:i5B8n
电子园51单片机学习网 Fw)E5iSz+[JZ loop1
gh/\)b*j.z3t|%@$i D`1电子园51单片机学习网 uSj*c)Yo:j!Y%jCLR A ;清A1、B1单元电子园51单片机学习网)ES \ k4i m/h"[
电子园51单片机学习网1AJ&y'[{s-s6v5_$wMOV 31H,A电子园51单片机学习网 Tq7agz"wb ul
I[ D+E2\4V(q6H#S;R-P1 MOV 32H,A电子园51单片机学习网AH\-ybQ l\
)F+W+H;FAD%j M&X1 loop0:POP ACC ;恢复现场电子园51单片机学习网cs(z5?o
电子园51单片机学习网B z*]H\2|POP PSW
u%r M3M.L~'aOD1电子园51单片机学习网 kw2}1ft3Z:HRETI ;返回电子园51单片机学习网1aQ8q n#r'p@ I;Z$j N:b
电子园51单片机学习网6p$]+z-P X7m#Qskloop1:INC 32H ;B1加1
d]*SI&J1电子园51单片机学习网quC+U;T&_ uCLR C
!x0r4lg nM C1电子园51单片机学习网 y8_\(yF+x@MOV A ,32H;B1≥Q?
[O v8oU I JB1电子园51单片机学习网)D0GH"G*d5n O8` `SUBB A,#05H
7}+n%\jIv$[12WQSMtKpd/_ n+F1 JC loop0
uJ? S+l0?W5F1"X;G9];h$Fz)Uo~8J1 POP ACC ;恢复现场电子园51单片机学习网vN-kC8}%Q
电子园51单片机学习网a ];N(p1](]H{POP PSW
(] c }2YK T#w U1mV;UT;u1}1 POP 60H ;原断点弹出
k ^ l8L\ m1l C]M$^1qF;g}#z1j[1 POP 61H电子园51单片机学习网9~ r3vn w |6l;g g l'n
3v+v:A_ n6f3[1 MOV 60H,#00H ;修改断点0000H电子园51单片机学习网.WW5W,_b`p
.[6@5Wf3_fP:Q JD2f1 MOV 61H,#00H电子园51单片机学习网 \l]'`C^:Uvmw
:v&L5w0S E cX$k1 PUSH 60H
*G%hR3h1WKHp!d13aLOTp[|l1 PUSH 61H电子园51单片机学习网+j8Q5]TkS
电子园51单片机学习网 v,l4@ d3a+L E RETI
2p!E|F-d$W1 当系统受到干扰后,主程序可能发生“死循环”,中断服务程序也可能陷入“死循环”,或因中断方式字的破坏而关闭中断。主程序的“死循环”可由T1中断服务程序监视;T1中断服务程序的“死循环”和中断关闭故障由T0中断服务程序监视;T0的中断故障可由主程序监视。由于采取了三重软件监测方法,大大提高了系统运行的可靠性。电子园51单片机学习网3Jt)W$F1|s],w k
文章评论(0条评论)
登录后参与讨论