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:

Code:
#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);
     }
}
MfG

Torrentula