Ein Wunder, dass es sich überhaupt compilieren lässt, was soll denn die if bewirken? Es fehlt doch noch ein {} Block, damit man eine bedingte Anweisung hat. Außerdem, es fehlt eine abschließende } und was gibt main() zurück? Wenn nichts, dann muss man trotzdem void dazu schreiben.

Probiere mal das:

void main ()
{
DDRB=0b00000011; //0b weil es eine Binärzahl ist. besser wäre DDRB = 0x03;
PORTB = 0x08; //Pullup aktivieren (PB3)

while(true)
{
if(!(PINB & (1 << PB3)))
{
PORTB=PORTB|(1<<PB0); //PB0 setzen, besser wäre PORTB |= (1 << PB0);
waitMs(500);
PORTB=0b00001000; //PB0 löschen, besser wäre PORTB &= ~(1 << PB0);
}
}
}