此程序上電后開始顯示并不正常,過一會才正常,按鍵似乎并沒有用,希望能明白怎么回事
頻率12mhz ,從零開始計到99秒,原理為先通過十六進制和十進制的轉(zhuǎn)換后使用變址尋址把數(shù)據(jù)
顯示出來,十位和各位共延時4毫秒,如果有按鍵按下計數(shù)從零開始
DIZHI EQU 21H ;用于中間的數(shù)據(jù)傳送
COUNT EQU 22H ;用于計數(shù)器的自加
ORG 0000H
JMP START
ORG 0030H
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共陽極代碼
START: CLR COUNT
WORK1: CALL DISPY ;十六進制的轉(zhuǎn)換,輸出代碼顯示
INC COUNT
JNB P2.0 , FUYUAN ;s4按下從零開始計數(shù)
MOV A ,COUNT
CJNE A ,#100 ,WORK2
CLR COUNT
CALL START
WORK2: LJMP WORK1
DISPY: MOV A ,COUNT
MOV B ,#10
DIV AB
MOV R1 ,#250 ;寄存器計數(shù)250次,一次4毫秒
MOV DIZHI ,A
DISP: MOV A ,DIZHI ;數(shù)據(jù)的中間交換
MOV DPTR ,#TAB
MOVC A ,@ A+DPTR;變址尋址
MOV P0 ,A ;P0為段選
CLR P2.5 ;P2位選,顯示十位
CALL DEL
SETB P2.5
MOV A ,B
MOVC A , @A+DPTR
MOV P0 ,A ;顯示個位
CLR P2.4
CALL DEL
SETB P2.4
DJNZ R1 ,DISP
RET
FUYUAN:CALL DEL
MOV P0 ,#11111111B
MOV P2 ,#11111111B
LJMP START ;從零開始
DEL: MOV R6 ,#4
F1: MOV R7, #250 ;延時兩個毫秒
F2: DJNZ R7 ,F2
DJNZ R6 ,F1
RET
END
