AVR - Assembler - sbis variabel gestalten

OP #716975
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
#717048
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren