Con respecto a los If anidados creo que un diagrama de flujo va a ayudar:
(http://img529.imageshack.us/img529/1032/diagramadeflujo.jpg)
Espero no haberme equivocado :mrgreen: Como ves realizando un diagrama de flujo es más fácil descifrar el código.
El temporizador TMR0:
El Timer 0 es un contador / temporizador de 8 bits. El registro principal de este módulo es TMR0. Este registro se incrementa continuamente a una frecuencia seleccionable manejada por un preescalador y el reloj interno Fosc/4 (modo temporizador) o bien, por un preescalador y una señal externa (modo contador).
Modo Temporizador: En este modo, el contenido del registro TMR0 se incrementará a la frecuencia Fcy (Fosc/4) dividida de acuerdo al preescalador. Al ocurrir un desbordamiento (TMR0 pasa de 255 a 0) se setea la bandera T0IF, y se ejecutará la interrupción si esta habilitada.