Maunix, ante todo muchas gracias por tu atención y por la rapidez en la respuesta. De nuevo vienes a echar un poco de luz sobre mis dudas y falta de conocimierto. A pesar de que participo poco en el foro, lo sigo de continuo y tu eres uno de los que más admiro por tus conocimientos y sensatez. Bueno, basta de cepillo...
A ver si me puedo explicar. Para decrementar los mencionados registros y llevarlos a cero, entiendo que necesitaría 249.984 ciclos de clock interno o sea cerca de 250 ms.
Como cada ciclo es igual Fosc/4, ¿no sería aproximadamente 1 segundo real lo que hemos tardado en ejecutarlo?
JoseV gracias por tus comentarios.
En cuanto a lo de los ciclos internos, piensa que las instrucciones avanzan a Fosc/4, con lo cual cada ciclo son 1 instruccion. Si tu clock es de 4Mhz, las instrucciones se ejecutarán cada 1useg (1 millon de instrucciones por segundo).
Creo que estás dividiendo 2 veces por 4, Fosc es la frecuencia del oscilador externo.
Volviendo a los números, si tu quieres demorar 1 segundo, deberás realizarlo 1 millón de veces.
De todas formas, veo que parece que no se puede ajustar exactamente para que el TMR0 desborde cada segundo (por las cuentas).
Siempre se puede ajustar, acercarse, etc, usando nops por ejemplo. El punto es que por más que logres los 1millon de instrucciones exactos el corrimiento del oscilador hará que cada X horas, no tengas precisión exacta, ese era mi punto.
En el simulador puedes terminar ajustandolo perfectamente pero en la realidad puede que varíe un poco. Por más que varíe muy muy poquito al cabo del día son unos segundos.
Saludos