Hallo,

ich habe in meiner Schaltung die vier Eingänge PD5,PD6,PD7,PB0 mit einem BCD-Codierschalter belegt.
Dabei entspricht PD5 -> 1, PD6 -> 2, PD7 -> 4, PB0 -> 8

Nun habe ich mir folgende Funktion ausgedacht um dies auszuwerten und dann einfach im Hauptprogramm mit
if (BCD() == 1)...
abzufragen.

Wo liegt denn bei meiner Funktion mein Denkfehler? Denn wenn ich versuche die Rückgabewerte abzufragen dann passiert nichts, also muss irgendein Fehler in meinem Ansatz liegen.

Danke schon einmal für die Hilfe

Code:
int BCD(void)
/*
 Diese Funktion werdtet die Stellung des BCD Schalters aus um im Programm eine 
 Umschaltung verschiedener Beleuchtungsmuster realisieren zu können 
*/
{

 if ( (!(PIND & (1<<PIND5))) & (!(PIND & (1<<PIND6))) & (!(PIND & (1<<PIND7))) & (!(PINB & (1<<PINB0))) )
  {
   return 0;  
  }
  
 if ( (PIND & (1<<PIND5)) & (!(PIND & (1<<PIND6))) & (!(PIND & (1<<PIND7))) & (!(PINB & (1<<PINB0))) )
  {
   return 1;  
  } 
  
 if ( (!(PIND & (1<<PIND5))) & (PIND & (1<<PIND6)) & (!(PIND & (1<<PIND7))) & (!(PINB & (1<<PINB0))) )
  {
   return 2;  
  } 
  
 if ( (PIND & (1<<PIND5)) & (PIND & (1<<PIND6)) & (!(PIND & (1<<PIND7))) & (!(PINB & (1<<PINB0))) )
  {
   return 3;  
  }
 
 if ( (!(PIND & (1<<PIND5))) & (!(PIND & (1<<PIND6))) & (PIND & (1<<PIND7)) & (!(PINB & (1<<PINB0))) )
  {
   return 4;  
  } 
  
 if ( (PIND & (1<<PIND5)) & (!(PIND & (1<<PIND6))) & (PIND & (1<<PIND7)) & (!(PINB & (1<<PINB0))) )
  {
   return 5;  
  } 
  
 if ( (!(PIND & (1<<PIND5))) & (PIND & (1<<PIND6)) & (PIND & (1<<PIND7)) & (!(PINB & (1<<PINB0))) )
  {
   return 6;  
  } 
  
 if ( (PIND & (1<<PIND5)) & (PIND & (1<<PIND6)) & (PIND & (1<<PIND7)) & (!(PINB & (1<<PINB0))) )
  {
   return 7;  
  } 
  
 if ( (!(PIND & (1<<PIND5))) & (!(PIND & (1<<PIND6))) & (!(PIND & (1<<PIND7))) & (PINB & (1<<PINB0)) )
  {
   return 8;  
  }
  
 if ( (PIND & (1<<PIND5)) & (!(PIND & (1<<PIND6))) & (!(PIND & (1<<PIND7))) & (PINB & (1<<PINB0)) )
  {
   return 9;  
  } 

 return 0;
}