匯編語(yǔ)言實(shí)現(xiàn)中斷嵌套的典型程序
/*典型錯(cuò)誤一*/
/*ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTE0
ORG 000BH
AJMP INT120
ORG 0030H
MAIN: MOV R0,#00H
SETB IT0
SETB EX0
SETB EA
MOV TMOD,#01H
MOV TH0,#4CH
MOV TL0,#00H
SETB ET0
HERE: AJMP HERE
INTE0: CLR P1.2
CLR P2.0
CLR EX0;可有可無(wú)
SETB TR0
RETI
ORG 0080H
INT120: MOV TH0,#4CH
MOV TL0,#00H
INC R0
HERE0:CJNE R0,#14H,HERE0;典型錯(cuò)誤1
;此程序已經(jīng)在定時(shí)器T0中斷內(nèi)部,利用
;此程序等待T0中斷,中斷無(wú)從進(jìn)入。所以
;程序在此行成死循環(huán),即停在此處。聲光
;報(bào)警啟動(dòng)但停不下來(lái)。
SETB P1.2
SETB P2.0
CLR ET0
RETI
END
*/
/*典型錯(cuò)誤二*/
/*ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTE0
ORG 000BH
AJMP INT120
ORG 0030H
MAIN: MOV R0,#00H
SETB IT0
SETB EX0
SETB EA
MOV TMOD,#01H
MOV TH0,#4CH
MOV TL0,#00H
SETB ET0
HERE: AJMP HERE
INTE0: CLR P1.2
CLR P2.0
CLR EX0;可有可無(wú)
SETB TR0
RETI
ORG 0080H
INT120: MOV TH0,#4CH
MOV TL0,#00H
INC R0
CJNE R0,#14H,HERE;典型錯(cuò)誤2
;此程序已經(jīng)在定時(shí)器T0中斷內(nèi)部,利用
;此程序等待T0中斷,中斷無(wú)從進(jìn)入。所以
;程序在此行成死循環(huán),即停在此處。聲光
;報(bào)警啟動(dòng)但停不下來(lái)。和上例一樣。
SETB P1.2
SETB P2.0
CLR ET0
RETI
END
*/
/*正確答案*/
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTEX0
ORG 000BH
AJMP INTT0
ORG 0030H
MAIN:MOV R0,#00H
SETB EX0
SETB IT0
MOV TMOD,#01H
MOV TH0,#4CH
MOV TL0,#00H
SETB EA
SETB ET0
HERE:CJNE R0,#14H,HERE
MOV R0,#00H
SETB P2.0
SETB P1.2
CLR TR0
AJMP HERE
INTEX0: SETB TR0
CLR P2.0
CLR P1.2
RETI
INTT0: MOV TH0,#4CH
MOV TL0,#00H
INC R0
RETI
END
評(píng)論