wait: in r16, TIFR
sbrs r16, 0
rjmp wait
out TIFR, r16
Kleiner Tip am Rande: Bei Assembler-Programmierung immer das
Instruction Set Manual und das Datenblatt des jeweiligen µCs (sowieso)
in Reichweite haben. Wenn mal irgendwas wie oben passiert, kann man
schnell im ISM nachsehen, was der Befehl für Operanden hat und wenn er
nur mit bestimmten Registern funktioniert, im Datenblatt im Register
Summary nachsehen, ob das gewünschte Register überhaupt in Reichweite
des Befehls liegt.
Einige Befehle, die mit I/O-Registern arbeiten (eben z.B. sbi und cbi)
haben nur Platz für 5 Bits Register-Adresse, also 0x00...0x1F (0...31d)
und können deshalb nur auf die Register mit den Adressen bis 0x1F
zugreifen (0x1F ist bei den AVRs [zumindest bei denen mit EEPROM, was
mittlerweile auf die meisten zutrifft] das EEARH, kann man sich als
'Landmarke' merken).
Gruß
Johnny