Näide
Näide 1
;eeldame, et pordid on konfigureeritud õigesti ja vajalikud registrid
defineeritud ning viide on eelnevalt ;valmis kirjutatud
;----------Nupu skaneerimine-------------------------------------------------------------------
ldi r16, 0xfe ;registrisse
r16 pannakse number 0xfe ehk 0b11111110
Tsykkel: ;märgend
programmis, mille järgi on võimalik pöörduda siia kohta ;programmis
out portd, r16 ;registri
r16 sisu saadetakse port D väljundisse
in r17, pinc ;port
c sisendis olev info pannakse registrisse r17
andi r17, 0x02 ;registri
r17 sisule tehakse and tehe numbriga 00000010, selline mask ;võimaldab
kontrollida ainult PC1 sisendit
breq Loop ;kui
sisendis PC1 oli null, siis hüpatakse kohta Loop, kui PC1 oli üks, siis ;täidetakse
järgmine käsk
in r17, pinc ;port
c sisendis olev info pannakse registrisse r17, teistkordne lugemine on ;vajalik,
kuna and tehte tulemus kirjutatakse r17 registrisse
andi r17, 0x04 ;
registri r17 sisule tehakse and tehe numbriga 00000100, selline mask ;võimaldab kontrollida ainult
PC2 sisendit
breq Loop ;kui
sisendis PC2 oli null, siis hüpatakse kohta Loop, kui PC2 oli üks, siis ;täidetakse
järgmine käsk
sec ;staatusregistri
lipp mis näitab registri ületäitumist pannakse üheks, sest ;rol käsk
toimub läbi ületäitumise biti
rol r16 ;registri
r16 sisu nuhutatakse ühe võrra vasakule
rjmp Tsykkel ;hüpatakse
programmis kohta nimega Tsykkel
;---------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
|