J4:
JB RESET,A1
LCALL DISPLAY SJMP
J4
;**************************************************** ;判断是否有控制键按下,是哪一个键按下 A1:
LCALL DISPLAY JNB JNB JNB
S_SET,S1 M_SET,S2 H_SET,S3
JNB S_SUB,SSUB JNB M_SUB,MSUB JNB H_SUB,HSUB
JNB LJMP
RESET,S4 A1
;去抖动
S1: LCALL DELAY
JB INC
S_SET,A1 SECOND
;秒值加1
MOV A,SECOND CJNE MOV LJMP
A,#60,J0 ;判断是否加到60秒 SECOND,#0 J0
S2: LCALL DELAY
JB
M_SET,A1 MINUTE
;分钟值加1
K1: INC
MOV A,MINUTE CJNE MOV LJMP
A,#60,J1 ;判断是否加到60分 J1
MINUTE,#0
S3: LCALL DELAY
JB H_SET,A1 ;H_SRT为1则转移 HOUR A,HOUR
;小时值加1
K2: INC
MOV
CJNE A,#12,K3 CPL P2.7 CPL P2.6
K3: CJNE
MOV
A,#13,J2 ;判断是否加到12小时
HOUR,#1
LJMP J2
S4: LCALL DELAY
JB RESET,A1 MOV HOUR,#12 MOV MINUTE,#0 MOV SECOND,#0
JB RESET,A1 LJMP J2
SSUB: LCALL DELAY JB S_SUB,FUZHU DEC SECOND MOV A,SECOND
CJNE A,#0FFH,JS_SUB MOV MINUTE,#59 SJMP JS_SUB MSUB: LCALL DELAY
JB M_SUB,FUZHU DEC MINUTE MOV A,MINUTE CJNE A,#0FFH,JM_SUB MOV MINUTE,#59
SJMP JM_SUB HSUB: LCALL DELAY
JB H_SUB,FUZHU DEC HOUR MOV A,HOUR CJNE A,#00H,JH_SUB MOV HOUR,#12
SJMP JH_SUB JS_SUB: JB S_SUB,FUZHU
LCALL DISPLAY SJMP
JS_SUB
JM_SUB: JB M_SUB,FUZHU LCALL DISPLAY SJMP JM_SUB JH_SUB: JB H_SUB,FUZHU LCALL DISPLAY SJMP JH_SUB FUZHU:LJMP A1
;*********************************************** ;定时器中断服务程序,对秒,分钟和小时的计数 INT_T0: MOV
MOV INC MOV CJNE INC MOV MOV CJNE
TH0,#(65536-50000)/256 TL0,#176
TCNT
A,TCNT
;计时1秒
A,#20,RETUNE SECOND
TCNT,#0 A,SECOND
A,#60,RETUNE
INC MINUTE MOV SECOND,#0 MOV
A,MINUTE
CJNE A,#60,RETUNE INC HOUR MOV MINUTE,#0 MOV
A,HOUR
MOV ZHUAN,HOUR CPL DU LCALL DELAY1S LCALL DELAY1S CPL DU LCALL DELAY1S LCALL DELAY1S LCALL DELAY1S LCALL DELAY1S CJNE A,#13,RETUNE CPL P2.7 CPL P2.6 MOV HOUR,#1 MOV MINUTE,#0 MOV SECOND,#0 MOV
TCNT,#0 RETUNE:
RETI
DELAY1S: MOV DL1: MOV R4,#48 DL2: NOP
R3,#5000

