Stap 7: vertraging
Nu dat we hebben gezien dat onze timer overflow interrupt handler "overflow_handler" routine u de variabele "overflows stelt zal" op nul eens elk kunnen tweede we dit feit gebruiken om het ontwerp een subroutine "vertraging".
Neem een kijkje op de volgende code onder onze vertraging: label
delay: clr overflows sec_count: cpi overflows,30 brne sec_count ret
We gaan noemen deze subroutine telkens als wij in ons programma een vertraging nodig hebt. De manier waarop die het werkt is dat het plaatst eerst de variabele "overloop" tot nul. Dan een gebied met de label "sec_count wordt" en vergelijkt overflows met 30, als ze niet gelijk is aan het takken terug naar het label sec_count en vergelijkt opnieuw, en opnieuw, etc. tot ze eindelijk gelijke (Vergeet niet dat de hele tijd dit op onze timer interrupt handler gaat blijft verhogen de variabele overflows en dus het verandert elke keer dat we gaan hier in de buurt. Wanneer overflows tenslotte gelijk is aan 30 het krijgt uit de lus en keert terug naar waar we vertraging genoemd: uit. Het netto resultaat is een vertraging van 1/2 seconde
Oefening 2: de overflow_handler-routine omzetten in het volgende:
overflow_handler: inc overflows reti
en start het programma. Is iets anders? Waarom of waarom niet?