8051 Mikrocontroller

Arbeitsweise eines Mikrocomputers

Die CPU führt strikt die Befehle der Reihenfolge aus, die ihr vom Programm vorgegeben werden.
Dabei wird zuerst der Befehl eingelesen und anschließend ausgeführt. Das Programm wird Befehl für Befehl abgearbeitet.

 

Das Programm

Das Programm selbst ist eine Folge von Befehlen und Anweisungen.
Das Programm liegt in aufeinander folgenden Adressen im Speicher, wobei jede Adresse einen Speicherplatz mit 8 Bit markiert.
Die Adresse selbst, ist z.B. eine 16-Bit Binärzahl. 

Jede Instruktion, die die CPU ausführen soll, wird durch ein entsprechendes Bitmuster in einem Byte (8 Bit = 1 Byte) dargestellt. Das gespeicherte Programm, welches die CPU verstehen und lesen kann, nennt man Maschinenprogramm.

Ein Programm in Maschinensprache besteht nur aus 0 und 1 (Nullen und Einsen).

Um eine leichtere Lesbarkeit zu erreichen, kann man je 4 Bit zusammenfassen und als HEX-Zahl darstellen.

 

Beispiel:

Binärzahl        Hex-Zahl

11001110       CE

10011100       9C

11100011       E3

 

Ein Programm in Hex-Zahl lässt sich aber für den Menschen kaum lesen. Daher stellt man die Operationen symbolisch durch Abkürzungen (Mnemonics) dar.
Ein so geschriebenes Programm ist ein Assemblerprogramm.

 

Beispiel:

Anweisung: Transferiere: Zieladresse, Quelladresse (Quelladresse in die Zieladresse)

 

a.) Assemblersprache

MOV 20h, 30h      (Inhalt von 30hex in 20hex kopieren)

 

b.) Maschinensprache (steht im Speicher)

10000101   MOV

00100000   Ziel

00110000   Quelle

 

Ein in Assembler geschriebenes Programm wir von einem Übersetzungsprogram (Makro-Assembler) in Maschinensprache übersetzt und in den Speicher des Mikrocomputers geladen.

 

Der Aufbau einer Anweisung

Grundsätzlich besteht eine Anweisung aus einem Operanden und einer Operation.
Dementsprechend gibt es einfache und mächtige Befehle. Einfache Befehle sind ein Byte und mächtige Befehle können 3 Byte lang sein.

 

Beispiel 1-Byte-Befehl:

Transferiere: Inhalt von Register R1 in den Akku

im Speicher steht dann: 11101001

Bei einem 1-Byte Befehl ist die Operation und der Operand in einem Byte zusammengefasst.
Der Operand befindet sich in der Regel in einem Register der CPU.

 

Beispiel 2-Byte-Befehl:

Transferiere: Konstante 10h in den Akku
(10h = 10hex)
Für konstante Werte steht ein #-Zeichen vor dem Wert

MOV A,#10h

im Speicher steht:
01110100
00010000

Hier steht die Operation im ersten und der Operand im zweiten Byte.

 

Beispiel 3-Byte-Befehl:

Transferiere: Konstante 12h in die Zieladresse 11h

MOV 11h,#12h

im Speicher steht:
01110101
00001011
00001100

 

Die Programm-abarbeitung durch die CPU

Nach einen Reset bzw. beim Start beginnt die CPU ihre Arbeit bei der Adresse 0000h.
An dieser Adresse erwartet die CPU die erste Anweisung des Programms. Die CPU liest die Anweisung und führt sie aus.
Die Ausführung kann innerhalb der CPU erfolgen oder externe Baugruppen (z.B. Speicher, Ports) ansprechen.
Ist die Anweisung ausgeführt, gibt die CPU die nächste Adresse auf dem Adressbus sowie das Steuersignal zum Lesen des Speicherinhaltes aus. Dieser Inhalt ist der Programmcode der nächsten Anweisung. Die Anweisung wird gelesen und dann ausgeführt.

 

Suche