Hallo,
ich möchte mehrer Tasten zeitgleich über while-Schleife abfragen.
Eine Tasteabfrage geht mit;
while (PINA & (1<<PA7))
{
PORTB ^= (1<<PB3) | (1<<PB4);
}
Aber, wie müsste der while-Befehl aussehen, wenn ich 2 Tasten (PA7 und
PA6) gleichzeitig abfragen möchte?
Gast
#3025928
while ( (PINA & (1<<PA6)) && (PINA & (1<<PA7)))
Gast
#3025935
while (PINA & ((1<<PA6) | (1<<PA7))) { ... }
Gast
#3025942
Michael schrieb: > while (PINA & ((1<<PA6) | (1<<PA7))) { ... } Doppelt falsch. Erstmal binäres und logisches Oder vertauscht und wenn man auf beide Taster gleichzeitig abfragen will braucht es ein Und.
Gast
#3025946
ARGH! SORRY! Stimmt alles. Ich war zu schnell. Klar, so geht es natürlich auch wenn beide Taster am selben Port sind.
kommt drauf an was du machen willst: die Schleife abbrechen wenn eine der beiden Tasten gedrückt ist oder wenn beide gleichzeitig gedrückt werden
Der Code ergibt sich doch aus der Fragestellung. Wird Taste A und B gedrückt Wird Taste A oder B gedrückt
__Son´s Bersi__ schrieb: > while (PINA & (1<<PA7)) > { > PORTB ^= (1<<PB3) | (1<<PB4); > } So fragt man keine Tasten ab. Erstmal werden Tasten entprellt und die Entprellung liefert den Status der Taste(n). Diese können dann z.B. in einer Variablen abgelegt werden. Dann werden, völlig unabhängig vom Einlesen der Tasten, die Zustaände verarbeitet: switch(buttonstate) { case 0: //tu was break; case 1: //tu was anderes break; etc. blabla } mfg.
Hubert G. schrieb: > Der Code ergibt sich doch aus der Fragestellung. > Wird Taste A und B gedrückt > Wird Taste A oder B gedrückt ja und was denn nun? Ich kann das aus der Fragestellung jedenfalls nicht erkennen: __Son´s Bersi__ schrieb: > Aber, wie müsste der while-Befehl aussehen, wenn ich 2 Tasten (PA7 und > PA6) gleichzeitig abfragen möchte?
Gast
#3026583
> Eine Tasteabfrage geht mit; > while (PINA & (1<<PA7)) > { > PORTB ^= (1<<PB3) | (1<<PB4); > } Das wäre eine blöde Abfrage
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Und ja, man kann das verinfachen wenn alle 8 Tasten auf einem Port hängen.
Zur Konkretisierung; () PA6 UND PA7 zeitgleich aber PA6 ODER PA7 ist auch interessant. () ZZ. liegen alle Tasten auf dem gleichen PORT. () Tastenentprellung kommt später.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.