?? 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 + -