Für die PWM musst du dich mit Timer auseinander setzen.
Dein Programm ist allerdings sehr unübersichtlich. Wenn es mal länger wird, kennst du dich sicher nicht mehr aus.

Code:
#include <avr/io.h>

int main (void)
DDRC &= ~(1<< PC1);				//PortC Pin2 als Eingang definieren
PORTC |= (1<< PC1);				//PortC Pin2 Pullup aktivieren
DDRB |= (1<< PB0);				//als Ausgang definieren
DDRB |= (1<< PB5);				//als Ausgang definieren
DDRD |= (1<< PD3);				//als Ausgang definieren (Motor enable)

{
while (1)
	{
	
	if (!(PINC & (1<<PINC1)))				//Läuft bei Taster geschlossen los
		{
		
		PORTB |= (1<< PB0);			//auf high setzen
		
//		PORTB |= (1<< PB5);			//auf high setzen
		PORTB &= ~(1<< PB5);			//auf low setzen
		
		PORTD |= (1<< PD3);			//auf high setzen (Motor enable)
		}
	else
		{
		
		PORTB &= ~(1<< PB0) |(1<< PB5);
		
		PORTD &= (1<< PD3);
		}

	}

return 0;
}
Jetzt hast du es übersichtlicher was du setzt und rücksetzt, PB5 ist hier immer low.