📄 ledscan2.asm
字号:
;use interupting method to display LED
Counter EQU 59H ;记录正在扫描哪个数码管
FIRST EQU P0.7
SECOND EQU P0.6
THIRD EQU P0.5
FORTH EQU P0.4
FIFTH EQU P0.3
SIXTH EQU P0.2
DISPBUF EQU 30H ;显示内容缓冲区
ORG 0000H
AJMP START
ORG 000BH
AJMP DISP
;//////////////// Main
ORG 30H
START:
MOV SP,#5FH
MOV P2,#00H
MOV P0,#0FFH
MOV P1,#0FFH
MOV TMOD,#00000001B
MOV TH0,#HIGH(65536-2000) ;扫描间隔1ms
MOV TL0,#LOW(65536-2000)
SETB TR0 ;开计时器
SETB EA
SETB ET0
MOV Counter,#0
;MOV DISPBUF,#0
MOV A,#0
mov dispbuf,#0
mov dispbuf+1,#0
mov dispbuf+2,#0
mov dispbuf+3,#0
mov dispbuf+4,#0
mov dispbuf+5,#0
LOOP:
MOV DISPBUF+5,A
INC A
LCALL DELAY
CJNE A,#10,LOOP
MOV A,DISPBUF+4
INC A
CJNE A,#10,LOOP2
MOV A,DISPBUF+3 ;进位到秒个位
INC A
CJNE A,#10,LOOP3
MOV A,DISPBUF+2 ;进到秒十位
INC A
CJNE A,#6,LOOP4
MOV A,DISPBUF+1 ;进到分个位
INC A
CJNE A,#10,LOOP5
MOV A,DISPBUF
INC A
CJNE A,#6,LOOP6
MOV A,#0 ;分十位归零
LOOP6:
MOV DISPBUF,A
MOV A,#0 ;分个位归零
LOOP5:
MOV DISPBUF+1,A
MOV A,#0 ;秒十位归零
LOOP4:
MOV DISPBUF+2,A
MOV A,#0
LOOP3:
MOV DISPBUF+3,A
MOV A,#0 ;秒个位归零
LOOP2:
MOV DISPBUF+4,A
MOV A,#0
AJMP LOOP
;///////////////Display function
DISP:
PUSH ACC
PUSH PSW
MOV TH0,#HIGH(65536-2000)
MOV TL0,#LOW(65536-2000)
SETB FIRST
SETB SECOND
SETB THIRD
SETB FORTH
SETB FIFTH
SETB SIXTH
MOV A,#DISPBUF
ADD A,Counter
MOV R0,A
MOV A,@R0
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
MOV P2,A
MOV A,Counter
JZ DISPFIRST
DEC A
JZ DISPSECOND
DEC A
JZ DISPTHIRD
DEC A
JZ DISPFORTH
DEC A
JZ DISPFIFTH
CLR SIXTH
AJMP DISPNEXT
DISPFIRST:
CLR FIRST
AJMP DISPNEXT
DISPSECOND:
CLR SECOND
AJMP DISPNEXT
DISPTHIRD:
CLR THIRD
AJMP DISPNEXT
DISPFORTH:
CLR FORTH
AJMP DISPNEXT
DISPFIFTH:
CLR FIFTH
DISPNEXT:
INC Counter
MOV A,Counter
SUBB A,#6
JZ RSTCOUNT
AJMP DISPEXIT
RSTCOUNT:
MOV Counter,#0
DISPEXIT:
POP PSW
POP ACC
RETI
;///////////// Delay function
DELAY:
PUSH PSW
SETB RS0
/*MOV R7,#79
D1:MOV R6,#80
D2:MOV R5,#80
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
*/
MOV R7,#50 ;0.01s
D1:MOV R6,#95
DJNZ R6,$
DJNZ R7,D1
POP PSW
RET
DISPTAB:
DB 5FH,44H,9DH,0D5H,0C6H,0D3H,0DBH,45H,0DFH,0D7H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -