📄 led_show.asm
字号:
DATA_BUF BQU 30H
POL equ P1.3 ;符号位
CTRL_Pin1 equ P2.1 ;万位选通端
CTRL_Pin2 equ P2.2 ;千位选通端
CTRL_Pin3 equ P2.3 ;百位选通端
CTRL_Pin4 equ P2.0 ;十位选通端
CTRL_Pin5 equ P2.4 ;个位选通端
;--------------------------------------------------------------------------------------------------
ORG 0000H
LJMP START
ORG 0080H
START: LCALL LED_SHOW
SJMP $
LED_SHOW: PUSH ACC ;保护现场
PUSH DPH
PUSH DPL
LOOP1: CLR CTRL_Pin5
MOV A,DATA_BUF ;万位调整
ANL A,#0FH
MOV C,POL ;取出符号
JC SHOW_positive ;是正电压?
; CLR 7FH 设负电压标志
MOV A,#11 ;置负1偏移量
LCALL Get_LED
MOV P0,A ;万位显示值设置---负1
SETB CTRL_Pin1
SJMP NEXT1
SHOW_positive: LCALL Get_LED
MOV P0,A 万;万位显示值设置——正1或0
SETB CTRL_Pin1
SJMP NEXT1
NEXT1: CLR CTRL_Pin1
MOV A,DATA_BUF+1 ;千位调整
SWAP A
ANL A,#0FH
LCALL Get_LED
MOV P0,A ;千位显示值设置
SETB CTRL_Pin2
CLR CTRL_Pin2
MOV A,DATA_BUF+1 ;百位调整
ANL A,#0FH
LCALL Get_LED
MOV P0,A ;百位显示值设置
SETB CTRL_Pin3
CLR CTRL_Pin3
MOV A,DATA_BUF+2 ;十位调整
SWAP A
ANL A,#0FH
LCALL Get_LED
MOV P0,A ;十位显示值设置
SETB CTRL_Pin4
CLR CTRL_Pin4
MOV A,DATA_BUF+2 ;个位调整
ANL A,#0FH
LCALL Get_LED
MOV P0,A ;个位显示值设置
SETB CTRL_Pin5
; POP DPL
; POP DPH
; POP ACC ;恢复现场
SJMP LOOP1
Get_LED: PUSH DPH ;读取表值,入口A,出口A
PUSH DPL
MOV DPTR,#TAB1
MOVC A,@A+DPTR
POP DPL
POP DPH
RET
TAB1:DB 0FAH,87H,0B9H,0ABH,0C3H,6BH,7BH,0A2H,0FBH,0EBH,86H ;分别表示0,1,2,3,4,5,6,7,8,9,-1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -