;8位数码管显示秒计时(使用本论坛的51hei-5型板,硬件连接简述:晶振12M,PO口并接两个74HC573驱动8位数码管,P2.6为段选通位,P2.7为位选通位.)
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:MOV SP,#60H
MOV R1,#00H ;位计数清0
MOV R2,#00H ;缓冲区清0
CLR P2.0 ;段选通清0
CLR P2.1 ;位选通清0
LOOP2:MOV A,R2
LCALL DELAY1S
ADDC A,#01H
MOV R2,A
LOOP1:MOV B,#10
DIV AB
JNZ LOOP ;A不为0转移到LOOP
LCALL DISPLAY
LJMP LOOP2
LOOP:INC R1
LCALL DISPLAY
LCALL LOOP1
DISPLAY:SETB P2.1 ;位处理
MOV A,R1
MOV DPTR,#TAB2
MOVC A,@A+DPTR
MOV P0,A
CLR P2.1
CLR A
SETB P2.0 ;段处理
MOV A,B
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
LCALL DELAY5MS
RET
DELAY1S: MOV R5,#100
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
DELAY5MS: MOV R3,#50
D3:MOV R4,#49
DJNZ R3,$
DJNZ R4,D3
RET
TAB1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴显示字库0-9
TAB2:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH ;位选通字符表
END
我是一个初学者,在此程序调试中,发现数码管仅显示“1”,不累加了,请过路的高手帮忙看一下,谢谢!
|