📄 uart串口通讯.asm
字号:
$MOD841
SP0 EQU 50H
CLK81 EQU P3.5
DAT81 EQU P3.3
SHUZI EQU 31H
KEYVAL EQU 30H
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP SERVE1
ORG 0023H
LJMP SERVE2
ORG 0060H
MAIN: MOV R0,#0FH
CLR A
QING: MOV @R0,A
DJNZ R0,QING
MOV SP,#SP0
LCALL YS
;---------------------------------------
LCALL INI8281
LCALL INI841
HERE: LJMP HERE
;-------------------------------------
INI841: MOV TMOD,#20H
MOV TL1,#0F3H
MOV TH1,#0F3H
SETB TR1
SETB EA
SETB EX0
SETB ES
MOV PCON,#00H
MOV SCON,#0D0H
RET
;----------------------------------
INI8281:SETB CLK81
SETB DAT81
MOV A,#12H
LCALL WTO81
MOV A,#80H
LCALL WTO81
RET
;---------------------------------
SERVE1: MOV A,#93H
LCALL WTO81
LCALL RDKVAL
LCALL OUTPUT
RETI
;------------------------------
SERVE2: CLR TI
JNB RI,OVER1
LCALL INPUT
LJMP OVER1
OVER1: RETI
OUTPUT: CLR TI
MOV A,KEYVAL
MOV C,PSW.0
MOV TB8,C
MOV SBUF,A
RET
;----------------------------
INPUT: LCALL QINGPING
CLR RI
MOV A,SBUF
MOV SHUZI,A
JB PSW.0,NEXT
JB RB8,ERR
LJMP RIGHT
NEXT: JNB RB8,ERR
RIGHT: LCALL XIANSHI1
LJMP OVER2
ERR: LCALL XIANSHI2
OVER2: RET
;--------------------------
XIANSHI1:MOV A,#15H
LCALL WTO81
MOV A,SHUZI
ANL A,#0F0H
SWAP A
LCALL WTO81
MOV A,#15H
LCALL WTO81
MOV A,SHUZI
ANL A,#0FH
ORL A,#10H
LCALL WTO81
RET
;----------------------------
XIANSHI2:MOV A,#07H
LCALL WTO81
MOV A,#89H
LCALL WTO81
RET
;-------------------------
QINGPING:MOV A,#16H
LCALL WTO81
MOV A,#00H
LCALL WTO81
RET
;---------------------------
WTO81: MOV R6,#08H
WAT: CLR CLK81
LCALL DELAY
SETB CLK81
JB DAT81,WAT
CLR CLK81
LCALL DELAY
SETB CLK81
JNB DAT81,$
WTB81: RLC A
MOV DAT81,C
CLR CLK81
LCALL DELAY
SETB CLK81
LCALL DELAY
LCALL DELAY
DJNZ R6,WTB81
SETB DAT81
RET
;-----------------------------------
RDKVAL: CLR CLK81
LCALL DELAY
SETB CLK81
JB DAT81,$
CLR CLK81
LCALL DELAY
SETB CLK81
MOV R6,#08H
RD1:
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV C,DAT81
LCALL DELAY
RLC A
CLR CLK81
LCALL DELAY
SETB CLK81
DJNZ R6,RD1
MOV KEYVAL,A
RET
;---------------------------------
DELAY: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;----------------------------------------
YS: MOV R5,#00H
MOV R4,#50H
YS1: DJNZ R5,$
DJNZ R4,YS1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -