So sollte es aussehen ...
.. obs funktioniert hab ich nicht geprüft, nur lesbar geordnet und syntax korrigiert ...

Code:
#define F_CPU 8000000L                  // Systemtakt in Hz
  
#include <stdint.h>
#include <string.h>
#include <avr/io.h>
#include <avr/interrupt.h>
  
volatile uint8_t takt = 0;  // Grundinitinalisierung nie vergessen

void AVRinit(void)
{
   // DDRD  &= (~ (1<<PD2)); // Pin D2 als Eingang -- unnötig
   // wenn schon, dann:
   DDRD = 0;
   PORTD |= (1<<PD2); // Pull Up von PIN D2 aktivieren
   DDRD  |= (1<<PD3);  // PortD3 wird Ausgang 

   TCCR0 = 0 | (1<<CS00); //kein Prescaler 
   TIMSK |= (1<<TOIE0); // Overflow Interrupt en 
}

SIGNAL(TIMER0_OVF_vect)
{ 
   takt++; 
} 

int main(void)
{
   AVRinit();

   // wo war denn die MainLoop ?
   for(;;)
   {
      if(takt >= 10)
      { //Takt bis 10 zählen 
         PORTD ^= (1<<PD3); //PortD3 toggelt 50% PWM 

         // ist das absicht, hier takt nicht wieder auf 0
         // zu setzen ?
         // ohne das, ist fortan true für die restlichen 244 schritte
      }

      if (!( PIND & (1 << PIND2)))
      { // mache was wenn PinD2 low ist
             // Hier: der Getriebemotor an L293D soll mit 50% laufen  
      }
   }

   return(0); // damit der compiler keine Warnungen ausgibt ...
}
Jetzt dürfte der compiler jedenfalls keinen Fehler mehr melden ...