Code:
TIFR |= (1<<TOV0);
GIFR |= (1<<INTF0);
Das ist nicht korrekt. Damit löscht du gleich alle gesetzten Flags in dem jeweiligen Register. Bei deinem aktuellen Code ist es egal, ob nur ein bestimmtes Flag gelöscht wird, oder gleich alle, aber wenn du deinen Code dann mal erweiterst und mehr Interrupts benutzt, dann wird dich das irgendwann in den Hintern beißen.