Ich lasse am besten den kommentierten Code für sich sprechen:
Code:
if((PIND & (1<<PD7))==1){PORTC=0x00;} //funktioniert nicht
if((PIND & (1<<PD7))==0){PORTC=0xFF;} //funktioniert
Falls der Code nicht zu dir spricht: 0b12345678 & 0b10000000 = 0b10000000 und das ist ungleich 1 (0b00000001). Der Fehler besteht darin, dass du auf Gleichheit mit 1 prüfst. Korrekt ist nur die Überprüfung auf Gleichheit mit 0 oder Ungleichheit mit 0.
Lesezeichen