Paso 7: retraso
Ahora que hemos visto que nuestra rutina de controlador "overflow_handler" interrupción de temporizador desborde establecerá la variable se "desborda" a cero una vez cada segundo podemos utilizar este hecho para diseñar una subrutina "retrasar".
Echa un vistazo al siguiente código debajo de nuestro retraso: etiqueta
delay: clr overflows sec_count: cpi overflows,30 brne sec_count ret
Vamos a llamar a esta subrutina cada vez que necesitamos un retardo en nuestro programa. La forma en que funciona es que primero establece la variable "desborda" a cero. Luego entra en una zona con la etiqueta "sec_count" y compara desbordamientos con 30, si son igualan ramas a la etiqueta sec_count y compara una y otra vez, etc. hasta que finalmente igual (recuerda que continúa todo el tiempo esto va en nuestro manejador de interrupción del contador de tiempo se incrementa los variable desbordamientos y por lo que está cambiando cada vez que pasamos por aquí. Cuando se desborda finalmente es igual a 30 se pone fuera del bucle y regresa a donde llamamos retardo: de. El resultado es un retraso de 1/2 segundo
Ejercicio 2: cambiar la rutina de overflow_handler a lo siguiente:
overflow_handler: inc overflows reti
y ejecutar el programa. ¿Es algo diferente? ¿Por qué o por qué no?