Probier es mal damit
Code:
#define F_CPU 1000000UL  // 1 MHz

#include <util/delay.h>

#include <avr/io.h>



int main (void){
DDRC = 0xff;


   while(1)
   {   
      
            
      PORTC = 0x01;
    _delay_ms(5);
		PORTC = 0x00;
      PORTC = 0x02;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x04;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x08;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x10;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x20;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x20;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x10;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x08;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x04;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x02;
      _delay_ms(500);
	  PORTC = 0x00;
      PORTC = 0x01;
      _delay_ms(500);
	  PORTC = 0x00;
   }
   return;
}
Das delay hat allerdings den Nachteil das der µC dort wirklich wartet. Besser wäre ein Timer.