Näide 2
Kuna E (enable) signaali on vaja anda iga kord, kui tahetakse infot salvestada LEDide ees olevasse registrisse, siis on mõttekas teha E signaali formeeriv programmi osa eraldi alamprogrammiks, mida on võimalik välja kutsuda, siis kui selleks on vajadus. Selline tegevus võimaldab suuremate programmide puhul tunduvalt kokku hoida programmi mälu ja annab võimaluse vajadusel kasutada olemasolevat programmi osa ilma seda uuesti kirjutamata.
Näide 2
;paneme esimese LEDi põlema ja ülejäänud kustu
;eeldame, et pordid on konfigureeritud õigesti ja vajalikud registrid
defineeritud
;----------Info saatmine
andmesiinile-------------------------------------------------------------
ldi r16, 0xfe ;registrisse
r16 pannakse arv 0xfe ehk 0b11111110
out portd, r16 ;registri r16
sisu saadetakse port d väljundregistrisse
rcall enableLED ;kutsutakse
välja programmi osa mille nimi on „enableLED“ ehk hüpatakse ;programmis
kohta nimetusega „enableLED ja hakatakse sealt programmi edasi ;täitma
;---------Lõputu tsükkel
------------------------------------------------------------------------
Loop: ;tegu
on lõputu tsükliga
rjmp Loop ;see
on tehtud selleks, et programmi täitmine jääks siia pidama
;---registrile E signaali andmine-------------------------------------------------------------------
;seda tegevust on vaja selle jaoks, et formeerida registrile DD4
info ;vastuvõtmist
lubavasse sisendisse E impulss, kui E sisendisse ei tule lubavat impulssi,
siis registri ;sisendis olevat infot register vastu ei võta, peale lubava
impulsi saabumist sisendisse E salvestab ;register sisendis olema info
enableLED: ;märgend
programmis, mille järgi on võimalik pöörduda siia kohta programmis
sbi portb, 7 ;pordi B
seitsmes bitt pannakse üheks
cbi portb, 7 ;pordi B
seitsmes bitt pannakse nulliks
ret ;selle
käsuga pöördutakse tagasi sinna kohta programmis, kust eelnevalt call käsuga ;kutsuti välja
„enableLED“ |