-
-
Erfahrener Benutzer
Robotik Einstein
Gock hat das schon fast richtig beantwortet.
Fast alle imidiate Befehle also LDI, CPI, ORI, ANDI, usw. gehen nicht mit den Registern 0...15.
Will man also eine Konstante mit einem Register verarbeiten, funktioniert das nur mit den Registern 16 bis 31.
Beispiel:
LDI r16,0x34
OUT TCCR1,r16
würde nicht mit Register r1 gehen.
Da man aber immer solche Werte wohin übertragen muß nimmt man für Ladeoperationen halt gleich immer die Register 16...31 her.
Die letzten 6 Register lassen sich auch als Doppel Register x,y,z ansprechen.
Man kann somit indizierte Adressierungen mit Auto Increment mit nur einem Kommando ausführen.
ld r16,x+
st y+,r16
Wäre eine Verschiebung des Inhaltes von RAM Inhalt (x) nach (y) mit automatischer inkrementierung der x und y Register.
Einen Sonderfall gibts noch bei der Operation LPM, die geht bei manchen Controllern nur mit dem Register r0.
Eine genaue Beschreibung der einzelnen Befehle und der zulässigen Operatoren und Register findest Du im AVR Studio in der Hilfe unter "Assembler Help".
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen