Die while Schleife passt im Prinzip so. Du hast aber einen kleinen Fehler drinnen, der aber eine große Auswirkung hat. Das Semikolon muss entfernt werden. Ein gutes Tutorial für C ist das von Mikrocontroller.net => http://www.mikrocontroller.net/artic...R-GCC-Tutorial

Wenn du nur ein Kommando hast musst du ein Semikolon verwenden (z.B. DDRB |= (1<<PB1);). Ansonsten musst du mit den geschwungenen Klammern arbeiten. Da bei deinem While(1) ein Semikolon war, ist immer nur das While (1); ausgeführt worden (abgesehen von den ISR Routinen). Da zwischen while(1) und dem Semikolon nichts ist wird auch nichts ausgeführt. Würdest du z.B. while(1) PORTB ^= (1<<PB1); schreiben würdest du den PB1 immer toggeln (so schnell der µC arbeiten kann). Wenn keine ISR aktiv wäre würde der µC nur den Ausgang toggeln.

MfG Hannes