利用AT89C2051制作的6位電子鐘
R0,#79H ;指向小時計時單元(78H-79H)
ACALL ADD1 ;小時計時單元加1小時
MOV A,R3 ;時數(shù)據(jù)放入A
CLR C ;清進位標志
CJNE A,#24H,HOUR
HOUR: JC OUTT0 ;小于24小時中斷退出
ACALL CLR0 ;大于或等于24小時小時計時單元清0
OUTT0: MOV 72H,76H ;中斷退出時將分、時計時單元數(shù)據(jù)移
MOV 73H,77H ;入對應顯示單元
MOV 74H,78H
MOV 75H,79H
POP PSW ;恢復狀態(tài)字(出棧)
POP ACC ;恢復累加器
SETB ET0 ;開放T0中斷
RETI ;中斷返回
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 閃動調(diào)時 程 序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;T1中斷服務程序,用作時間調(diào)整時調(diào)整單元閃爍指示
INTT1: PUSH ACC ;中斷現(xiàn)場保護
PUSH PSW
MOV TL1, #0B0H;裝定時器T1定時初值
MOV TH1, #3CH
DJNZ R2,INTT1OUT ;0.3秒未到退出中斷(50MS中斷6次)
MOV R2,#06H ;重裝0.3秒定時用初值
CPL 02H ;0.3秒定時到對閃爍標志取反
JB 02H,FLASH1 ;02H位為1時顯示單元"熄滅"
MOV 72H,76H ;02H位為0時正常顯示
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
INTT1OUT:
POP PSW ;恢復現(xiàn)場
POP ACC
RETI ;中斷退出
FLASH1: JB 01H,FLASH2 ;01H位為1時,轉(zhuǎn)小時熄滅控制
MOV 72H,7AH ;01H位為0時,"熄滅符"數(shù)據(jù)放入分
MOV 73H,7AH ;顯示單元(72H-73H),將不顯示分數(shù)據(jù)
MOV 74H,78H
MOV 75H,79H
AJMP INTT1OUT ;轉(zhuǎn)中斷退出
FLASH2: MOV 72H,76H ;01H位為1時,"熄滅符"數(shù)據(jù)放入小時
MOV 73H,77H ;顯示單元(74H-75H),小時數(shù)據(jù)將不顯示
MOV 74H,7AH
MOV 75H,7AH
AJMP INTT1OUT ;轉(zhuǎn)中斷退出
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 加1子 程 序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
評論