; 器件:共陽極8段數(shù)碼管!89C51!
; 注:控制的數(shù)碼管的位上為電位反相!
; 即引腳為高電平時,對應(yīng)的位碼會亮!
; 我是才學(xué)單片機(jī)的1
; 有什么不足的請大家指教,謝謝!
; 希望與單片機(jī)初學(xué)者一起學(xué)習(xí)1
;P2段碼,p1位碼
p3.3,p3.4,p3.5按鍵
ds1302 :p3.6 p3.7.p3.8
;2010,1,30 ;閆偉東 ;QQ:543345617 ;EAILL;543345617@QQ.COM ;****************************************************************************** M EQU 50H;秒 S EQU 51H;分 H EQU 52H;小時 Q EQU 53H;計數(shù)器20次標(biāo)志位 KEY_H EQU P3.2;對應(yīng)按鍵位 KEY_S EQU P3.3; KEY_M EQU P3.4; CTH EQU (65336-50000)/256;設(shè)置計時器初始值50MS CTL EQU (65336-50000) MOD 256; ORG 0000H JMP START ORG 000BH JMP TIME START: MOV SP,#40H; MOV DPTR,#ABC MOV M,#00H MOV S,#00H MOV H,#00H MOV Q,#00H MOV TMOD, #01H; MOV TH0,#CTH;初始指針 MOV TL0,#CTL SETB EA;開中斷 SETB ET0 SETB TR0 ;***************主程序開始************************** LOOP: LCALL DISPLAY JNB KEY_M,K1 JNB KEY_S,K2 JNB KEY_H,K3 JMP LOOP ;*************以下按鍵程序************************** K1: CALL DELAY JB KEY_M,LOOP INC M MOV A,M CJNE A,#60,D1 MOV M,#00H JMP LOOP K2: CALL DELAY JB KEY_S,LOOP INC S MOV A,S CJNE A,#60,D2 MOV S,#00H JMP LOOP K3: CALL DELAY JB KEY_H,LOOP INC H MOV A,H CJNE A,#24,D2 MOV H,#00H JMP LOOP ;*************連續(xù)按鍵程序************************* D1: CALL DISPLAY CALL DELAY_1 JB KEY_S,LOOP JMP K1 D2: CALL DISPLAY CALL DELAY_1 JB KEY_M,LOOP JMP K1 D3: CALL DISPLAY CALL DELAY_1 JB KEY_H,LOOP JMP K1 ;*************以下計數(shù)器中斷程序************************** TIME: MOV TH0,#CTH;初始指針 MOV TL0,#CTL INC Q MOV A,Q CJNE A,#20,TIME_2; MOV Q,#00H INC M MOV A,M CJNE A,#60,TIME_2 MOV M,#00H INC S MOV A,S CJNE A,#60,TIME_2; MOV S,#00H INC H MOV A,H CJNE A,#24,TIME_2; MOV H,#00H MOV M,#00H MOV S,#00H MOV Q,#00H TIME_2: RETI ;****************以下顯示程序**************************** DISPLAY: MOV A,M MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P2,A SETB P1.1 CALL DELAY CLR P1.1;@@@@@@@@@秒十位 MOV A,B MOVC A,@A+DPTR MOV P2,A SETB P1.0 CALL DELAY CLR P1.0;@@@@@@@@@@@@秒個位 MOV P2,#0BFH SETB P1.2 CALL DELAY CLR P1.2;@@@@@@@@@222分秒之間橫杠 MOV A,S MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P2,A SETB P1.4 CALL DELAY CLR P1.4;@@@@@@@@@@分十位 MOV A,B MOVC A,@A+DPTR MOV P2,A SETB P1.3 CALL DELAY CLR P1.3;@@@@@@@@@@@@分個位 MOV P2,#0BFH SETB P1.5 CALL DELAY CLR P1.5;@@@@@@@@@@分時橫杠 MOV A,H MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P2,A SETB P1.7 CALL DELAY CLR P1.7;@@@@@@@@@@@時十位 MOV A,B MOVC A,@A+DPTR MOV P2,A SETB P1.6 CALL DELAY CLR P1.6 RET DELAY: MOV R5,#5 N1: MOV R4,#250 DJNZ R4,$ DJNZ R5,N1 RET DELAY_1: MOV R5,#5 F1: MOV R4,#40 F2: MOV R3,#250 DJNZ R3,$ DJNZ R4,F2 DJNZ R5,F1 RET ABC: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END ;*************************************************** ;經(jīng)過調(diào)試后發(fā)現(xiàn)有很多不足: ;最大的缺陷是精度不夠! ;可能必須用時鐘芯片才行吧, ; 2010.1.31.