Forum: Mikrocontroller und Digitale Elektronik AVR - Assembler - sbis variabel gestalten


von Guenter B. (gbl)


Lesenswert?

Hallo allerseits
Kann mir jemand helfen wie ich die sbis bzw sbic variabel gestallten 
kann.
bzw
Kennt jemand einen Workaround ?
sbis pinb,x   x = Variable


Soweit meine Idee:
(geht natürlich nicht, da sich der Code zur Laufzeit ändern würde)
Der Code soll an pin3 und pin4 Taster abfragen.
Eventuell auch noch mehr als diese Beiden.
Wie macht ihr soetwas ?
1
;Hauptschleife setzt abzufragenden Taster und fragt diesen ab
2
loop_main:
3
ldi Taster,3
4
rcall Tasterabfrage
5
ldi Taster,4
6
rcall Tasterabfrage
7
rjmp loop_main
8
9
10
;Fragt den in Taster übergebenen Taster ab
11
Tasterabfrage:
12
sbic pinb,Taster    ;Überspringe den nächsten Befehl, wenn Taster = 0
13
ret          ; Taster ist H also keine Aktion und zurück
14
rcall Taster_senden  ;Senden -> hier wird der Befehl ausgeführt 
15
Taste_klemmt:    ;Warten bis Taste frei
16
sbis pinb,Taster  ;Überspringe den nächsten Befehl, wenn Taster = 1
17
rjmp Taste_klemmt  ;Taste ist noch gedrückt
18
ret          ;Zurück zur Hauptschleife



Gruß

Günter

von Jupp V. (mng)


Lesenswert?

1
;Hauptschleife setzt abzufragenden Taster und fragt diesen ab
2
loop_main:
3
ldi Taster,1<<3
4
rcall Tasterabfrage
5
ldi Taster,1<<4
6
rcall Tasterabfrage
7
rjmp loop_main
8
 
9
10
;Fragt den in Taster übergebenen Taster ab
11
in r16,pinb
12
and r16,Taster
13
breq TasterLow
14
ret
15
TasterLow:
16
rcall Taster_senden
17
Taste_klemmt:
18
in r16,pinb
19
and r16,Taster
20
breq Taste_klemmt
21
ret

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.