📄 t5.asm
字号:
NAME T5 ;中断控制实验
OUTPORT EQU 0CFB0H ;端口地址
SAVE EQU 55H ;保存从端口CFB0输出的数据
CSEG AT 0000H
LJMP START
CSEG AT 4003H
LJMP INT
CSEG AT 4100H
START: SETB IT0
SETB EX0
SETB EA
MOV A,#11H ;置首显示码
MOV SAVE,A ;保存
ACALL DISP ;显示输出
ACALL DE3S ;延时3秒
LLL: MOV A,#12H ;东西路口绿灯亮,南北路口红灯亮
MOV SAVE,A
ACALL DISP
ACALL DE10S ;延时10秒
MOV A,#10H ;东西路口绿灯灭
MOV SAVE,A
ACALL DISP
MOV R2,#05H ;东西路口黄灯闪烁5次
TTT: MOV A,#14H
MOV SAVE,A
ACALL DISP
ACALL DE02S ;延时0.2秒
MOV A,#10H
MOV SAVE,A
ACALL DISP
ACALL DE02S ;延时0.2秒
DJNZ R2,TTT
MOV A,#11H ;红灯全亮
MOV SAVE,A
ACALL DISP
ACALL DE02S ;延时0.2秒
MOV A,#21H ;东西路口红灯亮,南北路口绿灯亮
MOV SAVE,A
ACALL DISP
ACALL DE10S ;延时10秒
MOV A,#01H ;南北路口绿灯灭
MOV SAVE,A
ACALL DISP
MOV R2,#05H ;南北路口黄灯闪烁5次
GGG: MOV A,#41H
MOV SAVE,A
ACALL DISP
ACALL DE02S
MOV A,#01H
MOV SAVE,A
ACALL DISP
ACALL DE02S
DJNZ R2,GGG
MOV A,#11H ;红灯全亮
MOV SAVE,A
ACALL DISP
ACALL DE02S ;延时0.2秒
JMP LLL ;转LLL循环
DE10S: MOV R5,#100 ;延时10秒
JMP DE1
DE3S: MOV R5,#30 ;延时3秒
JMP DE1
DE02S: MOV R5,#02 ;延时0.2秒
DE1: MOV R6,#200
DE2: MOV R7,#126
DE3: DJNZ R7,DE3
DJNZ R6,DE2
DJNZ R5,DE1
RET
INT: CLR EA
PUSH ACC ;中断处理
PUSH PSW
MOV A,R5
PUSH ACC
MOV A,R2
PUSH ACC
MOV A,#11H ;红灯全亮,绿、黄灯全灭
ACALL DISP
DEL10S: MOV R3,#100 ;延时10秒
DEL1: MOV R2,#200
DEL2: MOV R5,#126
DEL3: DJNZ R5,DEL3
DJNZ R2,DEL2
DJNZ R3,DEL1
MOV A,SAVE ;取SAVE中保存数据输出到cfa0端口
ACALL DISP
POP ACC ;出栈
MOV R2,A
POP ACC
MOV R5,A
POP PSW
POP ACC
SETB EA ;允许外部中断
RETI
DISP: MOV DPTR,#OUTPORT
CPL A
MOVX @DPTR,A
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -