; 20ms interrupt using TMR2 with 8MHz crystal
list p=16F877A
include <p16F877A.inc>
__CONFIG _HS_OSC&_WDT_OFF&_LVP_OFF
Jiffy equ 0x20
org 0x00
goto Init
org 0x04
IRQ btfss PIR1, TMR2IF
goto Exit
incf Jiffy ; 20ms interval
bcf PIR1, TMR2IF
Exit retfie
; 8MHz OSC / 4 / 16 / 250 / 10 = 50 (20ms period)
Init movlw b'01001111' ; TMR2 ON
movwf T2CON ; 1:16pre , 1:10post
bsf STATUS,RP0 ;b1
movlw .249
movwf PR2 ;b1 249 period
bsf PIE1, TMR2IE ;b1 enable TMR2 IRQ
bcf STATUS,RP0
movlw 0xC0
movwf INTCON
goto $
END