此程序上電后開(kāi)始顯示并不正常,過(guò)一會(huì)才正常,按鍵似乎并沒(méi)有用,希望能明白怎么回事
頻率12mhz ,從零開(kāi)始計(jì)到99秒,原理為先通過(guò)十六進(jìn)制和十進(jìn)制的轉(zhuǎn)換后使用變址尋址把數(shù)據(jù)
顯示出來(lái),十位和各位共延時(shí)4毫秒,如果有按鍵按下計(jì)數(shù)從零開(kāi)始
DIZHI EQU 21H ;用于中間的數(shù)據(jù)傳送 COUNT EQU 22H ;用于計(jì)數(shù)器的自加 ORG 0000H JMP START ORG 0030H TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共陽(yáng)極代碼 START: CLR COUNT WORK1: CALL DISPY ;十六進(jìn)制的轉(zhuǎn)換,輸出代碼顯示 INC COUNT JNB P2.0 , FUYUAN ;s4按下從零開(kāi)始計(jì)數(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 ;寄存器計(jì)數(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 ;顯示個(gè)位 CLR P2.4 CALL DEL SETB P2.4 DJNZ R1 ,DISP RET FUYUAN:CALL DEL MOV P0 ,#11111111B MOV P2 ,#11111111B LJMP START ;從零開(kāi)始 DEL: MOV R6 ,#4 F1: MOV R7, #250 ;延時(shí)兩個(gè)毫秒 F2: DJNZ R7 ,F2 DJNZ R6 ,F1 RET END