利用AT89C2051制作的6位電子鐘
CLR 02H ;清閃爍標(biāo)志
CLR TR1 ;關(guān)閉定時(shí)器T1
CLR ET1 ;關(guān)定時(shí)器T1中斷
SETB TR0 ;開啟定時(shí)器T0
SETB ET0 ;開定時(shí)器T0中斷(計(jì)時(shí)開始)
LJMP START1 ;跳回主程序
SET1: LCALL DISPLAY ;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)分)
AJMP SET2 ;防止鍵按下時(shí)無時(shí)鐘顯示
SET3: LCALL DISPLAY ;等待調(diào)分按鍵時(shí)時(shí)鐘顯示用
AJMP SET4
SET5: LCALL DISPLAY ;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)小時(shí))
AJMP SETHH1 ;防止鍵按下時(shí)無時(shí)鐘顯示
SET7: LCALL DISPLAY ;等待調(diào)小時(shí)按鍵時(shí)時(shí)鐘顯示用
AJMP SET6
SETOUT1:LCALL DISPLAY ;退出時(shí)鐘調(diào)整時(shí)鍵釋放等待
AJMP SETOUT ;防止鍵按下時(shí)無時(shí)鐘顯示
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 顯示程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 顯示數(shù)據(jù)在70H-75H單元內(nèi),用六位LED共陽數(shù)碼管顯示,P1口輸出段碼數(shù)據(jù),P3口作
; 掃描控制,每個(gè)LED數(shù)碼管亮1MS時(shí)間再逐位循環(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時(shí)一次顯示結(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
評論