Es fehlt noch:
Code:
DDRD |= (1<<PD7);
Ansonsten sieht es gut aus, bis auf einen Fehler:
Code:
if ( !(PIND & (1<<PIND6)) )
// Ändern zu:
if ( !(PIND & (1<<PD6)) )