Antworten 1:

Der interne Speicher des 8051 ist in zwei Teile unterteilt: einen Teil zum Speichern des zusammengesetzten Codes (Befehlssatz) und den anderen zum Speichern von Daten.

MOVC speichert Ihre Daten im Codespeicher.

MOV speichert Ihre Daten im Datenspeicher.

MOVX speichert Ihre Daten in einem externen Speicher (vorausgesetzt, Ihr Mikrocontroller ist mit einem externen Speicher verbunden)


Antworten 2:

MOVC lädt den Akku mit einem Byte aus dem Codebereich Programmspeicher.

Es gibt zwei Formen der MOVC-Anweisung.

MOVC A, @ A + PC

Dies ist wahrscheinlich die häufigste Verwendung. Die 8-Bit-Nummer in A wird zu der 16-Bit-Nummer im Programmzähler hinzugefügt, und das Byte an dieser Adresse wird nach A kopiert. Dies ist sehr praktisch für Nachschlagetabellen, die nach dieser Anweisung zusammengestellt werden. Beispielsweise,

INC A
MOVC A, @ A + PC
RET
DB '0', '1', '2', '3', '4'

Dies nimmt eine Binärzahl 0..4 in A und ersetzt sie durch ASCII 0..4 aus der Tabelle in Zeile 4. Der anfängliche "inc" -Befehl ist erforderlich, um den RET-Befehl zu überschreiten, andernfalls wäre A 0x00, das Byte zurückgegeben würde der Opcode für RET sein.

Die andere Form ist

MOVC A, @ A + DPTR

Dies funktioniert genauso wie beim Programmzähler, außer dass DPTR die 16-Bit-Basisadresse bereitstellt.

MOVX lädt den Akku mit einem Byte aus dem externen Speicher oder umgekehrt. Es gibt auch zwei Formen dieses Befehls, und im Gegensatz zum MOVC-Befehl kann er Daten in beide Richtungen übertragen.

MOVX ,

MOVX A, @ Ri lädt den Akku mit dem externen Datenspeicherbyte, das von der 8-Bit-Nummer in Ri adressiert wird. "Ri" bedeutet ein Indexregister, das entweder R0 oder R1 sein kann.

MOVX A, @ DPTR lädt den Akku mit dem externen Datenspeicherbyte, das von der 16-Bit-Nummer in DPTR adressiert wird.

MOVX @ Ri, A undMOVX @ DPTR, A

...doexactlythesamethinginreverse.... do exactly the same thing in reverse.

Der MOVX-Befehl setzt voraus, dass der externe Speicher auf eine bestimmte Weise verbunden ist, und ändert die Portkonfigurationen. Sie sollten keine MOVX-Anweisung verwenden, wenn Sie nicht genau wissen, wie der 8051 im Stromkreis verkabelt ist.


Antworten 3:

zuallererst möchte ich sagen, dass beide nur für den Datenzugriff sind. u kann keine Anweisungen mit movc und movx bedienen.

in movc "C" => steht für Codespeicher (on chip oder in built). Der Codespeicher kann verwendet werden, um permanente Daten wie sieben Segmentmuster, ein Passwort oder Look-Tabellen zu speichern, die im gesamten Programm gleich bleiben. Da sich diese Daten im ROM befinden, werden sie nicht gelöscht, wenn das Gerät ausgeschaltet wird. Diese Daten können während der Ausführung mit der Anweisung MOVC a, @ a + dptr gelesen werden. Wir haben keine Anweisung zum Schreiben des Code-Speichers während der Ausführung. dies sollte beachtet werden.

in MOVX => X steht für externes RAM, das über P0 und P2 angeschlossen werden kann. Der Zugriff erfolgt über die Steuerstifte WR und RD auf P3. Adressbus erhält die Adresse von dptr. Da es sich um RAM handelt, können wir während der Ausführung zwei Operationen am Speicher ausführen, nämlich Lesen und Schreiben.

für write => movx @ dptr a

für read => movx a, @ dptr

ALLE BETRIEBE SIND IMMER W.R.T. CPU ODER uC.

Diese Anweisungen gehören zum indirekten Adressierungsmodus des Index. Daher werden alle Überweisungen nur über den Akku abgewickelt.

Wenn Sie Fragen haben, können Sie uns unter teknowtasc.ent27@gmail.com schreiben.

Wir bieten auch industrielle Schulungen zu eingebetteten Technologien an.

Weitere Informationen finden Sie unter:

Unsere Facebook-Seite: Teknowtasc

oder Sie können unseren Kanal auf youtube abonnieren: TEKNOWTASC