Interrupts on these are easier than older 16F parts with the auto restore feature, but you need to make sure you're flipping the right bits to set everything up properly....
Try this.
Code:
ASM
__config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
__config _CONFIG2, _PLLEN_OFF & _LVP_OFF & _STVREN_OFF
ENDASM
DEFINE OSC 8
DEFINE INTHAND Tmr1Int
OSCCON= %01110000
GOTO Init ' jump over interrupt routine
ASM
Tmr1Int
; retfie auto-restores w, status, bsr, fsr and pclath
bcf T1CON,TMR1ON ; stop timer 1
bcf PIR1,TMR1IF ; clear over flow flag
movlw 0xBF ; load timer for 16,535 * 8 prescaler interrupt on 16 bit timer
movwf TMR1H ; load high byte
movlw 0x69
movwf TMR1L ; load low byte
bsf T1CON,TMR1ON ; re-enable timer 1
movlw 0x01
xorwf PORTB,f ; toggle RB0
retfie ; Return from interrupt
ENDASM
Init:
PORTB = 0
TRISB = 0
CM1CON0.7=0
CM2CON0.7=0
ANSELA = 0 ' all digital. A/D disabled
ANSELB = 0
PIR1 = 0 ' clear TMR1 int flag
PIE1 = %00000001 ' TMR1 int enabled
INTCON = %11000000 ' global & peripheral ints enabled
T1CON = %00110001 ' TMR1 1:8 prescale, timer1 on
Main:
HIGH 1
PAUSE 1000
LOW 1
PAUSE 1000
GOTO Main
END
Then check out DT_INTS-14 v1.00
Bookmarks