Hi,
Im "if" Zweig wird getestet, ob "__count==0" und gegebenenfalls auf den nächsten Befehl gesprungen. Dieser Zweig wird übrigens unter der Dezember 2007 Version von WINAVR wegoptimiert (wenn nicht "-O0")!
Im "else"-Zweig wird von "__count" wird so oft "1" subtrahiert (sbiw="subtract immediate from word"), bis "__count" Null ist (d.h. die "branch not equal" {Sprung rückwärts zum Label "1"} Anweisung wird ausgeführt, wenn das Ergebnis der Subtraktion ungleich Null ist). Ist Null erreicht, geht der Programmzähler einfach auf die nächste Zeile, die dem Inline Code folgt.
In C (ohne Optimierung, sonst würde diese Zeile wahrscheinlich einfach verschwinden!):Je nach F_CPU und nötiger Wartezeit würde ich Dir eher zu "_delay_us(..)" aus "util/delay.h" raten (in der Klammer sollte ein Konstante stehen und Du musst die Optimierung eingeschaltet haben).Code:while (--__count);
Gruß
Fred
Lesezeichen