📄 two.asm
字号:
E_G EQU 10001110B
S_G EQU 01100100B
W_G EQU 01011010B
N_G EQU 01001101B
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:
MOV A,R0
JZ LOOP
CJNE A,#031H,N1
MOV P2,#E_G
SJMP LOOP
N1:
CJNE A,#032H,N3
MOV P2,#S_G
SJMP LOOP
N3:
CJNE A,#033H,N4
MOV P2,#W_G
JMP LOOP
N4:
CJNE A,#034H,N2
MOV P2,#N_G
JMP LOOP
INTR:
PUSH A
JNB RI,SND ;判断是发送还是接收
RCV:
CLR EA ;接收子程序,关中断
CLR RI ;清除中断标志
MOV A,SBUF ;接收地址并送到A
MOV R0,A
MOV A,#0AAH
MOV SBUF,A ;将数据送SBUF
SETB EA ;开中断
POP A
RETI
SND:
CLR EA ;发送子程序,关中断
CLR TI ;清除中断标志
SETB EA ;开中断
POP A
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -