Hab mir das mit dem PullUp-Wiederständen nochmal angeschaut (http://www.mikrocontroller.net/artic...lup-Widerstand) und natürlich macht damit das setzen des PORT (und damit des PullUp-Wiederstands) nur beim Eingang Sinn.

Hier nochmal die aktualisierte Version des Codes:
Code:
/****************************
Ein-/Ausgänge
Zeitverzögerung
Variablenlängen
*****************************/
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>


/****************************
Anlegen der Funktionen
*****************************/
void initialize();
void LEDschalten(int status);


/****************************
Globale Variable für Zähler der An-Aus-Schleife
*****************************/
uint16_t zaehler=0;	//bis max 65536


int main(void)
{

	initialize();

	while(1)
	{
		if (PIND & (1<<2))
		{
			LEDschalten(1);		//LED ein
			zaehler=0;
		}

	
		if (zaehler >= 1999)
		{
			LEDschalten(0);		//LED aus nach 2sec
			zaehler=0;
		}
		else
		{
			zaehler++;
			_delay_ms(1);
		}
	}


return 0;
}


void initialize()
{
	DDRB = 0x00;		//B als Eingang
	DDRD = 0x00;		//D als Eingang
	DDRC = (1<<5);		//C5 als Ausgang

	PORTB = 0x00;		//B 00000000
	PORTD = 0x00;		//D 00000000

	LEDschalten(1);		//LED ein
	_delay_ms(500);		//0.5sec Leuchten
	LEDschalten(0);		//LED aus

}


void LEDschalten(int status)
{
	switch (status)
	{
		case 1:				//LED ein??
			PORTC &= ~(1<<5);
			break;
		case 0:				//LED aus??
			PORTC |= (1<<5);
			break;
	}
}