Registrieren Sie die Bank- und Stapelspeicherzuordnung im 8051-Mikrocontroller

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





Die Sammlung von Allzweckregistern (R0-R7) wird als Registerbanken bezeichnet, die ein Datenbyte akzeptieren. Das Bankregister ist Teil des RAM-Speicher im eingebetteten Mikrocontroller, und es wird verwendet, um die Programmanweisungen zu speichern. Jeder Mikrocontroller besteht aus verschiedenen Speicherbänken, und jedes Bankregister besteht aus einer eindeutigen Adresse zum Erkennen des Speicherorts.

Registrieren Sie Banken in 8051

Registrieren Sie Banken in 8051

Registrieren Sie Banken in 8051



Der 8051 Mikrocontroller besteht aus vier Registerbanken wie Bank0, Bank1, Bank2, Bank3, die vom PSW-Register (Program Status Word) ausgewählt werden. Diese Registerbänke befinden sich im internen RAM-Speicher des 8051-Mikrocontrollers und werden zum Verarbeiten der Daten verwendet, wenn der Mikrocontroller programmiert wird.


Wechsel von Registerbanken



Standardmäßig ist der 8051-Mikrocontroller mit der Registerbank 0 eingeschaltet, und mithilfe des Programmstatusworts (PSW) können wir zu anderen Banken wechseln. Die zwei PSW-Bits werden zum Umschalten zwischen den Registerbänken verwendet. Auf diese beiden Bits wird über die bitadressierbaren Anweisungen SETB und CLR zugegriffen.

Basierend auf den möglichen Kombinationen von RS1 und RS0 von PSW wird die Registerbank entsprechend geändert, d. H. Wenn RS1 und RS0 0 sind, wird die Bank 0 ausgewählt. In ähnlicher Weise werden Bank1, 2 und 3 gemäß den Werten von RS1 und RS0 ausgewählt.

Stapelspeicherzuordnung im 8051-Mikrocontroller

Der Stapel ist ein Bereich des Direktzugriffsspeichers (RAM), der zugewiesen ist, um vorübergehend alle Parameter der Variablen zu speichern. Der Stapel ist auch dafür verantwortlich, die Reihenfolge, in der eine Funktion aufgerufen wird, daran zu erinnern, dass sie korrekt zurückgegeben werden kann. Bei jedem Aufruf der Funktion werden die damit verbundenen Parameter und lokalen Variablen zum Stack (PUSH) hinzugefügt. Wenn die Funktion zurückkehrt, werden die Parameter und Variablen vom Stapel entfernt („POP“). Aus diesem Grund ändert sich die Stapelgröße eines Programms kontinuierlich, während das Programm ausgeführt wird.


Das für den Zugriff auf den Stapel verwendete Register wird als Stapelzeigerregister bezeichnet. Der Stapelzeiger ist ein kleines Register, mit dem auf den Stapel gezeigt wird. Wenn wir etwas in den Stapelspeicher schieben, erhöht sich der Stapelzeiger.

Stapelspeicherzuordnung im 8051-Mikrocontroller

Stapelspeicherzuordnung im 8051-Mikrocontroller

Beispiel

Beim Einschalten eines 8051-Mikrocontrollers ist der enthaltene Wert des Stapelzeigers standardmäßig 07, wie in der obigen Abbildung gezeigt. Wenn wir die PUSH-Operation ausführen, wird die Stapelzeigeradresse erhöht und in ein anderes Register verschoben. Um dieses Problem zu vermeiden, müssen wir vor dem Starten des Programms dem Stapelzeiger einen anderen Adressort zuweisen.

PUSH-Betrieb

Der 'PUSH' wird verwendet, um die Werte aus einem beliebigen Register zu entnehmen und in der Startadresse des Stapelzeigers, d. H. 00h, unter Verwendung der 'PUSH' -Operation zu speichern. Und für den nächsten 'PUSH' erhöht er +1 und speichert den Wert in der nächsten Adresse des Stapelzeigers, d. H. 01h.

PUSH-Betrieb des Stacks

PUSH-Betrieb des Stacks

PUSH-Betrieb bedeutet (First in First out)

Beispiel: WAP in Assemblersprache für den PUSH-Betrieb

0000h
MOV 08h, # 21h
MOV 09h, # 56h
PUSH 00h
PUSH 01h
ENDE

POP-Betrieb

Es wird verwendet, um die Werte von der maximalen Adresse des Stapelzeigers auf die Adresse eines anderen Registers zu setzen. Wenn wir dieses 'POP' erneut verwenden, wird es um 1 dekrementiert und der in einem Register gespeicherte Wert wird als 'POP' angegeben.

POP-Betrieb im Stapel

POP-Betrieb im Stapel

POP-Betrieb bedeutet 'Last in First out'.

000H
MOV 00H, # 12H
MOV 01H, # 32H
POP 1FH
POP 0EH
ENDE

Register des 8051 Mikrocontrollers

Wenn wir eine Operation ausführen, egal ob Addition oder Subtraktion, können diese Operationen nicht direkt im Speicher ausgeführt werden und werden daher unter Verwendung der Register ausgeführt. Es gibt verschiedene Arten von Register im 8051 Mikrocontroller .

