Hola ramirez,
... Y las dudas que tengo son las siguientes:
1.- El programa empieza a correr, la variable cont toma el valor cero, y despues ejecuta todas las líneas que existen en el main. ¿cual es la función exacta de while (1)?
2.- Una vez que el Timer a contado desde 3036 a 65536,¿las siguientes líneas que se ejecutan son las que hay en la interrupción? Si es cierto ¿cuando vuelve a tomar el valor cero la variable cont ?
3.-Cuando simulo el circuito con Proteus, éste funciona, pero el periodo es de 2 segundo. ¿Qué ocurre?
4.- Finalmente, cuando intento simularlo paso a paso, siempre se queda en la función while(1). ¿porqué?. No puedo ver de alguna manera cómo se movería la ejecuación del programa por todas las líneas del mismo.
1.-
while(1) es un bucle infinito. El programa se queda allí y como no contiene ningún código, lo único que el programa hace es atender
las interrupciones cuando ocurran.
2.- Es correcto. Una vez se desborda el temporizador salta la interrupción y el programa atiende a las líneas dentro de esta. Como
cont es una variable de un bit, la instrucción
++ lo que hace es que pase de 1 a 0 y así sucesivamente.
3.- Proteus no funciona en tiempo real y dependiendo de la velocidad del equipo toma más o menos tiempo en ejecutar las instrucciones.
4.- La razón de esto, es que además del punto anterior, tendrías que darle todos los pasos correspondientes a los ticks del Timer1 hasta lograr
el desbordamiento y por ende la interrupción. Si te fijas serían muchos
No conozco muy bien el Proteus, pero me imagino que
tendrá forma de ponerle
breakpoints para que avance de un punto del programa a otro sin necesidar de darle paso a paso.
Saludos!