;******************************************************
;*標題: 單片機遙控電子鍾程序
;*文件:
;*版本: 1.0
;*作者: 東(dong) 哥
;*郵箱: picavr@163.com QQ: 279068079
;*******************************************************
K1 BIT P3.2 ;切換當前時間,開機時間,關(guan) 機時間(P3.2口定義(yi) 為(wei) K1)
K2 BIT P3.4 ;調時鍵K2(P3.4 口定義(yi) 為(wei) K2)
K3 BIT P3.5 ;調分鍵K3(P3.5 口定義(yi) 為(wei) K3)
K4 BIT P3.6 ;啟動鍵K4(P3.6 口定義(yi) 為(wei) K4)
SI BIT P3.3 ;遙控輸入口定義(yi) 為(wei) SI
C_HOUR EQU 24H ;當前時的地址定義(yi)
C_MINUTE EQU 25H ;當前分的地址定義(yi)
C_SECOND EQU 26H ;當前秒的地址定義(yi)
ON_HOUR EQU 27H ;開機時的地址定義(yi)
ON_MINUTE EQU 28H ;開機分的地址定義(yi)
OFF_HOUR EQU 29H ;關(guan) 機時的地址定義(yi)
OFF_MINUTE EQU 30H ;關(guan) 機分的地址定義(yi)
WORK_MODE EQU 34H ;當前時間,開機時間,關(guan) 機時間選擇
USE_CODE EQU 35H ;用戶數據代碼地址定義(yi)
DATA_CODE EQU 36H ;數據代碼地址定義(yi)
COUNT EQU 50H ;計數地址定義(yi)
;******************************************************************************
ORG 0000H ;主程序入口地址
AJMP MAIN ;轉主程序
ORG 0003H ;外中斷0中斷入口
AJMP INTEX0 ;跳至INTEX0執行中斷服務程序
ORG 000BH ;定時器T0中斷入口地址
AJMP WTO ;跳至定時器T0執行中斷服務程序
ORG 0013H ;外中斷1中斷入口
LJMP INTEX1 ;跳至INTEX1執行中斷服務程序
ORG 001BH ;定時器T1中斷入口地址
RETI ;中斷返回(不開中斷)
ORG 0023H ;串行口中斷入口地址
RETI ;中斷返回(不開中斷)
ORG 002BH ;定時器T2中斷入口地址
RETI ;中斷返回(不開中斷)
;******************************************************************************
;* 主程序 *
;******************************************************************************
ORG 0030H
MAIN: MOV SP,#50H ;堆棧指針入口地址
CLR 00H ;清開始調整標誌
CLR 01H ;清當前時間標誌
CLR 02H ;清開機時間標誌
CLR 03H ;清關(guan) 機時間標誌
CLR 04H ;遙控用戶識別標誌
MOV 21H,#0 ;10MS定時中斷計數器初值
MOV 22H,#0 ;500MS定時中斷計數器初值
MOV C_HOUR,#0
MOV C_MINUTE,#0
MOV C_SECOND,#0 ;置當前時間為(wei) 00:00:00
MOV ON_HOUR,#06H
MOV ON_MINUTE,#00H ;置開機時間為(wei) 06:00
MOV OFF_HOUR,#12H
MOV OFF_MINUTE,#00H ;置關(guan) 機時間為(wei) 12:00
MOV WORK_MODE,#0 ;
MOV USE_CODE,#00H ;用戶數據代碼為(wei) 00
MOV DATA_CODE,#00H ;數據代碼為(wei) 00
MOV R6,#8 ;數據為(wei) 8位
MOV TH0,#0D8H ;T0 10ms定時初值
MOV TL0,#0F0H ;T0 10ms定時初值
MOV TH1,#00H ;T1 定時初值為(wei) 00
MOV TL1,#00H ;T1 定時初值為(wei) 00
MOV TMOD,#11H ;T0 方式1設定
MOV IE,#00H ;關(guan) 所有中斷
CLR A ;
DEC A ;A為(wei) #0FFH
MOV P0,A ;P1-P3口置1
MOV P1,A ;
MOV P2,A ;
MOV P3,A ;
SETB EA ;開CPU中斷
SETB EX1 ;開外中斷
SETB EX0 ;開INT0中斷請求
CLR ET0 ;禁止T0中斷
CLR TR0 ;禁止T0計數
CLR IT0 ;置INT0為(wei) 電平觸發
SETB IT1 ;置INT1為(wei) 邊沿觸發
SETB PX1 ;置INT1為(wei) 最高級中斷
SETB P3.7 ;置開關(guan) 輸出控製端口P3.7為(wei) "1"
M: MOV A,C_HOUR
CJNE A,ON_HOUR,OFF_TIME
MOV A,C_MINUTE ;判斷當前時間是否等於(yu) 開機時間
CJNE A,ON_MINUTE,OFF_TIME
CLR P3.7 ;置開關(guan) 輸出控製端口P3.7為(wei) "0"
AJMP NEXT
OFF_TIME: MOV A,C_HOUR
CJNE A,OFF_HOUR,NEXT
MOV A,C_MINUTE
CJNE A,OFF_MINUTE,NEXT;判斷當前時間是否等於(yu) 關(guan) 機時間
SETB P3.7 ;置開關(guan) 輸出控製端口P3.7為(wei) "1"
NEXT: JNB 01H,ONDISP
ACALL DISP1 ;調當前時間顯示子程序
ONDISP: JNB 02H,OFFDISP
ACALL DISP2 ;調開機時間顯示子程序
OFFDISP: JNB 03H,M
ACALL DISP3 ;調關(guan) 機時間顯示子程序
AJMP M ;轉 M 循環
NOP ;PC值出錯處理
NOP
NOP
AJMP MAIN ;重新初始化
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;顯示代碼數據
DB 92H,82H,0F8H,80H,90H
;*******************************************************************************************************
;* 當前時間顯示子程序 *
;*******************************************************************************************************
DISP1: MOV R0,C_HOUR
MOV DPTR,#TAB ;筆劃段碼表指針
MOV A,R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.0
ACALL DL ;送顯時高位
SETB P2.0
MOV A,R0
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.1
ACALL DL
SETB P2.1 ;送顯時低位
MOV R1,C_MINUTE
MOV A,R1
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
ACALL DL
SETB P2.2 ;送顯分高位
MOV A,R1
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
ACALL DL
SETB P2.3 ;送顯分低位
MOV R2,C_SECOND
MOV A,R2
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
ACALL DL
SETB P2.4 ;送顯秒高位
MOV A,R2
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.5
ACALL DL
SETB P2.5 ;送顯秒低位
RET
;*************************************************************************************************************
;* 定時器T0中斷服務子程序 *
;*************************************************************************************************************
WTO: PUSH ACC ;保護現場
PUSH PSW
MOV A,#0B7H ;中斷響應時間同步修正
ADD A,TL0 ;低8位初值修正
MOV TL0,A ;重裝初值(低8位修正值)
MOV A,#0F0H ;高8位初值修正
ADDC A,TH0 ;
MOV TH0,A ;重裝初值(高8位修正值)
INC 21H
MOV A,21H
CJNE A,#50,TORETI ;10mS * 50mS=0.5S
MOV 21H,#0
INC 22H
MOV A,22H
CJNE A,#2,TORETI ;0.5S * 2 =1S
MOV 22H,#0
CPL P0.0 ;秒指示
CPL P0.1
MOV A,#01H
ADD A,C_SECOND
DA A
MOV C_SECOND,A ;當前秒加1
CJNE A,#60H,TORETI ;為(wei) 60嗎(是秒清0,否返回)
MOV C_SECOND,#0
MOV A,#01H
ADD A,C_MINUTE
DA A
MOV C_MINUTE,A ;當前分加1
CJNE A,#60H,TORETI ;為(wei) 60嗎(是分清0,否返回)
MOV C_MINUTE,#0
MOV A,#01H
ADD A,C_HOUR
DA A
MOV C_HOUR,A ;當前時加1
CJNE A,#24H,TORETI ;為(wei) 24嗎(是時清0,否返回)
MOV C_HOUR,#0
TORETI: POP PSW ;恢複現場
POP ACC
RETI
;**************************************************************************************************
; 開機時間顯示子程序 *
;**************************************************************************************************
DISP2: MOV R0,ON_HOUR
MOV DPTR,#TAB ;筆劃段碼表指針
MOV A,R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.0
ACALL DL ;送顯時高位
SETB P2.0
MOV A,R0
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.1
ACALL DL ;送顯時低位
SETB P2.1
MOV R1,ON_MINUTE
MOV A,R1
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
ACALL DL ;送顯分高位
SETB P2.2
MOV A,R1
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
ACALL DL ;送顯分低位
SETB P2.3
RET
;*************************************************************************************************
; 關(guan) 機時間顯示子程序 *
;*************************************************************************************************
DISP3: MOV R0,OFF_HOUR
MOV DPTR,#TAB ;筆劃段碼表指針
MOV A,R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.0
ACALL DL ;送顯時高位
SETB P2.0
MOV A,R0
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.1
ACALL DL ;送顯時低位
SETB P2.1
MOV R1,OFF_MINUTE
MOV A,R1
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
ACALL DL ;送顯分高位
SETB P2.2
MOV A,R1
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
ACALL DL ;送顯分低位
SETB P2.3
RET
;************************************************************************************************************
; 延時0.16ms子程序 *
;************************************************************************************************************
DL: MOV 31H,#80
DL2: DJNZ 31H,DL2
RET
;****************************************************************************************************
; 延時10MS子程序,用於(yu) 消除按鍵抖動而產(chan) 生誤動作 *
;****************************************************************************************************
DEL: MOV 32H,#200
DEL1: MOV 33H,#250
DEL2: DJNZ 33H,DEL2
DJNZ 32H,DEL1
RET
;*************************************************************************************************************
; 按鍵中斷處理子程序 *
;*************************************************************************************************************
INTEX0: PUSH ACC ;保護現場
PUSH PSW
CLR EX0 ;關(guan) 外部中斷INT0
JB K1,$ ;判斷K1按下否,未按則等待,K1按下
;LED1亮, LED2熄滅
DISP1_0: ACALL DISP1 ;
JNB K1,DISP1_0 ;等待K1釋放
ACALL DEL ;K1按下開機指示LED1亮,LED2熄滅
PH4: CLR P3.1 ;LED1亮
SETB P3.0 ;LED2熄滅
PH0: ACALL DISP1 ;調當前時間顯示子程
JB K2,PH01 ;判K2按下否,未按則轉到判K3
DISP1_1: ACALL DISP1 ;
JNB K2,DISP1_1 ;等待K2釋放
ACALL DEL
MOV R0,C_HOUR
MOV A,#01H
ADD A,R0
DA A
MOV C_HOUR,A ;當前時間時加1
CJNE A,#24H,PH0 ;超過24嗎(超過清0)
MOV C_HOUR,#0
PH01: JB K3,PH1 ;判K3按下否,未按則轉判K4
DISP1_2: ACALL DISP1 ;
JNB K3,DISP1_2 ;等待K3釋放
ACALL DEL
MOV R0,C_MINUTE
MOV A,#01H
ADD A,R0
DA A
MOV C_MINUTE,A ;當前時間分加1
CJNE A,#60H,PH0 ;超過60嗎(超過清0)
MOV C_MINUTE,#0
PH1: JB K4,PH10 ;判K4按下否,未按則轉到判K1
DISP1_3: ACALL DISP1 ;
JNB K4,$ ;等待K4釋放
ACALL DEL
AJMP TEND ;K4按下,轉啟動
PH10: JB K1,PH0 ;判K1按下否,未按則再
DISP1_4: ACALL DISP1 ;
JNB K1,DISP1_4 ;等待K1釋放
ACALL DEL ;K1按下開機指示LED1熄滅,LED2亮
SETB P3.1 ;LED1熄滅
CLR P3.0 ;LED2亮
PH2: ACALL DISP2 ;調開機時間顯示子程序
JB K2,PH201 ;判K2按下否,未按則轉到判K3
DISP2_1: ACALL DISP2 ;
JNB K2,DISP2_1 ;等待K2釋放
MOV R0,ON_HOUR
MOV A,#01H
ADD A,R0
DA A
MOV ON_HOUR,A ;開機時間時加1
CJNE A,#24H,PH2 ;超過24嗎(超過清0)
MOV ON_HOUR,#0
PH201: JB K3,PH210 ;判K3按下否,未按則轉判K4
DISP2_2: ACALL DISP2 ;
JNB K3,DISP2_2 ;等待K3釋放
ACALL DEL
MOV R0,ON_MINUTE
MOV A,#01H
ADD A,R0
DA A
MOV ON_MINUTE,A ;開機時間分加1
CJNE A,#60H,PH2 ;超過60嗎(超過清0)
MOV ON_MINUTE,#0
PH210: JB K1,PH2 ;判K1按下否,未按則再
DISP2_3: ACALL DISP2 ;
JNB K1,DISP2_3 ;等待K1釋放
ACALL DEL ;K1按下關(guan) 機指示LED1. LED2亮
CLR P3.0 ;LED1亮
CLR P3.1 ;LED2亮
PH3: ACALL DISP3 ;調關(guan) 機時間顯示子程序
JB K2,PH301 ;判K2按下否,未按則轉到判K3
DISP3_1: ACALL DISP3 ;
JNB K2,DISP3_1 ;等待K2釋放
ACALL DEL
MOV R0,OFF_HOUR
MOV A,#01H
ADD A,R0
DA A
MOV OFF_HOUR,A ;關(guan) 機時間時加1
CJNE A,#24H,PH3 ;超過24嗎(超過清0)
MOV OFF_HOUR,#0
PH301: JB K3,PH310 ;判K3按下否,未按則轉判K4
DISP3_2: ACALL DISP3 ;
JNB K3,DISP3_2 ;等待K3釋放
ACALL DEL
MOV R0,OFF_MINUTE
MOV A,#01H
ADD A,R0
DA A
MOV OFF_MINUTE,A ;關(guan) 機時間分加1
CJNE A,#60H,PH3 ;超過60嗎(超過清0)
MOV OFF_MINUTE,#0
PH310: JB K1,PH3 ;判K1按下否,未按則再
DISP3_3: ACALL DISP3 ;
JNB K1,DISP3_3 ;等待K1釋放
ACALL DEL
AJMP PH4 ;轉當前時間調整
TEND: SETB EX0 ;開INT0中斷
SETB TR0 ;允許T0計數
SETB 01H ;置00H為(wei) 1,啟動計數
SETB ET0 ;允許T0中斷
SETB P3.7 ;置P3.7口為(wei) 1
POP PSW ;恢複現場
POP ACC
RETI ;中斷返回
;**********************************************************************
;;;;;;;;;;;;;;;;;;;;;;;;; 遙控接收程序 ;;;;;;;;;;;;;;;;;;;;;;;
;**********************************************************************
;采用中斷接收
INTEX1:
CLR EA ;
CLR TR1 ;
JNB SI,$ ;
NOP
NOP
JNB SI,$
SETB TR1 ;
MOV R2,TH1 ;取T0計數次數
MOV R3,TL1
MOV R4,#00H ;0096H~03B6H為(wei) 數據窗口0
MOV R5,#96H ;窗口0的下限
LCALL SUB0 ;計數值小於(yu) 00FAH嗎?
JC ERROUT ;<0096H,作廢
MOV R4,#03H ;窗口0的上限
MOV R5,#0B6H
MOV R2,TH1 ;取T0計數次數
MOV R3,TL1
LCALL SUB0 ;計數值大於(yu) 03B6H嗎?
JNC X1_01 ;>03B6,去看是否在1的窗口
CLR C ;在窗口0中,清C,移位時移入0
LJMP SET_CODE_0 ;去移位處理
X1_01: MOV R4,#04H ;窗口1的下限
MOV R5,#4CH ;044CH~073AH為(wei) 窗口1
MOV R2,TH1 ;取T0計數次數
MOV R3,TL1
LCALL SUB0 ;計數值小於(yu) 044CH嗎?
JC ERROUT ;<044CH,作廢
MOV R4,#07H ;窗口1的上限
MOV R5,#3AH ;#073A
MOV R2,TH1 ;取T1計數次數
MOV R3,TL1
LCALL SUB0 ;計數值大於(yu) #073AH嗎?
JNC ERROUT ;>073AH,作廢
SETB C ;在窗口1中,將C置1
SET_CODE_0:
JB 04H,NEXT ;
MOV A,USE_CODE ;
RLC A ;
MOV USE_CODE,A ;
DJNZ COUNT,ERROUT ;
MOV COUNT,#8 ;
MOV A,USE_CODE ;
CJNE A,#0E2H,ERROUT ;
SETB 04H ;
;**********************************************
ERROUT:
MOV TH1,#00H ;
MOV TL1,#00H ;
SETB TR1 ;
SETB EA ;
RETI ;
;*********************************************
NEXT:
MOV A,DATA_CODE ;
RLC A ;
MOV DATA_CODE,A ;
DJNZ R6,ERROUT ;
MOV R6,#8 ;
CLR 04H ;
;*********************************************
MOV A,DATA_CODE ;
CJNE A,#00H,CH1 ;
AJMP FUN1 ;
CH1: CJNE A,#10H,CH2 ;
AJMP FUN2 ;
CH2: CJNE A,#08H,CH3 ;
AJMP FUN3 ;
CH3: CJNE A,#80H,CH4 ;
AJMP FUN4 ;
CH4: CJNE A,#90H,CH5 ;
AJMP ERROUT ;
CH5: CJNE A,#88H,CH6 ;
AJMP ERROUT ;
CH6: CJNE A,#4H,CH7 ;
AJMP ERROUT ;
CH7: CJNE A,#50H,CH8 ;
CH8: AJMP ERROUT ;
;********************************************************
SUB0: CLR C ;減法子程序
MOV A,R3 ;被減數低位送A
SUBB A,R5 ;低位減
JNC X1_S1 ;沒進位,去處理高位減法
DEC R2 ;有進位,被減數高位減1
X1_S1: CLR C ;清C
MOV A,R2 ;被減數高位
SUBB A,R4 ;減被減數高位
RET ;返回
;*********************************************************************
;* 遙控切換當前時間,開機時間,關(guan) 機時間調整程序 *
;*********************************************************************
FUN1: CLR TR0 ;禁止T0計數
CLR ET0 ;禁止T0中斷
INC WORK_MODE ;時間選擇寄存器加"1"
MOV A,WORK_MODE
CJNE A,#01H,ONHOUR ;選擇寄存器為(wei) "1",轉開機調整標誌
SETB 00H ;置開始調整標誌為(wei) "1"
SETB 01H ;置當前時間標誌為(wei) "1"
CLR 02H ;清開機時間標誌
CLR 03H ;清關(guan) 機時間標誌
CLR P3.0 ;LED1亮
SETB P3.1 ;LED2滅
AJMP EXIT ;轉中斷退出
ONHOUR: CJNE A,#02H,OFFHOUR ;選擇寄存器為(wei) "2",轉關(guan) 機調整標誌
CLR 01H ;清當前時間標誌
SETB 02H ;置開機時間標誌為(wei) "1"
CLR 03H ;清關(guan) 機時間標誌
CLR P3.1 ;LED2亮
SETB P3.0 ;LED1滅
AJMP EXIT ;轉中斷退出
OFFHOUR: CJNE A,#03H,EXIT ;選擇寄存器為(wei) "3",不為(wei) 3轉中斷退出
MOV WORK_MODE,#0 ;時間選擇寄存器清0
CLR 01H ;清當前時間標誌
CLR 02H ;清開機時間標誌
SETB 03H ;置關(guan) 機時間標誌為(wei) "1"
CLR P3.0 ;LED1亮
CLR P3.1 ;LED2亮
;*******************************************************************
EXIT: LJMP ERROUT ;轉中斷退出
;*******************************************************************
; * 遙控調時程序 *
;*******************************************************************
FUN2: JNB 00H,EXIT ;(00H)等於(yu) 0,轉中斷退出
;(00H)等於(yu) 1,轉判(01)
JNB 01H,ONHOURADJ ;(01H)等於(yu) 0,轉開機 "時" 調整;
;(01H)等於(yu) 1,當前 "時" 調整
MOV R0,C_HOUR
MOV A,#01H
ADD A,R0
DA A
MOV C_HOUR,A ;當前時間"時"加1
CJNE A,#24H,EXIT ;超過24嗎(超過清0),不為(wei) 0中斷退出
MOV C_HOUR,#0
AJMP EXIT ;轉中斷退出
ONHOURADJ: JNB 02H,OFFHOURADJ ;(02H)等於(yu) 0,轉關(guan) 機 "時" 調整;
;(02H)等於(yu) 1,開機 "時" 調整
MOV R0,ON_HOUR
MOV A,#01H
ADD A,R0
DA A
MOV ON_HOUR,A ;開機時間"時"加1
CJNE A,#24H,EXIT ;超過24嗎(超過清0),不為(wei) 0中斷退出
MOV ON_HOUR,#0
AJMP EXIT ;轉中斷退出
OFFHOURADJ: JNB 03H,EXIT ;(03H)等於(yu) 0,轉中斷退出
;(03H)等於(yu) 1,關(guan) 機 "時" 調整
MOV R0,OFF_HOUR
MOV A,#01H
ADD A,R0
DA A
MOV OFF_HOUR,A ;關(guan) 機時間"時"加1
CJNE A,#24H,EXIT ;超過24嗎(超過清0),不為(wei) 0中斷退出
MOV OFF_HOUR,#0
AJMP EXIT ;轉中斷退出
;*******************************************************************
; * 遙控調分程序 *
;*******************************************************************
FUN3: JNB 00H,EXIT ;(00H)等於(yu) 0,轉中斷退出
;(00H)等於(yu) 1,轉判(01)
JNB 01H,ONMINUTEADJ ;(01H)等於(yu) 0,轉開機 "分" 調整;
;(01H)等於(yu) 1,當前 "分" 調整
MOV R0,C_MINUTE
MOV A,#01H
ADD A,R0
DA A
MOV C_MINUTE,A ;當前時間"分"加1
CJNE A,#60H,EXIT ;超過60嗎(超過清0),不為(wei) 0中斷退出
MOV C_MINUTE,#0
AJMP EXIT ;轉中斷退出
ONMINUTEADJ: JNB 02H,OFFMINUTEADJ;(02H)等於(yu) 0,轉關(guan) 機 "分" 調整;
;(02H)等於(yu) 1,開機 "分" 調整
MOV R0,ON_MINUTE
MOV A,#01H
ADD A,R0
DA A
MOV ON_MINUTE,A ;開機時間"分"加1
CJNE A,#60H,EXIT ;超過60嗎(超過清0),不為(wei) 0中斷退出
MOV ON_MINUTE,#0
AJMP EXIT ;轉中斷退出
OFFMINUTEADJ: JNB 03H,EXIT ;(03H)等於(yu) 0,轉中斷退出
;(03H)等於(yu) 1,關(guan) 機 "分" 調整
MOV R0,OFF_MINUTE
MOV A,#01H
ADD A,R0
DA A
MOV OFF_MINUTE,A ;關(guan) 機時間"分"加1
CJNE A,#60H,EXIT ;超過60嗎(超過清0),不為(wei) 0中斷退出
MOV OFF_MINUTE,#0
AJMP EXIT ;轉中斷退出
;*******************************************************************
; * 遙控啟動程序 *
;*******************************************************************
FUN4: SETB EX0 ;開INT0中斷
SETB TR0 ;允許T0計數
SETB ET0 ;允許T0中斷
SETB P3.7 ;置P3.7口為(wei) "1"
CLR 00H ;清開始調整標誌
SETB 01H ;置當前時間標誌為(wei) "1"
CLR 02H ;清開機時間標誌
CLR 03H ;清關(guan) 機時間標誌
MOV C_SECOND,#00H ;秒清0
MOV WORK_MODE,#00H ;時間選擇寄存器清0
LJMP EXIT ;轉中斷退出
;*******************************************************************
DELAY: MOV R0,#0FFH
DELAY1: DJNZ R0,DELAY1
RET ;返回
END ;程序結束