Assuming you are using the 4 meg internal oscillator, I would use timer2 setup with prescaler 4, postscaler 10 and PR2=249 you do this by doint,
Code:
movlw 0b01001101
movwf T2CON
movlw .249
bsf STATUS,RP0
movwf PR2
bsf PIE1,TMR2IE
bcf STATUS,RP0
movlw 0xc0
movwf INTCON
This will then rollover every 10mS (100Hz) and generate an interrupt.
A typical interrupt would be,
Code:
interrupt movwf int_work
swapf STATUS,W
movwf int_status
bcf STATUS,RP0
bcf STATUS,RP1
bcf PIR1,TMR2IF
swapf int_status,W
movwf STATUS
swapf int_work,F; swap to file
swapf int_work,W; swap to work
retfie
In this interrupt you would use a counter and if you needed 0.5 seconds between events you would count to (or from) 50.
Mike.