Versuch mal
Code:
// Funktionen
unsigned int Platinenerkennung (void)
{
	unsigned int auswahl=0x00;  //Byte auswahl deklarieren und auf Null setzen

	// Übernahme an 3. Stelle von Byte auswahl des Signalzustands an PINC3
	if (PINC & (1 << PINC3))		auswahl |= (1 << 3);	 		
	// Übernahme an 2. Stelle von Byte auswahl des Signalzustands an PINC2
	if (PINC & (1 << PINC2))		auswahl |= (1 << 2); 		
	// Übernahme an 1. Stelle von Byte auswahl des Signalzustands an PINC1
	if (PINC & (1 << PIN33))		auswahl |= (1 << 1); 		
	// Übernahme an 0. Stelle von Byte auswahl des Signalzustands an PINC0
	if (PINC & (1 << PI4C3))		auswahl |= (1 << 0);

	switch (auswahl)
	{
		case 0x01: return  1; break;	 // Rückgabe Platinennummer  1
		case 0x02: return  2; break;	 // Rückgabe Platinennummer  2
		case 0x03: return  3; break;	 // Rückgabe Platinennummer  3
		case 0x04: return  4; break;	 // Rückgabe Platinennummer  4
		case 0x05: return  5; break;	 // Rückgabe Platinennummer  5
		case 0x06: return  6; break;	 // Rückgabe Platinennummer  6
		case 0x07: return  7; break;	 // Rückgabe Platinennummer  7
		case 0x08: return  8; break;	 // Rückgabe Platinennummer  8
		case 0x09: return  9; break;	 // Rückgabe Platinennummer  9
		case 0x0A: return 10; break;	 // Rückgabe Platinennummer 10
		case 0x0B: return 11; break;	 // Rückgabe Platinennummer 11
		case 0x0C: return 12; break;   // Rückgabe Platinennummer 12
		default  : return 13; break;  // Rückgabe 13 wenn Zahl 0 oder höher als 12
	}
}
Analog für Eingangsbyteeinlesen. PIN33 und PI4C3 sind Tippfehler?