Rule #1: Keep Interrupt Service Routine as short as possible. in your ISR you don't want to use stuff like LCDOUT of spin inside 'till something happen. You check what you have to check, you set some variable/flags, and you get-out of there. In your main loop, or elsewhere, you wait and waste all time you want, as long as it's not going to messed the timer interrupt... unless you want to use Darrel's instant interrupts OR asm interrupts.