汇编语言实现中断嵌套的典型程序
/*典型错误一*/
/*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;可有可无
SETB TR0
RETI
ORG 0080H
INT120: MOV TH0,#4CH
MOV TL0,#00H
INC R0
HERE0:CJNE R0,#14H,HERE0;典型错误1
;此程序已经在定时器T0中断内部,利用
;此程序等待T0中断,中断无从进入。所以
;程序在此行成死循环,即停在此处。声光
;报警启动但停不下来。
SETB P1.2
SETB P2.0
CLR ET0
RETI
END
*/
/*典型错误二*/
/*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;可有可无
SETB TR0
RETI
ORG 0080H
INT120: MOV TH0,#4CH
MOV TL0,#00H
INC R0
CJNE R0,#14H,HERE;典型错误2
;此程序已经在定时器T0中断内部,利用
;此程序等待T0中断,中断无从进入。所以
;程序在此行成死循环,即停在此处。声光
;报警启动但停不下来。和上例一样。
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
汇编语言中断嵌 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)