📄 io.asm
字号:
;单片机每50ms从扩展的外部输入口读取开关的状态
;单片机将开关的状态以1Hz的闪动频率显示出来
;开关闭合时LED闪烁
IO EQU 8000H ;扩展的I/O口地址
BUF EQU 30H ;开关状态缓冲区
FLASH BIT 00H
ORG 0
LJMP START
ORG 0BH
LJMP TS
ORG 30H
START: MOV SP,#60H
MOV TMOD,#1
MOV TH0,#3CH
MOV TH1,#0B0H ;定时50ms
SETB ET0
SETB EA
MOV R2,#10 ;定时500ms计数
MOV BUF,#0 ;清开关状态缓冲区
CLR FLASH ;清闪烁标志
SETB TR0
LOOP: LCALL DISP ;显示开关状态
SJMP LOOP
;============================================
;显示程序
;功能:根据闪烁标志FLASH将开关缓冲区内容送显
;============================================
DISP: MOV DPTR,#IO
JB FLASH,DISP1 ;FLASH=1则将开关缓冲区内容送显
CLR A ;否则熄灭所有LED
MOVX @DPTR,A
RET
DISP1: MOV A,BUF
MOVX @DPTR,A
RET
;============================================
;50ms中断服务程序
;功能:读取开关状态并存到开关缓冲区
; 每500ms将闪烁标志取反。
;============================================
TS: CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
MOV DPTR,#IO
MOVX A,@DPTR ;读开关状态
CPL A
MOV BUF,A ;存开关状态
DJNZ R2,TS1
MOV R2,#10
CPL FLASH
TS1: RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -