RTCinit banksel TMR1H
movlw 0x80 ; Preload TMR1 register pair
movwf TMR1H ; for 1 second overflow
clrf TMR1L
movlw b’00001111’ ; Configure for external clock,
movwf T1CON ; Asynchronous operation, external oscillator
clrf secs ; Initialize timekeeping registers
clrf mins
movlw .12
movwf hours
banksel PIE1
bsf PIE1,TMR1IE ; Enable Timer1 interrupt
return
RTCisr banksel TMR1H
bsf TMR1H,7 ; Preload for 1 sec overflow
bcf PIR1,TMR1IF ; Clear interrupt flag
incf secs,F ; Increment seconds
movf secs, w
sublw .60
btfss STATUS,Z ; 60 seconds elapsed?
return ; No, done
clrf seconds ; Clear seconds
incf mins,f ; Increment minutes
movf mins, w
sublw .60
btfss STATUS,Z ; 60 seconds elapsed?
return ; No, done
clrf mins ; Clear minutes
incf hours,f ; Increment hours
movf hours, w
sublw .24
btfss STATUS,Z ; 24 hours elapsed?
return ; No, done
clrf hours ; Clear hours
return ;