利用AT89C2051制作的6位電子鐘
;按下時(shí)間大于0.5秒轉調小時(shí)狀態(tài)
MOV R0,#77H ;按下時(shí)間小于0.5秒加1分鐘操作
LCALL ADD1 ;調用加1子程序
MOV A,R3 ;取調整單元數據
CLR C ;清進(jìn)位標志
CJNE A,#60H,HHH ;調整單元數據與60比較
HHH: JC SET4 ;調整單元數據小于60轉SET4循環(huán)
LCALL CLR0 ;調整單元數據大于或等于60時(shí)清0
CLR C ;清進(jìn)位標志
AJMP SET4 ;跳轉到SET4循環(huán)
CLOSEDIS:
SETB ET0 ;省電(LED不顯示)狀態(tài)。開(kāi)T0中斷
SETB TR0 ;開(kāi)啟T0定時(shí)器(開(kāi)時(shí)鐘)
CLOSE: JB P3.7,CLOSE ;無(wú)按鍵按下,等待。
LCALL DISPLAY ;有鍵按下,調顯示子程序延時(shí)削抖
JB P3.7,CLOSE ;是干擾返回CLOSE等待
WAITH: JNB P3.7,WAITH;等待鍵釋放
LJMP START1 ;返回主程序(LED數據顯示亮)
SETHH: CLR 00H ;分閃爍標志清除(進(jìn)入調小時(shí)狀態(tài))
SETHH1: JNB P3.7,SET5 ;等待鍵釋放
SETB 01H ;小時(shí)調整標志置1
SET6: JB P3.7,SET7 ;等待按鍵按下
LCALL DL05S ;有鍵按下延時(shí)0.5秒
JNB P3.7,SETOUT ;按下時(shí)間大于0.5秒退出時(shí)間調整
MOV R0,#79H ;按下時(shí)間小于0.5秒加1小時(shí)操作
LCALL ADD1 ;調加1子程序
MOV A,R3
CLR C
CJNE A,#24H,HOUU ;計時(shí)單元數據與24比較
HOUU: JC SET6 ;小于24轉SET6循環(huán)
LCALL CLR0 ;大于或等于24時(shí)清0操作
AJMP SET6 ;跳轉到SET6循環(huán)
SETOUT: JNB P3.7,SETOUT1 ;調時(shí)退出程序。等待鍵釋放
LCALL DISPLAY ;延時(shí)削抖
JNB P3.7,SETOUT ;是抖動(dòng),返回SETOUT再等待
CLR 01H ;清調小時(shí)標志
CLR 00H ;清調分標志
評論