📄 242.asm
字号:
IOCD EQU 0F901H
IODT EQU 0F900H
BUF DATA 45H
BUFFER0 EQU 30H
FRIT EQU P1
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:
MOV SP,#60H
MOV DPTR, #IOCD ;送命令口地址
MOV A, #00H
MOVX @DPTR, A ;设置为并行输出方式
MOV TMOD,#20H ;设置T1为方式2
MOV TH1,#0FDH ;设置波特率为9600
MOV TL1,#0FDH
SETB TR1
MOV SCON,#40H ;设置串口位方式1
MOV PCON,#00H
UPUP:
MOV R0,#30H
MOV R7,#5H
RRU:
SETB REN
RRUP: JBC RI,RRD ;接受一位
AJMP RRUP
RRD: MOV A,SBUF
MOV @R0,A
INC R0
DJNZ R7,RRU
MOV R0,#30H
MOV R7,#5H
UP: CLR REN
MOV A,@R0
MOV SBUF,A ;把它发送出去
NEXT: JBC TI,DOWN
AJMP NEXT
DOWN: INC R0
DJNZ R7,UP
DIP: ACALL DISPLAY
AJMP DIP
DELAY: MOV R3,#10H
DELAY1: MOV R4,#50H
DELAY2: DJNZ R4,DELAY2
DJNZ R3,DELAY1
RET
DISPLAY:
MOV R2, #7FH ;给位码初值
MOV R0, #BUFFER0 ;给显示缓冲区首值
ZCQ: MOV DPTR, #IODT
MOV A, @R0
ANL A, #0FH
LCALL TAB ;查表取段码
MOVX @DPTR, A ;送段码输出
MOV BUF, FRIT
ANL BUF, #07H
MOV A, R2 ;保证不影响其它位送位码
ORL A, BUF
MOV FRIT, A
LCALL DELAY ;调延时子程序
INC R0
MOV A, R2
RR A
MOV R2, A
CJNE R0, #35H, ZCQ;5位显示完吗?
RET
;查表子程序
TAB: INC A
MOVC A,@A+PC
RET
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,88H,83H,0C6H,0A1H,86H,8EH ;共阳段码表
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -