Hola dj_valle, si cada ves que el TMR0 se desborda y la interrupción esta activa el micro deja de ejecutar el programa principal y salta a la dirección N° 4 en la memoria de programa, luego de esta posición de memoria por lo general tienes una función GOTO que redirecciona a la rutina a ejecutar en caso de desbordamiento, ej.
org 04h
goto REFRESCAR_DISPLAY (nombre de la rutina a ejecutar)
Los demás TMR también disponen de interrupciones pero en el caso del TMR2 este las usa para las funciones de CCP, PWM, etc. por lo cual el programa principal no se interrumpe.
La otra forma de la cual dispones para presentar datos en el display es la siguiente:
*En una subrutina colocas todos los comandos para que el display represente lo que se desea, a esta SUB la debes terminas con el comando RETURN.
*Dentro del programa principal y de todas las Subrutinas de este colocas de forma periódica un comando CALL el cual llamara a la rutina del display.
*Deberás de tener en cuenta que cada ves que se llega al CALL del display el programa o subprograma que se este corriendo se interrumpe para que el display se refresque de la forma indicada, luego de esto el micro seguirá ejecutando el programa desde exactamente donde lo había dejado.
Con este método el programa se alarga en unas cuantas direcciones de memoria, pero tienes la ventaja de que sabrás el tiempo exacto que te llevará hacer tal rutina y no usas un TMR, ni la interrupción por lo cual las tendrás libre para realizar otra función.
Pero de todas formas como tu comentas que el programa es demasiado largo creo que te convendría utilizar el TMR1 con lo cual te ahorraras un buen dolor de cabeza
Espero haberte ayudado, suerte en el emprendimiento.
Atte. CARLOS