📄 51接收.asm
字号:
;串行通信,实现与PC机通信(通过超级终端),通过串口软件可以实现PC机和下位单片机的数据传输
ORG 0000H ;程序执行开始地址
LJMP START ;跳至START执行
ORG 0100H
START: MOV SP,#60H
MOV TMOD,#20H ;定时器1,工作在模式00100000b
MOV TL1,#0FDH ;定时初值
MOV TH1,#0FDH ;波特率为9600
CLR ET1
SETB TR1 ;定时开始
MOV SCON,#40H ;串行方式1,禁止接收
MOV PCON,#00H
CLR ES
MOV R0,#40H ;数据地址接收
MOV R2,#16 ;接收数据字节数
setb ren
TRSA: jnb ri,$
clr ri
MOV A,SBUF
mov @r0,a
INC R0
DJNZ R2,TRSA
clr P3.2
lcall delay
MOV R0,40H
MOV R4,#16
DD: MOV A,@R0
lcall ASCH
MOV @R0,A
INC R0
DJNZ R4,DD
lcall bcd
sss: lcall display
setb p3.2
SJMP start
ASCH: CLR C
SUBB A,#30H
JNB ACC.4,ASH1
SUBB A,#7
ASH1: RET
bcd: mov r1,#40h
mov dptr,#TABLE
ssss: mov a,@r1
movc a,@a+dptr
mov @r1,a
inc r1
cjne r1,#50h,ssss
ret
display:MOV DPTR,#7FFFH
SETB P2.3
MOV A,40H
MOVX @DPTR,A
CLR P2.0
LCALL DELAY
SETB P2.0
MOV A,41H
MOVX @DPTR,A
CLR P2.1
LCALL DELAY
SETB P2.1
MOV A,42H
MOVX @DPTR,A
CLR P2.2
LCALL DELAY
SETB P2.2
MOV A,43H
MOVX @DPTR,A
CLR P2.3
LCALL DELAY
setb p2.3
MOV A,44H
MOVX @DPTR,A
CLR P2.0
LCALL DELAY
SETB P2.0
MOV A,45H
MOVX @DPTR,A
CLR P2.1
LCALL DELAY
SETB P2.1
MOV A,46H
MOVX @DPTR,A
CLR P2.2
LCALL DELAY
SETB P2.2
MOV A,47H
MOVX @DPTR,A
CLR P2.3
LCALL DELAY
setb p2.3
MOV A,48H
MOVX @DPTR,A
CLR P2.0
LCALL DELAY
SETB P2.0
MOV A,49H
MOVX @DPTR,A
CLR P2.1
LCALL DELAY
SETB P2.1
MOV A,4aH
MOVX @DPTR,A
CLR P2.2
LCALL DELAY
SETB P2.2
MOV A,4bH
MOVX @DPTR,A
CLR P2.3
LCALL DELAY
setb p2.3
MOV A,4cH
MOVX @DPTR,A
CLR P2.0
LCALL DELAY
SETB P2.0
MOV A,4dH
MOVX @DPTR,A
CLR P2.1
LCALL DELAY
SETB P2.1
MOV A,4eH
MOVX @DPTR,A
CLR P2.2
LCALL DELAY
SETB P2.2
MOV A,4fH
MOVX @DPTR,A
CLR P2.3
LCALL DELAY
setb p2.3
RET
DELAY: MOV R5,#50
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳字段码表,实验板是这个共阳极的
DB 92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH ;A~F
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -