📄 three.asm
字号:
ONE_G EQU 01111111B
TWO_G EQU 01101111B
THREE_G EQU 01001111B
FOUR_G EQU 01001110B
ORG 0000H
LJMP START ;转初始化程序
ORG 0023H
LJMP INTR ;转中断子程序
ORG 0030H
START:
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1 ;启动定时器
MOV SCON,#50H ;串口初始化
MOV PCON,#00H ;SMOD=0
SETB EA ;允许CPU中断
SETB ES ;允许串行口中断
SETB REN ;允许接收
N2:
MOV R0,#00H
MOV P2,#0FFH
LOOP:
CLR TI
JB P1.2,BUTTON2
MOV A,#031H
MOV SBUF,A
WAIT:
JNB TI,WAIT ;等待发送
BUTTON2:
JB P1.3,BUTTON3
MOV A,#032H
MOV SBUF,A
WAIT2:
JNB TI,WAIT2 ;等待发送
BUTTON3:
JB P1.4,BUTTON4
MOV A,#033H
MOV SBUF,A
WAIT3:
JNB TI,WAIT3 ;等待发送
BUTTON4:
JB P1.5,N0
MOV A,#034H
MOV SBUF,A
WAIT4:
JNB TI,WAIT4 ;等待发送
N0:
MOV A,R0
CJNE A,#031H,N1
MOV P2,#ONE_G
JMP LOOP
N1:
CJNE A,#032H,N3
MOV P2,#TWO_G
JMP LOOP
N3:
CJNE A,#033H,N4
MOV P2,#THREE_G
JMP LOOP
N4:
CJNE A,#034H,N2
MOV P2,#FOUR_G
JMP LOOP
INTR:
PUSH A
JB RI,RCV ;判断是发送还是接收
POP A
RETI
RCV:
CLR EA ;接收子程序,关中断
CLR RI ;清除中断标志
MOV A,SBUF ;接收地址并送到A
MOV R0,A ;将数据送SBUF
SETB EA ;开中断
POP A
RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -