A few things to note.
ON INTERRUPT will not give "true" interrupts. What happens is the code will wait till something like a PAUSE XX is finished before going to the ISR. Many time ON INTERRUPT is good enough, as long as the timing is not "super" critical. ASM interrupts will give true results but hard to setup at times. When you get a handle on this you will want to look at DT's Instant Interrupts. Pretty easy to setup and will give you "TRUE" interrupts.
No matter what method you use you will want the ISR to be as short as possible.
Now for something that might help you...
This is a very useful program
http://www.picbasic.co.uk/forum/cont....-PICMultiCalc
Now look at Timer 1, I think this will work the best in your case. It is a 16 bit timer.
Set the pre-scaler to 1:16 and pre-load to 3036 and you should have very close to a 1 Hz interrupt.
Bookmarks