Datenübertragungsanweisungen im 8051 -Mikrocontroller verschieben Daten zwischen verschiedenen Speicherorten innerhalb der Architektur des 8051. Diese Standorte umfassen:
* Interner RAM: Der interne RAM des 8051 (128 Bytes).
* Spezialfunktion Register (SFRS): Register, die zur Kontrolle verschiedener Aspekte des Betriebs des 8051 (z. B. Timer, serieller Port, Interrupts) kontrollieren.
* externer RAM: Zugriff über den Adressbus des 8051 (wenn externer RAM angeschlossen ist). (Hinweis:Der Zugriff auf externer RAM erfordert normalerweise komplexere Anweisungssequenzen.)
Die primären Datenübertragungsanweisungen lauten:
* mov (Move): Dies ist der grundlegendste Datenübertragungsanweis. Es kopiert den Inhalt eines Ortes (Quelle) an einen anderen Ort (Ziel).
* Syntax: `MOV -Ziel, Quelle`
* Beispiele:
* `Mov a, r0`:Verschiebt den Inhalt des Registers R0 in den Akkumulator (a).
* `Mov r1, #55h`:Verschiebt den unmittelbaren Wert 55h (hexadezimal) in das Register R1.
* `Mov r2, @a`:Verschiebt die Daten an der Speicheradresse, auf die der Akkumulator (a) in das Register R2 hingewiesen wird. (Indirekte Adressierung)
* `MOV @A+DPTR, R3`:Verschiebt den Inhalt von R3 in den externen RAM an der Adresse, die durch Hinzufügen des Akkumulators (A) und des Data Zeiger (DPTR) Register berechnet wird. Dies zeigt, wie auf externer RAM indirekt zugegriffen werden kann.
* movx (Move External): Dieser Befehl verschiebt die Daten zwischen dem Akkumulator (a) und dem externen RAM. Es verwendet das DPTR -Register (Data Zeiger), um den externen Speicher zu beheben.
* Syntax: `Movx a, @a+dptr` (verschiebt Daten von externem RAM auf a) oder` movx @a+dptr, a` (verschiebt Daten von A zum externen RAM)
* Push und Pop: Diese Anweisungen funktionieren mit dem Stack, einer LIFO-Datenstruktur (LESTO (LEST-IN-ERST-OUT), die sich normalerweise im internen RAM befindet.
* Push: Drückt den Inhalt des Akkumulators (a) auf den Stapel.
* Pop: Steckt das obere Element aus dem Stapel in den Akkumulator (a). Der Stack Zeiger (SP) wird automatisch aktualisiert.
* xch (Exchange): Austausch wird den Inhalt des Akkumulators (a) mit dem Inhalt eines angegebenen Registers oder Speicherorts.
* Syntax: `Xch a, ri` (wobei RI ein Register R0-R7 ist) oder` xch a, @a` (indirekte Adressierung)
Adressmodi:
8051 Anweisungen werden unterschiedliche Adressierungsmodi verwendet, darunter:
* Sofortige Adressierung: Der Operand ist ein konstanter Wert, der direkt in die Anweisung enthalten ist. (`Mov r1, #55h`)
* Registeradressierung: Der Operand ist ein Register. (`Mov a, r0`)
* direkte Adressierung: Der Operand ist ein Speicherort, der direkt von seiner Adresse im internen RAM angegeben wird. (z. B. `mov a, 20h` Zugriff auf die interne RAM -Adresse 20H).
* Indirekte Adressierung: Die Adresse des Operanden wird in einem Register (normalerweise im Akkumulator A oder im DPTR) gespeichert. (`Mov a, @a`;` movx a, @a+dptr`)
Diese Anweisungen sind die Grundlage für die Datenmanipulation innerhalb der 8051. Verständnis der Syntax, der Bekämpfung von Modi und den Rollen von Registern wie dem Akkumulator und DPTR sind für eine effektive 8051 -Programmierung von entscheidender Bedeutung.