AVR Assembler handledning 3 (8 / 9 steg)
Steg 8: Blink!
Slutligen låt oss titta på blink rutin:
Blink:
SBI PORTD, 4
rcall fördröjning
CBI PORTD, 4
rcall fördröjning
rjmp blink
Först vi aktiverar PD4, då vi rcall vår försening subrutin. Vi använder rcall så att när datorn blir till ett "ret" uttalande det kommer att komma tillbaka till raden efter rcall. Då dröjsmål rutinmässiga förseningarna för 30 räknas i variabeln spill som vi har sett och det är nästan exakt 1/2 sekund, sedan vi stänga PD4, fördröja en 1/2 sekund, och sedan gå tillbaka till början igen.
Resultatet är en blinkande lysdiod!
Jag tror du kommer nu överens om att "blink" är förmodligen inte det bästa programmet "hello world" i assembler.
Övning 3: ändra de olika parametrarna i programmet så att LED blinkar i olika takt som en sekund eller 4 gånger en andra, etc.
Övning 4: ändra det så att lampan är på och av för olika belopp av tid. Till exempel på 1/4 sekund och sedan iväg för 2 sekunder eller något sånt.
Övning 5: ändra TCCR0B klockan Välj bitar till 100 och fortsätter sedan att gå upp i tabellen. Vid vilken punkt blir det omöjlig att skilja från vår "hello.asm" program från tutorial 1?
Övning 6 (valfritt): om du har en annan kristalloscillator, som en 4 MHz eller en 13,5 MHz eller vad, byta ut din 16 MHz oscillator på din skärbräda för den nya en och se hur det påverkar den blinkande lysdioden. Du bör nu kunna gå igenom exakt beräkning och förutsäga exakt hur det påverkar priset.