利用AT89C2051制作的6位電子鐘
CLR 02H ;清閃爍標(biāo)志
CLR TR1 ;關(guān)閉定時器T1
CLR ET1 ;關(guān)定時器T1中斷
SETB TR0 ;開啟定時器T0
SETB ET0 ;開定時器T0中斷(計時開始)
LJMP START1 ;跳回主程序
SET1: LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)分)
AJMP SET2 ;防止鍵按下時無時鐘顯示
SET3: LCALL DISPLAY ;等待調(diào)分按鍵時時鐘顯示用
AJMP SET4
SET5: LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)小時)
AJMP SETHH1 ;防止鍵按下時無時鐘顯示
SET7: LCALL DISPLAY ;等待調(diào)小時按鍵時時鐘顯示用
AJMP SET6
SETOUT1:LCALL DISPLAY ;退出時鐘調(diào)整時鍵釋放等待
AJMP SETOUT ;防止鍵按下時無時鐘顯示
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 顯示程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 顯示數(shù)據(jù)在70H-75H單元內(nèi),用六位LED共陽數(shù)碼管顯示,P1口輸出段碼數(shù)據(jù),P3口作
; 掃描控制,每個LED數(shù)碼管亮1MS時間再逐位循環(huán)。
DISPLAY:MOV R1,#70H ;指向顯示數(shù)據(jù)首址
MOV R5,#0FEH ;掃描控制字初值
PLAY: MOV A,R5 ;掃描字放入A
MOV P3,A ;從P3口輸出
MOV A,@R1 ;取顯示數(shù)據(jù)到A
MOV DPTR,#TAB ;取段碼表地址
MOVC A,@A+DPTR;查顯示數(shù)據(jù)對應(yīng)段碼
MOV P1,A ;段碼放入P1口
LCALL DL1MS ;顯示1MS
INC R1 ;指向下一地址
MOV A,R5 ;掃描控制字放入A
JNB ACC.5,ENDOUT ;ACC.5=0時一次顯示結(jié)束
RL A ;A中數(shù)據(jù)循環(huán)左移
MOV R5,A ;放回R5內(nèi)
AJMP PLAY ;跳回PLAY循環(huán)
ENDOUT: SETB P3.5 ;一次顯示結(jié)束,P3口復(fù)位
MOV
評論