Hola Pablo.
Como tu proyecto debe ser muy exacto. Al usar la fórmula anterior, el Valor a cargar en TMR0 no te debe dar un número decimal, ya que si así fuera tendrías que redondear, produciéndose un pequeño error, que sería exponencial al aumentar el tiempo.
Para que te hagas una idea, mirando los números de Cucaracha:
Usando un cristal de 4MHz, un Preescaler de 256 y deseando una temporización de 50ms sale: Valor a cargar en TMR0=256-(0,050 · 4000000) / (4 · 256) = 256 - 195,3 = 60,7 Aproximaremos entonces a 61.
Si ahora de la fórmula te despejas la Temp y sustituyes el valor 61 en el TMR0 sale Temp = 49,92ms (no 50ms como hubiesemos deseado). Si este número lo multiplicas por 20 (50ms · 20=1000ms=1s) sale 998,4ms con lo que el error que se comete es de 1,6ms cada segundo. Retrasaría 1,6ms
Cada minuto el error sería de 96ms.
Cada hora el error sería de 5,7s.
Cada 24h el error sería de 2,28 minutos (retrasaría esos minutos).
Para una frecuencia de 4MHz los únicos Preescalers que dan números exactos son el Preescaler=4 y Preescaler=8 Por ejemplo con el Preescaler de 8 quedaría:
Valor a cargar en TMR0=256-(Temp·4000)/(4·

=256-Temp·125 con lo que la Temporización máxima que se podría conseguir sería:
Temp(max)=(256-0)/125=2,048ms El problema es que para conseguir 1s, sale: 1000ms/2,048=488,28 ¡¡¡decimal!!! Se tendría que aproximar a 488 dando ya error en las temporizaciones.
Lo mejor es que te consigas un cristal con el que los números salgan exactos, sin decimales, con el de 4,096MHz salen exactos.
Copiando los números de Cucaracha:
Para fosc=4,096MHz, Preescaler=256, Temp=50ms ---> Valor a cargar en TMR0 = 56 ---> Nº de interrupciones para 1s=20 (50ms·20=1000ms=1s)
Pablo te has equivocado aquí: TMR0=256-(1000*4000000)/(4*4) (no me dan las cuentas) Para 1ms no tienes que poner 1000 sino 0,001, de esa forma sale Valor TMR0=6
Otra cosa que viene del error anterior: en el programa cargas el TMR0 con 6, esta carga es para un Preescaler=4 no de 256 .
Lo dicho creo que lo mejor es agenciarse un cristal con el cual los números sean exactos.
Espero Pablo no haberte liado y no haberme equivocado después de estar pensando, haciendo números y escribiendo durante más de 1 hora.
Un saludo