Cybrix
15.06.2005, 09:27
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!
/ ** 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
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!
/ ** 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