Found the culprit. It was the T1CON Resgister set up:
movlw b'01001001'
movwf T1CON
This made the PIC try and run off Timer1 Oscillator, even though it was set to IntRC osc. bad bad bad. Instead set bit "0" in the T1CON Reg (see code).
Here's the updated code. Although I still can't get the interrupt to work. I've simplified it to make it easier to read and got rid of some irrelevant sections:
;**********************************************************************
; This file used as an Timer1 interrupt example. *
; Uses 1 x LED on Port B Pin 4. *
; PIC16F88 is used. Uses interrupt on overflow for 16bit Timer1 *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; Internal RC Clock Used. *
; *
;**********************************************************************
; *
; Filename: 16F88_Interrupt_Timer1.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
; *
;**********************************************************************
; *
; Files required: P16F88.INC *
; *
;**********************************************************************
; *
; Notes: *
; *
; *
; *
; *
;**********************************************************************
list p=16F88 ; list directive to define processor
#include <p16F88.inc> ; processor specific variable definitions
ERRORLEVEL 0, -302 ;suppress bank selection messages
__CONFIG _CONFIG1, _CP_OFF & _WDT_OFF & _LVP_OFF & _INTRC_IO & _MCLR_OFF
; '__CONFIG' directive is used to embed configuration data within .asm file.
; "Copy Protect" and "Watch Dog Timer" has been turned off, "Internal RC Oscilator" enabled.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
; org is the origin - PIC start up begins from here. NOTE: Tabbed once across to remove from column 1
Org 0
goto Start
;Org 4 is where the program goes when interrupt is detected.
Org 4
goto ISR
;*****Set up the Variables****
W_TEMP equ 23h
STATUS_TEMP equ 24h
TMR0_TEMP equ 25h
PORTB_TEMP equ 26h
Start
;****Set up the port****
bsf STATUS,5 ;Switch to Bank 1
;THESE THREE INSTRUCTIONS ARE USED TO SET CLOCK TO 31.25kHZ SETTING (INTERNAL)
;POSSIBLY UNNECESSARY? SINCE THE INTRC IS SET AT 31.25kHz anyway.
bcf OSCCON,6
bcf OSCCON,5
bcf OSCCON,4
;This is to make sure that RA2 & RA3 can be used as Digital outputs.
CLRF ANSEL
clrf TRISB ;Port B to outputs by setting to "ZERO".
clrf TRISA ;Port A to outputs.
bcf STATUS,5 ;Switch back to Bank 0
;Clear the Ports
clrf PORTA
clrf PORTB
;Now set up T1CON. This is the Timer1 control register.
;Prescaler is 1:1. see p.74 of datasheet.
bsf T1CON,TMR1ON ;Turn the Timer1 on.
;interrupts set up for Timer1 overflow
bsf INTCON,GIE ;Enable Global Interrupt, bit 7
bsf INTCON,PEIE ;Enable Peripheral Interrupts
;Enable Timer1 Overflow Interrupt
bsf PIE1,TMR1IE ; Peripheral Interrupt Enable Register. Enable Timer1 interrupt (bit 0).
;Reset Interrupt flag..
bcf PIR1,TMR1IF ;Reset Timer1 Overflow Interrupt Flag
;Set LED_OUT
bsf PORTB,4 ; Turn on LED
;****Start****
Main
bsf PORTB,4 ; Turn on LED
Goto Main
;Interrupt Service Routine
ISR
movwf W_TEMP ;Save W
swapf STATUS,W
movwf STATUS_TEMP ;Save STATUS
;movf TMR0,W
;movwf TMR0_TEMP ;Save TMR0
;movf PORTB,W
;movwf PORTB_TEMP ;Save PORTB
;Routine Goes here...Hofefully TURN LED OFF!
Loop nop
bcf PORTB,4
goto Loop
;Restore all values...
swapf STATUS_TEMP,W
movwf STATUS
;movf TMR0_TEMP,W
;movwf TMR0
;movf PORTB_TEMP,W
;movwf PORTB
movf W_TEMP,W
;Reset Interrupt..
bcf PIR1,TMR1IF ;Reset Timer1 Overflow Interrupt Flag
;..and Return
retfie
End