Das scheint mir nicht richtig:
du setzt das komplette port auf Input und beim setzen solltest du "PORTA" sagen (PIN ist immer input)DDRA = 0b00000000; //Port A Pin 1,2,3 als Ausgang , Pin4-8 als Eingang
PINA = 0x00; //Port A auf low setzen
Beim Lesen und Auswerten von Pina darfst du nur die input-Bits abfragen.
Wenn der Kommentar-Text deine Absicht darstellt, empfehle ich dir:
kp- taste läuft ewig, bis irgendein "case" return durchführt.Code:void kp_init (void) // Initialisierung des Keypads { DDRA = 0b00001111; //Port A Pin 1,2,3 als Ausgang , Pin4-8 als Eingang PORTA = 0x00; //Port A auf low setzen } char kp_taste (void) //Routine zur Abfrage der Tasten { char bTmp; do { bTmp = PINA >> 4; // Tasten code in das untere Nibble switch (bTmp) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: return(bTmp | 0x30); // 0x0n ---> 0x3n --> ascii: 'n' break; case 10: return '0'; break; case 11: return 'z'; break; case 12: return 'e'; break; case 13: return 'a'; break; case 14: return 'b'; break; case 15: return 'c'; break; default: break; } while (1); return'X'; // das ist nur, falls der Compiler meutert. }
von 1-0 reicht eine einfache Umsetzung auf ascii






Zitieren

Lesezeichen