Hallo Zusammen,

es geht um folgenden Code auf einem Olimex AVR-P28 mit einem ATMega8:

/****************************
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
*****************************/
uint8_t zaehler=0; //bis max 255 ansonsten uint16_t


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
DDRC = (1<<5); //C5 als Ausgang
DDRD = 0x00; //D als Eingang

PORTB = 0x00; //B 00000000
PORTC = (1<<5); //C 00100000
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;
}
}
Leider geht der Code auf dem Bord nicht. Die LED geht an und es gibt keine weitere Reaktion auf den Schalter.
Bei der Simulation in AVRStudio werden außerdem die _delay_ms übersprungen, ohne dass die Stoppuhr entsprechend weiter zählt.

Könnt ihr mir sagen, wo ich meine(n) Fehler habe...

Danke für die Hilfe...Grüße

PS: Bei mir im Programm habe ich die einzelnen Blöcke eingerückt. Hier kommt das leider nicht an