作者只是學習單片機的一名大學生,如有紕漏,懇請批評指正。
一、proteus仿真截圖
圖一(像素比較高,連線清晰)
圖二(仿真截圖,按鍵的上拉排電阻可有可無,最小系統電路仿真時可以不加,但實際實驗電路要有最小系統電路)
單片機為89C51(80C51、89C52等51系列通用),晶振12MHz,數碼管為六位一體共陰極數碼管,74LS244用來放大電流,三個按鍵分別控制秒清零、分加一、時加一。
二、匯編代碼
ORG 0000H
LJMP MAIN ORG 000BH LJMP SUB1 ORG 0100H MAIN: MOV SP,#60H MOV IE,#82H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R7,#20 MOV R1,#00H ;秒位 MOV R2,#00H ;十秒位 MOV R3,#00H ;分位 MOV R4,#00H ;十分位 MOV R5,#00H ;時位 MOV R6,#00H ;十時位 SETB TR0 HERE: LCALL SHOW ;數碼管顯示 LCALL ANJIAN ;按鍵調整 SJMP HERE ORG 0200H SUB1: CLR EA ;關閉定時器T0 DJNZ R7,NEXT MOV R7,#20
INC R1 CJNE R1,#10,NEXT MOV R1,#00H
INC R2 CJNE R2,#6,NEXT MOV R2,#00H
INC R3 CJNE R3,#10,NEXT MOV R3,#00H
INC R4 CJNE R4,#6,NEXT MOV R4,#00H
INC R5 CJNE R6,#2,SHI CJNE R5,#4,NEXT ;滿4進位 SJMP R50 SHI: CJNE R5,#10,NEXT ;滿10進位 R50: MOV R5,#00H
INC R6 CJNE R6,#3,NEXT MOV R6,#00H NEXT: MOV TH0,#3CH ;重新賦值,打開中斷 MOV TL0,#0B0H SETB EA RETI SHOW: MOV A,R1 ;數碼管顯示 LCALL TA1 MOV P0,A CLR P2.0 LCALL DELAY5MS SETB P2.0
MOV A,R2 LCALL TA1 MOV P0,A CLR P2.1 LCALL DELAY5MS SETB P2.1
MOV A,R3 LCALL TA2 MOV P0,A CLR P2.2 LCALL DELAY5MS SETB P2.2
MOV A,R4 LCALL TA1 MOV P0,A CLR P2.3 LCALL DELAY5MS SETB P2.3
MOV A,R5 LCALL TA2 MOV P0,A CLR P2.4 LCALL DELAY5MS SETB P2.4
MOV A,R6 LCALL TA1 MOV P0,A CLR P2.5 LCALL DELAY5MS SETB P2.5 RET TA1: MOV DPTR,#TABLE1 MOVC A,@A+DPTR RET TA2: MOV DPTR,#TABLE2 MOVC A,@A+DPTR RET ANJIAN:JNB P1.0,W1 ;按鍵調整 JNB P1.1,W2 JNB P1.2,W3 AJMP OUT W1: LCALL DELAY5MS LCALL DELAY5MS JB P1.0,OUT Q1: LCALL SHOW ;秒 JNB P1.0,Q1 MOV R1,#00H ;按鍵一按一次清零秒位、十秒位 MOV R2,#00H SJMP OUT W2: LCALL DELAY5MS LCALL DELAY5MS JB P1.1,OUT Q2: LCALL SHOW ;分 JNB P1.1,Q2 INC R3 ;按鍵二按一次分加一 CJNE R3,#10,OUT MOV R3,#00H
INC R4 CJNE R4,#6,OUT MOV R4,#00H SJMP OUT W3: LCALL DELAY5MS LCALL DELAY5MS JB P1.2,OUT Q3: LCALL SHOW ;時 JNB P1.2,Q3 INC R5 ;按鍵三按一次時加一 CJNE R6,#2,SHI2 CJNE R5,#4,OUT ;滿4進位 SJMP R502 SHI2: CJNE R5,#10,OUT ;滿10進位 R502: MOV R5,#00H
INC R6 CJNE R6,#3,OUT MOV R6,#00H SJMP OUT OUT: RET DELAY5MS: MOV 31H,#10 LOOP1: MOV 32H,#250 LOOP2: DJNZ 32H,LOOP2 DJNZ 31H,LOOP1 RET TABLE1:;共陰極無小數點 DB 03FH, 006H, 05BH, 04FH, 066H, 06DH, 07DH, 007H, 07FH, 06FH ; TABLE2:; 共陰極有小數點 DB 0BFH, 086H, 0DBH, 0CFH, 0E6H, 0EDH, 0FDH, 087H, 0FFH, 0EFH ; END
|