mehrere Eingänge über "while"-Befehl abfragen

OP #3025919
Lesenswert?

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?
#3025997
Lesenswert?

__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.
Gast #3026583
Lesenswert?

> Eine Tasteabfrage geht mit;
> while (PINA & (1<<PA7))
> {
>  PORTB ^=  (1<<PB3) | (1<<PB4);
> }

Das wäre eine blöde Abfrage
1
char key1pressed,key1down,key2pressed,key2down;
2
key1pressed=PINA&(1<<PA7);
3
key2pressed=PINA&(1<<PA6);
4
while(1)
5
{
6
  key1down=PINA&(1<<PA7);
7
  if(key1down&&!key1pressed)
8
  {
9
    // tue was passieren soll wenn Taste1 runtergedrückt wird
10
  }
11
  key1pressed=key1down;
12
  key2down=PINA&(1<<PA6);
13
  if(key2down&&!key2pressed)
14
  {
15
    // tue was passieren soll wenn Taste2 runtergedrückt wird
16
  }
17
  key2pressed=key1down;
18
  _delay_ms(10); // Prellzeit abwarten
19
}
Und ja, man kann das verinfachen wenn alle 8 Tasten auf einem
Port hängen.

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