單片機(jī)數(shù)碼顯示實(shí)例0-999999
這是一款0-999999計數(shù)器的另一種形式。
;****************************
org 00h
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV 30H,#00H ;30h--33h is a buffer for four 7-segmentLEDdisplay.
MOV 31H,#00H ;at the beginning,the four 7-seg led all diaplay zero.
MOV 32H,#00H
MOV 33H,#00H
MOV DPTR,#TAB
MAIN1:
mov 35h,#10
lop1:
MOV 34H,#00 ;34h and 35h is a counter for control the counter time.the 00h equal 256.
LOOP:
MOV A,30H
MOVC A,@A+DPTR
SETB P2.1
CLR P2.6
MOV P0,A
LCALL DELAY
MOV P0,#0FFH ;display the lowest 7-seg led.
MOV A,31H
MOVC A,@A+DPTR
SETB P2.6
CLR P2.5
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
MOV A,32H
MOVC A,@A+DPTR
SETB P2.5
CLR P2.4
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
MOV A,33H
MOVC A,@A+DPTR
SETB P2.4
CLR P2.3
MOV P0,A
LCALL DELAY
MOV P0,#0FFH ;display the highest 7-seg led.
SETB P2.3
CLR P2.2
MOV P0,#28h
LCALL DELAY
MOV P0,#0FFH ;display the highest 7-seg led.
SETB P2.2
CLR P2.1
MOV P0,#28h
LCALL DELAY
MOV P0,#0FFH ;display the highest 7-seg led.
DJNZ 34H,LOOP ;sCANone time,34h decrease one,if 34h decrease to zero,the buffer content will change.
djnz 35h,lop1
INC 30H
MOV A,30H
CJNE A,#10,MAIN1
MOV 30H,#00H ;if 30h increase to 10,then clear 30h and increase 31h.
INC 31H
MOV A,31H
CJNE A,#10,MAIN1
MOV 31H,#00H ;if 31h increase to 10,then clear 31h and increase 32h.
INC 32H
MOV A,32H
CJNE A,#10,MAIN1
MOV 32H,#00H ;if 32h increase to 10,then clear 32h and increase 33h.
INC 33H
MOV A,33H
CJNE A,#10,MAIN2
MOV 33H,#00H ;if 33h increase to 10,then clear 33h and jump to main.
AJMP MAIN
main2: ajmp main1
DELAY:
CLR P3.3
MOV R7,#2
NOP
NOP
D1: MOV R6,#2
SETB P3.3
D2: DJNZ R6,D2
CLR P3.3
DJNZ R7,D1
SETB P3.3
RET
TAB:
DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H
END