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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.