Speicherorganisation und ALU der Intel 8051-Mikrocontroller

Eingeordnet in Informatik

Geschrieben am in Deutsch mit einer Größe von 4,66 KB

Speicherorganisation der Intel 8051-Familie

In der Intel 8051-Familie sind der Programmspeicher und der Datenspeicher physisch voneinander getrennt. Sowohl Daten als auch Programme können auf internen oder externen Speichergeräten gespeichert werden. Um die Identifizierung externer Speicherplätze (Programm und Daten) zu erleichtern, auf die während der Ausführung von Anweisungen zugegriffen wird, erzeugt der Mikroprozessor Impulse auf der Leitung ALE (Address Latch Enable) und steuert den Ausgabezustand von PSEN (Program Store Enable), wie nachfolgend beschrieben.

Programmspeicher in 8051-basierten Systemen

In Systemen der 8051-Familie wird die Auswahl des Programmspeichers (intern oder extern) vom Hardware-Designer vorgenommen. Der Mikroprozessor greift nur dann auf den externen Speicher zu, wenn der Eingang \EA (External Access Enable) mit Masse (GND) verbunden ist. Wenn dieser Eingang auf "High" (verbunden mit Vcc) gelegt wird, verwendet der Mikroprozessor seinen internen Speicher für niedrige Adressen und den externen Speicher für die hohen Adressbereiche.

Datenspeicher (Data Memory)

Die Prozessoren der untersuchten Familie besitzen einen Block von Datenspeicher für Lese- und Schreibvorgänge (wie RAM), der in 8-Bit-Worten organisiert ist. Im 8051 gibt es 128 Register (128 x 8 Bit), auf die über die Adressen 00H bis 7FH zugegriffen wird. Der Bereich von 10H bis FFH umfasst die Speicherregister im "High"-Bereich, reservierte (nicht verwendete) Bereiche sowie die Special Function Register (SFR).

Zugriff auf interne und externe Daten

Interne und externe Datenspeicher können im selben Programm verwendet werden; der Zugriff erfolgt durch die Ausführung verschiedener Anweisungen. Die Ausführung von Befehlen wie MOV bewirkt die Übertragung von Daten zwischen Registern der internen RAM-Struktur und/oder den Special Function Registern. Der Zugriff auf den externen Datenspeicher erfolgt durch die Implementierung der Anweisung MOVX. Es ist zudem möglich, Datenworte aus dem Programmspeicher an den Prozessor zu übertragen, indem Anweisungen mit dem Mnemonic MOVC ausgeführt werden.

Registerbänke und Bit-Adressierung

Im internen Speicher ist die Existenz von 32 Registern hervorzuheben, die in vier Bänken angeordnet sind. In jeder der vier Bänke werden die Register von R0 bis R7 identifiziert. Es ist möglich, den Inhalt dieser Register durch Befehle vom Typ MOV Rn, A oder MOV Rn, #Byte (sowie MOV A, Rn) mit n = 0, 1, ..., 7 zu lesen oder zu schreiben. Die Bänke werden mit zwei Bits, RS0 und RS1, ausgewählt. Die Register, deren Adresswerte zwischen 20H und 2FH liegen, können zudem bitweise durch die Implementierung von Befehlen wie SETB bit, CLR bit, MOV C, bit und MOV bit, C angesprochen werden. Dabei steht C für das Carry-Flag und bit für die gewählte Adresse im RAM.

Die Arithmetisch-logische Einheit (ALU)

In der Arithmetisch-logischen Einheit (ALU) werden arithmetische Operationen (Addition, Subtraktion, Multiplikation und Division ganzer Zahlen) sowie logische Operationen (UND, ODER, XOR und NOT) durchgeführt. Die ALU arbeitet mit Datenworten von acht Bits und beeinflusst in einigen Fällen den Zustand einer Reihe von Flags im PSW-Register (Program Status Word). Für die am häufigsten verwendeten Operationen, an denen zwei Operanden beteiligt sind, wird der Akkumulator (ACC) verwendet, um einen der Operanden sowie nach der Ausführung das Ergebnis der Operation aufzunehmen.

Besonderheiten: Multiplikation und Division

Anders als die meisten 8-Bit-Prozessoren kann die ALU des 8051 die Multiplikation und Division ganzer Zahlen mit nur einem Befehl durchführen.

  • Multiplikation: Ein Operand wird in den Akkumulator geschrieben und der andere in das Register B. Das Ergebnis der Operation nach Ausführung des Befehls MUL AB wird in denselben Registern hinterlegt, wobei das höherwertige Byte in Register B und das niederwertige Byte im Akkumulator gespeichert wird.
  • Division: Bei der Ausführung von DIV AB wird der Quotient aus der Teilung des Akkumulators durch den Inhalt von Register B im Akkumulator registriert, während der Rest der Division im Register B verbleibt.

Verwandte Einträge: