PIC18F452 timer0 not accurate
Probably because you're not clearing the Timer0 Interrupt Flag in your interrupt handler.  

You need to have a TMR0IF_bit = 0; otherwise your code will just stay stuck in the interrupt, repeating it over and over.