Moin

Ich hab ein Tastenfeld gebaut was mir die gedrückte Taste als 4 bit signal an den Atmega 16 liefert .

Aber so wie es aussieht hab ich ein fehler in der auswertung im Programm gemacht und ich find denn Fehler nicht.

Bin in Sachen C programmierung noch ein Anfänger!

Code:
/  **  Präprozessor  **  //

#include <avr/io.h>
#include <stdint.h>

//  **  Prototypen  **  //

void kp_init (void);
char kp_taste (void);


//  **  Funktionen  **  //

void kp_init (void)         // Initialisierung des Keypads
   {
 
   DDRA = 0b00000000;        //Port A Pin 1,2,3 als Ausgang , Pin4-8 als Eingang
   PINA = 0x00;              //Port A auf low setzen
   }
   
char kp_taste (void)         //Routine zur Abfrage der Tasten
  { 
   
   while (!PINA) {
         
     
	 switch (PINA){
	 
		 case 0b00000001:
		     return '1';
		 case 0b00000010: 
			 return '2';
		 case 0b00000011:
			 return '3';
		 case 0b00000100:
			 return '4';
		 case 0b00000101:
		     return '5';
		 case 0b00000110: 
		     return '6';
		 case 0b00000111: 
		     return '7';
		 case 0b00001000:
		     return '8';
		 case 0b00001001:
		     return '9';
		 case 0b00001010:
		     return '0';
		 case 0b00001011:
		     return 'z';
		 case 0b00001100:
			 return 'e';
		 case 0b00001101: 
		     return 'a';
		 case 0b00001110:
		     return 'b';
		 case 0b00001111:
		     return 'c';
	} 
  }	
}
Danke schonmal im vorraus für eure Hilfe

Cybrix