;timer1 in CCP mode
;developer: ????
;for PIC: 16f877a
;
processor 16f877a
include "p16f877a.inc"
errorlevel -302, -207;supress error message 302
__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC
cblock 0x20
W_TEMP
STATUS_TEMP
PCLATH_TEMP
endc
org 0x00
goto main
org 0x04
goto ISR
init
bsf STATUS,RP0; select bank1
clrf TRISB; all pins outputs
bcf STATUS,RP0; bank0
clrf PORTB;all output pins low
movlw b'00001001';timer1 osc. on
movwf T1CON
movlw b'00001011'
movwf CCP1CON
movlw .40;clear timer1 on 40
movwf CCPR1L
clrf CCPR1H
bcf PIR1,CCP1IF
bsf STATUS,RP0; bank1
bsf PIE1, CCP1IE;enable ccp interrupt
bsf INTCON, PEIE;pherpheral interrupts
bsf INTCON, GIE;enable global interrupts
bcf STATUS,RP0;back to bank0
clrf TMR1L
clrf TMR1H
retlw 0x00
main
call init
loop
goto loop
ISR
swapf STATUS,W
movwf STATUS_TEMP
movlw 0x01
xorwf PORTB,f;toggle
exit
swapf STATUS_TEMP,W
movwf STATUS
bcf PIR1,CCP1IF
retfie
end