So wie du es beschreibst ist die LED dann richtig angeschlossen, man nennt die LED dann "high-active", da der Zustand des Portpins auf 1 (High) geändert werden muss, um die LED einzuschalten.
Die bits würde ich persönlich anders setzen, also nicht _BV(0) verwenden, aber das ist eigentlich egal, da beide Ausdrücke gleichwertig sind.
Dem Ausgangsregister den Wert 254 zu geben ist allerdings falsch! Du setzt damit alle Pins auf Output außer PC0, der wird als Input definiert. Binär ist 254 = 11111110, du hingegen suchst nach 1 = 00000001.
So würde ich persönlich das machen:
MfGCode:#define MCU atmega168 #ifndef F_CPU #define F_CPU 1000000UL #endif #include <avr/io.h> #include <util/delay.h> int main(void) { DDRC = (1<<PC0); // PC0 auf Ausgang ohne andere Pins zu beeinflussen PORTC &= ~(1<<PC0); // sicherstellen, dass PC0 auf LOW liegt while (1) { PORTC |= (1<<PC0); // PC0 liegt ja bereits auf LOW, deswegen jetzt auf HIGH _delay_ms(250); PORTC &= ~(1<<PC0); _delay_ms(250); } }
Torrentula







Zitieren

Lesezeichen