Mal abgesehen von den anderen Tipps: Statt der vielen delay(100) schreib Dir doch eine Funktion

Code:
void delay100ms(uint8_t i)
{
   while(i--) 
   {
      _delay_ms(100);
   }
}
Hilft zumindest der Übersicht.