📄 interupt.asm
字号:
;中断实验
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP HANDLER_INT0
ORG 0030H
MAIN: SETB EX0
SETB IT0
SETB EA
BEGIN: MOV 20H,#00000000B ;记录中断后亮灯个数
MOV R0,#11111110B ;记录跑马灯位置
LOOP: MOV P1,R0
;LCALL DELAY ;延时一段时间
MOV A,R0
RL A
MOV R0,A
AJMP LOOP ;到最开始LOOP处重新运行
ORG 0200H
HANDLER_INT0: ;中断处理程序
CLR EA ;关中断
MOV R1,20H
INC R1
MOV 20H,R1
MOV R2,20H
MOV ACC,#00H
LCALL SHINE ;调用闪烁函数
JB 03,RESET ;清零
SETB EA ;开中断
RETI
RESET: MOV 20H,#00000000B ;记录中断后亮灯个数
RET
DELAY: MOV R5,#20 ;延时子程序
D1: MOV R6,#40
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
SHINE: MOV ACC,#00H
LCALL FIND
CPL A
MOV P1,A
LCALL DELAY
MOV P1,#FFH
MOV R2,20H
DJNZ R1,SHINE
RET
FIND: RL ACC
INC ACC
DJNZ R2,FIND
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -