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; } }







Zitieren

Lesezeichen