
PIC18F1230/1330
2009 Microchip Technology Inc.
DS39758D-page 115
EXAMPLE 13-1:
IMPLEMENTING A REAL-TIME CLOCK USING A TIMER1 INTERRUPT SERVICE
TABLE 13-2:
REGISTERS ASSOCIATED WITH TIMER1 AS A TIMER/COUNTER
RTCinit
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
BSF
PIE1, TMR1IE
; Enable Timer1 interrupt
RETURN
RTCisr
BSF
TMR1H, 7
; Preload for 1 sec overflow
BCF
PIR1, TMR1IF
; Clear interrupt flag
INCF
secs, F
; Increment seconds
MOVLW
.59
; 60 seconds elapsed?
CPFSGT
secs
RETURN
; No, done
CLRF
secs
; Clear seconds
INCF
mins, F
; Increment minutes
MOVLW
.59
; 60 minutes elapsed?
CPFSGT
mins
RETURN
; No, done
CLRF
mins
; clear minutes
INCF
hours, F
; Increment hours
MOVLW
.23
; 24 hours elapsed?
CPFSGT
hours
RETURN
; No, done
MOVLW
.01
; Reset hours to 1
MOVWF
hours
RETURN
; Done
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values on
Page:
INTCON
GIE/GIEH
PEIE/GIEL
TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
PIR1
—
ADIF
RCIF
TXIF
CMP2IF
CMP1IF
CMP0IF TMR1IF
PIE1
—
ADIE
RCIE
TXIE
CMP2IE
CMP1IE
CMP0IE TMR1IE
IPR1
—
ADIP
RCIP
TXIP
CMP2IP
CMP1IP
CMP0IP TMR1IP
TMR1L
Timer1 Register Low Byte
TMR1H
Timer1 Register High Byte
T1CON
RD16
T1RUN
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
Legend:
— = unimplemented, read as ‘0’. Shaded cells are not used by the Timer1 module.