利用AT89C2051制作的6位電子鐘
A,@R0 ;取當前計時單元數(shù)據(jù)到A
DEC R0 ;指向前一地址
SWAP A ;A中數(shù)據(jù)高四位與低四位交換
ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位
ADD A,#01H ;A加1操作
DA A ;十進制調(diào)整
MOV R3,A ;移入R3寄存器
ANL A,#0FH ;高四位變0
MOV @R0,A ;放回前一地址單元
MOV A,R3 ;取回R3中暫存數(shù)據(jù)
INC R0 ;指向當前地址單元
SWAP A ;A中數(shù)據(jù)高四位與低四位交換
ANL A,#0FH ;高四位變0
MOV @R0,A ;數(shù)據(jù)放入當削地址單元中
RET ;子程序返回
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 清零程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;對計時單元復零用
CLR0: CLR A ;清累加器
MOV @R0,A ;清當前地址單元
DEC R0 ;指向前一地址
MOV @R0,A ;前一地址單元清0
RET ;子程序返回
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 時鐘調(diào)整程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;當調(diào)時按鍵按下時進入此程序
SETMM: CLR ET0 ;關(guān)定時器T0中斷
CLR TR0 ;關(guān)閉定時器T0
LCALL DL1S ;調(diào)用1秒延時程序
JB P3.7,CLOSEDIS ;鍵按下時間小于1秒,關(guān)閉顯示(省電)
MOV R2,#06H ;進入調(diào)時狀態(tài),賦閃爍定時初值
SETB ET1 ;允許T1中斷
SETB TR1 ;開啟定時器T1
SET2: JNB P3.7,SET1 ;P3.7口為0(鍵未釋放),等待
SETB 00H ;鍵釋放,分調(diào)整閃爍標志置1
SET4: JB P3.7,SET3 ;等待鍵按下
LCALL DL05S ;有鍵按下,延時0.5秒
JNB P3.7,SETHH
評論