Danke für deine Antwort, aber es funktioniert immer noch nicht.
Der Code ist jetzt folgender:
Code:
#include <avr/io.h>
#include <util/delay.h>
uint16_t ms;

void long_delay(uint16_t ms)
{
    for(; ms>0; ms--) _delay_ms(1);
}


int main(void){
	DDRB |= 0xff;
	DDRD |= 0x00;

	while(PIND == 0x00){
	PORTB &= 0x00;
	long_delay(1000);
	PORTB |= 0xff;
	long_delay(1000);
	}
return 0;
}
Die Led's bleiben einfach an.

Aber wie gesagt ist es egal welchen Code ich ver wende. Auch wenn ich eine while(1) Schleife verwende geht das nicht...

[edit:]
Im Simulator funktioniert der Code jetzt.
Und falls das wichtig ist: ich benutze die Optimierung -01