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.