XRL LCD_buff, #020H ;Flashing hour-minute interval:
XRL LCD_buff, #002H ;Flashing minute-second interval:
CPL B_Second
JNB B_Second, L_Main_Loop
INC second
MOV A, second
CJNE A, #60, L_Main_Load
MOV second, #0 ; reach to 1 minute
INC minute
MOV A, minute
CJNE A, #60, L_Main_Load
MOV minute, #0;
INC hour
MOV A, hour
CJNE A, #24, L_Main_Load
MOV hour, #0 ;reach to 24 hours
L_Main_Load:
LCALL F_LoadRTC ;Display time
LJMP L_Main_Loop
;************************************************************
F_Timer0_init:
CLR TR0 ; Stop counting
ANL TMOD, #0f0H
SETB ET0 ; Enable interrupt
ORL TMOD, #0 ; Working mode 0: 16-bit auto-reload
ANL INT_CLKO, #NOT 0x01 ; Does not output clock
ORL AUXR, #0x80 ; 1T mode
MOV TH0, #HIGH (-22118) ; 2ms
MOV TL0, #LOW (-22118) ;
SETB TR0 ; Start operation
RET
;************************************************************
F_Timer0_Interrupt: ;Timer0 1ms interrupt function
PUSH PSW ;push PSW into stack
PUSH ACC ;push ACC into stack
PUSH AR0
PUSH AR7
PUSH DPH
PUSH DPL
LCALL F_LCD_scan
SETB B_2ms
POP DPL
POP DPH
POP AR7
POP AR0
POP ACC ;pop ACC from stack
POP PSW ;pop PSW from stac
RETI
;******************** Display time **************************
F_LoadRTC:
MOV R6, #1 ;LCD_load(1,hour/10);
MOV A, hour