PIC18F2450/4450
EXAMPLE 11-1:
IMPLEMENTING A REAL-TIME CLOCK USING A TIMER1 INTERRUPT SERVICE
RTCinit
MOVLW
MOVWF
CLRF
MOVLW
MOVWF
CLRF
80h
; Preload TMR1 register pair
; for 1 second overflow
TMR1H
TMR1L
b’00001111’
T1OSC
secs
; Configure for external clock,
; Asynchronous operation, external oscillator
; Initialize timekeeping registers
;
CLRF
mins
MOVLW
MOVWF
BSF
d’12’
hours
PIE1, TMR1IE ; Enable Timer1 interrupt
RETURN
RTCisr
BSF
TMR1H, 7
; Preload for 1 sec overflow
BCF
PIR1, TMR1IF ; Clear interrupt flag
INCF
secs, F
d’59’
secs
; Increment seconds
; 60 seconds elapsed?
MOVLW
CPFSGT
RETURN
CLRF
; No, done
secs
; Clear seconds
; Increment minutes
; 60 minutes elapsed?
INCF
mins, F
d’59’
mins
MOVLW
CPFSGT
RETURN
CLRF
; No, done
mins
hours, F
d’23’
; clear minutes
; Increment hours
; 24 hours elapsed?
INCF
MOVLW
CPFSGT
RETURN
MOVLW
MOVWF
RETURN
hours
; No, done
; Reset hours to 1
d’01’
hours
; Done
TABLE 11-2: REGISTERS ASSOCIATED WITH TIMER1 AS A TIMER/COUNTER
Reset
Values
on page
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
INTCON
PIR1
GIE/GIEH PEIE/GIEL TMR0IE
INT0IE
TXIF
RBIE
—
TMR0IF
CCP1IF
CCP1IE
CCP1IP
INT0IF
TMR2IF
TMR2IE
TMR2IP
RBIF
49
51
51
51
50
50
50
—
—
—
ADIF
ADIE
ADIP
RCIF
RCIE
RCIP
TMR1IF
TMR1IE
TMR1IP
PIE1
TXIE
TXIP
—
IPR1
—
TMR1L
TMR1H
T1CON
Timer1 Register Low Byte
TImer1 Register High Byte
RD16
T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
Legend: — = unimplemented, read as ‘0’. Shaded cells are not used by the Timer1 module.
© 2006 Microchip Technology Inc.
Advance Information
DS39760A-page 119