@ Fred:

Sorry, aber ich muss da mal zwei Dinge zu sagen:

In meinem Beispiel (1. Anlage) habe ich "keine Optimierung (=-O0)" gewählt; typischerweise nimmt man mindestens "-O1".
Wenn man die Funktionen aus util/delay.h verwenden will, ist es sehr wichtig, die Optimierungen einzuschalten. Bei einer halbwegs aktuellen AVR-Libc bekommt man ansonsten auch eine entsprechende Warnung beim Compilieren.

Beim ATmega32 kann man die einzelnen Ausgangspins nicht mit Hilfe von PINx |= PINx "togglen", aber bei den neueren ATmegas geht das!
Auch bei neueren ATmegas klappt das so nicht. Mit "PINx |= PINx" bekommt man den Ausgang nur von 1 auf 0, aber nicht wieder zurück.


@ BlackDevil:

3. Finde ich meine Lösung die Pins an Port B hoch zu zählen nicht sooo Elegant. Ginge das Eleganter?
Ich würde ein Lauflicht über den ganzen Port so machen:
Code:
while (1) {  // oder solange Taste gedrückt, oder ähnlichens
    PORTB <<= 1;
    if (!PORTB)
        PORTB = 1;
    _delay_ms(10);
}