Die Initialisierung ist soweit ok. Es ist allerdings u.U. besser, TCCR0 wirklich zu setzen, damit alle Bits den gewünschten Wert haben. Sollte bei dir aber egal sein.
Code:
void Timer_Inits(void)
{
	//Timer Interrupt=(Quarzfreq 16000000/8Bit-Ueberlauf 256)/ Prescaler 1024= 16mS
	//letzte 3 Bit von Timer Clock Control: Prescaler = Quarz/1024:
	TCCR0 = (1 << CS00) | (1 << CS02);
	//Timer Interrupt Mask Register Bit 1 setzen fuer Timer Overflow Interrupt enable:
	TIMSK |=(1<<TOIE0);
}
Wenn ich's recht sehe, willst du so was wie Timeouts machen: Nen Port an und nach ner bestimmten Zeit wieder aus, wahrscheinlich unterschiedliche Zeiten für die verschiedenen Ports...

Du könntest dir eine Struktur machen mit Countdown-Werten, die du setzt und die in der ISR bis aus 0 zurückgezählt werden, eine Einheit pro Tick (16ms):

Code:
typedef struct
{
   uint8_t takt;
   uint8_t bass;
   ...
} countdown_t;

volatile countdown_t countdown;

SIGNAL (SIG_OVERFLOW0)
{
	uint8_t i = sizeof (countdown_t);
	uint8_t * cd = (uint8_t *) &countdown;

	cd += i;
	
	do
	{
		uint8_t wert = *(--cd);
		
		if (wert)
			*cd = wert-1;
	} while (--i);
}
Dadurch werden in jedem Tick die Elemente von countdown, die nicht 0 sind, um 1 erniedrigt.

Code:
int main()
{
   ioinit();
   Timer_Inits();
   sei();

   // Hauptschleife
   while (1)
   {
      if (countdown.takt == 0)
      {
         countdown.takt = 200;
         countdown.bass = 20;
         PORTC |= (1 << 1);
      }      

      if (countdown.bass == 0)
      {
         PORTC &= ~(1 << 1);
      }      
   }