📄 led_display.asm
字号:
LED_DISPLAY:
PUSH DPH
PUSH DPL
PUSH ACC
MOV 3FH,#00H
MOV 3EH,#00H
MOV 3DH,#00H
MOV 3CH,#00H
MOV R5,#3FH
MOV A,#81H ;写8255控制字
MOV DPTR,#7F03H
MOVX @DPTR,A ;C口为基本输入,A口、B口为输出
;*************************
; 变换数字,准备发送子程序
;*************************
START:
MOV A,30H ;转换为十进制数,只要十位数和个位数
MOV B,#64H
DIV AB
MOV A,#0AH
XCH A,B
DIV AB
SWAP A
ADD A,B
MOV 31H,A ;转换结果在31H中
MOV A,31H ;拆字程序,送缓冲区
MOV B,A
SWAP A
ANL A,#0FH
MOV 32H,A ;十位数字送入32H
MOV A,B
ANL A,#0FH ;个位数字送入33H
MOV 33H,A
MOV A,34H ;转换为十进制数,只要十位数和个位数
MOV B,#64H
DIV AB
MOV A,#0AH
XCH A,B
DIV AB
SWAP A
ADD A,B
MOV 35H,A ;转换结果在35H中
MOV A,35H ;拆字程序,送缓冲区
MOV B,A
SWAP A
ANL A,#0FH
MOV 36H,A ;十位数字送入36H
MOV A,B
ANL A,#0FH
MOV 37H,A ;个位数字送入37H
;********************
; 8255程序
;********************
BEGIN:
MOV R2,#0FEH ;要发送的数据送入缓冲区
MOV 3FH,36H
MOV 3EH,37H
MOV 3DH,32H
MOV 3CH,33H
ACALL DIS
POP ACC
POP DPL
POP DPH
RET
DIS:
PUSH ACC
PUSH 00H
PUSH 03H
MOV A,#81H
MOV DPTR,#7F03H
MOVX @DPTR,A
MOV R0,#3CH
MOV R3,#0F7H
MOV A,R3
AGAIN: MOV DPTR,#7F00H
MOVX @DPTR,A
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#7F01H
MOVX @DPTR,A
ACALL DELAYTIME
INC R0 ;在此处设置断点可以观察到一位一位的传送数字
MOV A,R3
JNB ACC.0,SONGWAN
RR A
MOV R3,A
AJMP AGAIN ;返回AGAIN送下一个数字
SONGWAN:MOV DPTR, #7F01H ;数据送完
MOV A, #00H
MOVX @DPTR, A
POP 03H
POP 00H
POP ACC
RET
DELAYTIME:
MOV R7,#03H
DL0: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL0
RET
TAB: DB 03FH,06H,05BH
DB 04FH,066H,06DH
DB 07DH,07H,07FH,06FH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -