Knopf geht nicht!?

OP #349305
Lesenswert?
• ▲
▼
Wenn ich nix mach, steht da "Enter" =4. Wenn ich GND auf die pins
lege, geht nur der 3er ("right"). Die anderen scheinen keine Reaktion
zu zeigen. Ist schon spät. Liegt vielleicht daran ;)
1
void HandleKeys(void)
2
{
3
  if(KEY_VALID) return;
4

5
  for (char i=0;i<5;i++)
6
  {
7
    if(KEY_PIN & (1<<i))
8
    {
9
      KEY_VALID = 1;
10
      KEY = i;
11
    }
12
  }
13
}
14
int main(void)
15
{  
16
    lcd_init();
17
  KEY_DDR = 0xff; KEY_PORT = 0xff;
18
  switch(GetKey())
19
  {
20
  case 0: lcd_string_P ("UP"); break;
21
  case 1: lcd_string_P ("LEFT"); break;
22
  case 2: lcd_string_P ("DOWN"); break;
23
  case 3: lcd_string_P ("RIGHT"); break;
24
  case 4: lcd_string_P ("ENTER"); break;
25
  }
26
}
#349310
Lesenswert?
• ▲
▼
"Ich ruf in main() schon immer wieder HandleKEys auf. Klar, oder?"


Nö, überhaupt nicht klar !

Ich sehe da nur lcd_init(), lcd_string_P(), GetKey(), welche nirgends
definiert sind und auch sämtliche Variablen und Konstanten fehlen.


Was ist denn daran bloß so schwierig, Copy+Paste zu benutzen, d.h.
exakt das hinzuschreiben, was man auch ausprobiert hat ???

Und Code als Anhang sollte doch auch klar sein.

Für uncompilierbare und falsche Codefragmente braucht man sich nicht
wundern, wenns darauf keine Hilfe gibt.



Peter
OP #349311
Lesenswert?
• ▲
▼
Ich Depp! Es muss so sein:
1
int main(void)
2
{
3
lcd_init();
4
KEY_DDR = 0x00 KEY_PORT = 0xff; // input + pullup
5
switch(GetKey())
6
{
7
case 0: lcd_string_P ("UP"); break;
8
case 1: lcd_string_P ("LEFT"); break;
9
case 2: lcd_string_P ("DOWN"); break;
10
case 3: lcd_string_P ("RIGHT"); break;
11
case 4: lcd_string_P ("ENTER"); break;
12
}
13
}

und bei GetKey muss ich (! (KEY_PIN & i)) abfragen, damit er gedrückt
ist, nicht? GND == 0!?

Was so ein bischen Schlaf alles ausmacht... ;)

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.