Diese Register werden basierend auf ihren Operationen in zwei Typen eingeteilt:

• Allzweckregister

• Sonderfunktionsregister

Allzweckregister

Wie wir zuvor in diesem Artikel besprochen haben, gibt es vier verschiedene Bankregister, wobei jede Bank 8 adressierbare 8-Bit-Register hat und jeweils nur auf ein Bankregister zugegriffen werden kann. Durch Ändern der Bankregisternummer im Flaggenregister können wir jedoch auf andere Bankregister zugreifen, die weiter oben in diesem Dokument zusammen mit erläutert wurden Interrupt-Konzept in 8051 .

Sonderfunktionsregister

Die speziellen Funktionsregister, einschließlich Akkumulator, Register B, Datenzeiger, PCON, PSW usw., sind für einen vorbestimmten Zweck während der Herstellung mit der Adresse 80H bis FFH ausgelegt, und dieser Bereich kann nicht für den Daten- oder Programmspeicherzweck verwendet werden. Diese Register können durch Bitadressen- und Byteadressregister implementiert werden.

Arten von Sonderfunktionsregistern

Der 8051 besteht aus vier ein- / ausgangsbezogenen Sonderfunktionsregistern, in denen sich insgesamt 32 E / A-Leitungen befinden. Die Sonderfunktionsregister steuern die aus den E / A-Leitungen gelesenen Werte und die Sonderfunktionsregister, die den Betrieb des 8051 steuern. Die Hilfs-Sonderfunktionsregister sind nicht direkt mit dem 8051 verbunden - aber tatsächlich ohne diese Register - dem 8051 kann nicht richtig funktionieren. Der Registersatz von 8051 wird unten erläutert.

Registersatz des 8051 Mikrocontrollers

Das Einstellen eines festen konstanten Wertes im Register wird als Registersatz bezeichnet. Die Werte werden mit dem Befehlssatz in den Registern eingestellt. Der 8051 folgt den CISC-Anweisungen mit der Harvard-Architektur. Das CISC steht für Complex Instruction Set Computing . Verschiedene Arten von Anweisungen im 8051-Mikrocontroller umfassen:

  1. Arithmetische Anweisungen
  2. Bedingte Anweisungen
  3. Anweisungen zum Aufrufen und Springen
  4. Schleifenanweisungen
  5. Logische Anweisungen
  6. Bullion Anweisungen

1. Arithmetische Anweisungen

Die arithmetischen Anweisungen führen verschiedene grundlegende Operationen aus, wie zum Beispiel:

  • Zusatz
  • Subtraktion
  • Multiplikation
  • Teilung
Arithmetische Anweisungen im 8051 Microcontroller

Arithmetische Anweisungen im 8051 Microcontroller

Beispiele:

ein. Zusatz:

Org 0000h
MOV R0, # 03H // Verschiebe den Wert 3 ist Register R0 //
MOV A, # 05H // verschiebe den Wert 5 in Akkumulator A //
Addiere A, 00H // Akkumulatorwert '5' mit 0 und speichere auf Akkumulator //
ENDE

b. Subtraktion:

Org 0000h
MOV R0, # 03H // Verschiebe den Wert 3 ist Register R0 //
MOV A, # 05H // verschiebe den Wert 5 in Akkumulator A //
SUBB A, 03H // A = 5-3 Endwert ist 2, gespeichert im Akkumulator A //
ENDE

C. Multiplikation:

Org 0000h
MOV R0, # 03H // Verschiebe den Wert 3 ist Register R0 //
MOV A, # 05H // verschiebe den Wert 5 in Akkumulator A //
MUL A, 03H // A = 5 * 3 Endwert ist 15, gespeichert im Akkumulator A //
ENDE

D. Abteilung:

Org 0000h
MOV R0, # 03H // Verschiebe den Wert 3 ist Register R0 //
MOV A, # 15H // verschiebe den Wert 5 in Akkumulator A //
DIV A, 03H // A = 15/3 Endwert ist 5 im Akkumulator A // gespeichert
ENDE

2. Bedingte Anweisungen

Die CPU kann die Anweisungen basierend auf der Bedingung ausführen, indem sie den Einzelbitstatus überprüft, oder der Bytestatus wird als bedingte Anweisungen bezeichnet, wie z.

Überprüfen des Einzelbitstatus im bitadressierbaren Register

JB- Sprung wenn unten

JNB-Sprung, wenn nicht oben

Überprüfen des Übertragsbitstatus

JC-Sprung, wenn Carry-Flag

JNC-Sprung, wenn kein Carry

Zum Überprüfen des Akkumulatorstatus entweder 0 oder 1

JZ- Sprung wenn Null Flag

JNZ-Sprung, wenn nicht Null

Hier geht es um das im 8051-Mikrocontroller eingestellte Register und dessen Stapelspeicherzuordnung. Wir hoffen, dass dieser Artikel Ihnen einige wichtige Einblicke in das Thema sowie einige sehr interessante Programme zu jedem Thema gegeben hat. Sie können uns auch schreiben, wenn Sie Hilfe benötigen Codierung des Mikrocontrollers und auch über die neueste Projekte auf Mikrocontroller .