Zu Erinnerung mal die korrekte Syntax für das Setzen von Bits in den Registern:

Bit setzen:
PORTB |= (1<<PB4);
(ODER [|] mit der Bitmaske rechts und dem alten Zustand)

Bit löschen:
PORTB &= ~(1<<PB4);
(UND [&] mit der INVERTIERTEN [~] Bitmaske)

Bit toggeln:
PORTB ^= (1<<PB4);
(EXODER [^] mit der Bitmaske)

PS: für die Verzögerung bietet sich auch folgendes an:
Code:
#include <avr/delay.h>
void warte(uint16_t loop)  //loop: wartezeit in ms 
{
	uint16_t i;
	for(i=0;i<loop;i++) _delay_ms(1);
}