„AVR feladatok” változatai közötti eltérés
Ugrás a navigációhoz
Ugrás a kereséshez
17. sor: | 17. sor: | ||
<br/> | <br/> | ||
<code> | <code> | ||
− | .def temp = r16 | + | ; Bináris számok beolvasása |
+ | .def temp = r16 | ||
+ | .def led = r17 | ||
+ | |||
+ | M_INIT: | ||
+ | ldi temp, 0x00 | ||
+ | sts DDRG, temp ; bemenetre állítjuk | ||
+ | ldi temp, 0xff | ||
+ | sts PORTG, temp ; felhúzzuk a kapcsolókat | ||
+ | |||
+ | ldi temp, 0x00 | ||
+ | out DDRE, temp ; bemenetre állítjuk | ||
+ | ldi temp, 0xff | ||
+ | out PORTE, temp ; felhúzzuk a gombokat | ||
+ | |||
+ | ldi temp, 0xff | ||
+ | out DDRC, temp ; kimenetre állítjuk | ||
+ | ldi led, 0x00 | ||
+ | out PORTC, led ; kikapcsoljuk a ledeket | ||
+ | |||
+ | M_LOOP: | ||
+ | in temp, PINE | ||
+ | sbrs temp, 5 ; ha BT0 fel van engedve, akkor átugorja a következö utasítást | ||
+ | call LOW4 | ||
+ | sbrs temp, 6 ; BT1 | ||
+ | call HIGH4 | ||
+ | jmp M_LOOP | ||
+ | |||
+ | LOW4: | ||
+ | push temp | ||
+ | lds temp, PING | ||
+ | com temp | ||
+ | bst temp, 3 ; SW3 értéke T-be | ||
+ | bld led, 0; T-böl betölti led 0-as bitjébe | ||
+ | bst temp, 4 ; SW2 | ||
+ | bld led, 1; | ||
+ | bst temp, 1 ; SW1 | ||
+ | bld led, 2; | ||
+ | bst temp, 0 ; SW0 | ||
+ | bld led, 3 | ||
+ | pop temp | ||
+ | ret | ||
+ | |||
+ | HIGH4: | ||
+ | push temp | ||
+ | com temp | ||
+ | lds temp, PING | ||
+ | bst temp, 3 ; SW3 értéke T-be | ||
+ | bld led, 4; T-böl betölti led 0-as bitjébe | ||
+ | bst temp, 4 ; SW2 | ||
+ | bld led, 5; | ||
+ | bst temp, 1 ; SW1 | ||
+ | bld led, 6; | ||
+ | bst temp, 0 ; SW0 | ||
+ | bld led, 7 | ||
+ | out PORTC, led | ||
+ | pop temp | ||
+ | ret | ||
</code> | </code> | ||
{{Infobox | {{Infobox |
A lap 2013. május 20., 16:22-kori változata
Mérés laboratórium 2. tárgy ellenőrző méréséhez kiadott AVR-es feladatok lehetséges megoldásai:
; Bináris számok beolvasása
.def temp = r16
.def led = r17
M_INIT:
ldi temp, 0x00
sts DDRG, temp ; bemenetre állítjuk
ldi temp, 0xff
sts PORTG, temp ; felhúzzuk a kapcsolókat
ldi temp, 0x00
out DDRE, temp ; bemenetre állítjuk
ldi temp, 0xff
out PORTE, temp ; felhúzzuk a gombokat
ldi temp, 0xff
out DDRC, temp ; kimenetre állítjuk
ldi led, 0x00
out PORTC, led ; kikapcsoljuk a ledeket
M_LOOP:
in temp, PINE
sbrs temp, 5 ; ha BT0 fel van engedve, akkor átugorja a következö utasítást
call LOW4
sbrs temp, 6 ; BT1
call HIGH4
jmp M_LOOP
LOW4:
push temp
lds temp, PING
com temp
bst temp, 3 ; SW3 értéke T-be
bld led, 0; T-böl betölti led 0-as bitjébe
bst temp, 4 ; SW2
bld led, 1;
bst temp, 1 ; SW1
bld led, 2;
bst temp, 0 ; SW0
bld led, 3
pop temp
ret
HIGH4:
push temp
com temp
lds temp, PING
bst temp, 3 ; SW3 értéke T-be
bld led, 4; T-böl betölti led 0-as bitjébe
bst temp, 4 ; SW2
bld led, 5;
bst temp, 1 ; SW1
bld led, 6;
bst temp, 0 ; SW0
bld led, 7
out PORTC, led
pop temp
ret
.def temp = r16