Eher so was in der Richtung.

Da war einiges nicht korrekt, ich überlass mal dir rauszufinden, was...

Mal ins Blaue und nicht getestet, aber auf jeden Fall näher dran:

Code:
#include <avr/io.h>
#include <avr/interrupt.h>

volatile int i; 

ISR(TIMER0_OVF_vect)
{
    i++;
}


int main (void)
{
    TCCR0 |= (1<<CS00) | (1<<CS02);
    TIMSK |= (1<<TOIE0);

    sei();

    // main loop
    while (1)
    {
        do // loop while i <= 2000
        {
            int j;
            
            // atomic!
            cli();
            j = i;
            sei();
            
            if (j > 2000)
                break;
        }
        
        DDRC=0xFF;         
        PORTC=0x00;                 //LEDS sollen jetzt nach Ablauf der Zeit  zugeschaltet werden
        
        // freeze
        cli();
        while (1);
    }
}