Von dem Abgesehen das mein Compiler das while(true) nicht mag, läuft dein Code. Einige Zeilen machen für mich allerdings keinen Sinn.
//TCCR1A=0x40;
TCCR1B=(1<<CS10);
//TCNT1=0x0FFF;
DDRC=0x3F;
//SREG=0x80;
TIMSK=(1<<TOIE1);
Hab das mal auskommentiert.
Variable in einer ISR deklariert man volatile
volatile uint8_t a;
Welchen Kontroller und Compiler du verwendest wäre in der Angabe auch nicht schlecht.
Lesezeichen