Modul 242 - Mikroprozessoranwendung realisieren
Übersicht
Unterschiede und Eigenschaften
Mikroprozessor, Mikrocomputer und Mikrokontroller (MC)
Mikroprozessor, Mikrocomputer und Mikrokontroller (MC)
Mikrokontroller sind leistungsfähige, kompakte, programmierbare Rechnersysteme.
Die Komponenten (CPU, Zentralspeicher, Input- /Output-Baugruppen (I/O) befinden sich auf einem Chip.
Werden auch oft als Embedded Computer oder “Einchip-Computer” bezeichnet.
Zentraleinheit, CPU (Central Processing Unit), ist fähig logische und arithmetische Operationen nach einem beliebigen Programm auszuführen.
Kleiner Computer bestehend aus einem Mikroprozessor, Daten- und Programmspeicher, sowie Anschlusselektronik für Peripherie. Der Mikrocomputer ist die Basis für jeden PC.
Ist ein Mikrocomputer, der auf einem einzigen Chip integriert ist. Er besteht aus CPU, Zentralspeicher und Input- / Output-Baugruppen (I/O).
Wird auch als “Einchip-Computer” oder Embedded Computer bezeichnet.
Embedded Systems sind aufgabenspezifisch, sie führen eine einzelne Aufgabe innerhalb eines grösseren Systems aus.
“Anwendungen die einen Mikrokontroller meistens versteckt eingebettet haben, nennt man auch Embedded Systems. Nach aussen hin ist der Computer in der Anwendung nicht direkt ersichtlich. Der Prozessor ist mit Sensoren und Aktoren komplett in die Anwendung integriert“
Im Steuerwerk werden die Steuersignale wie z.B. Memory-Read usw. generiert bzw. externe Signale wie z.B. Interrupts erkannt.
Die gelesenen Befehle werden durch den Dekoder aufgeteilt und alle notwendigen internen Aktionen aktiviert.
der Dekoder ist eine “elektronische Maschine”, die in mehreren Schritten den anstehenden Befehl ausführt.
Der Programmzähler erhöht nach der Ausführung eines Befehls seinen Wert um einen Befehl und weist somit auf den nächsten Befehlseintrag.
Die bearbeiteten Daten werden im Register gespeichert. Das wichtigste Register wird als Akku bezeichnet.
das Register Akku ist ein Arbeitsregister und wird für alle auszuführenden Befehle benutzt.
ALU (Arithmetic Logic Unit) ist das Additionswerk. Es wird für alle mathematischen Berechnungen verwendet.
Die Ergebnisse einer Operation werden entweder im Akku zwischengespeichert oder an ein Register überwiesen.
Das Programm Status Wort (PSW) oder Flag-Register signalisiert über einzelne Bits Bearbeitungszustände sowie spezielle Werte.
Die Flags werden verwendet, um arithmetische Operationen und bedingte Sprünge zu steuern.
Die Flags werden ausschliesslich durch den Inhalt des Akkus (z.B. nach einer mathematischen oder logischen Operation) beeinflusst / geändert.
Dieses Bit wird gesetzt, wenn bei einer arithmetischen Operation ein 8 Bit Überlauf eingetreten ist.
mehr als 8 Bit -> C = 1
(PSW.7 oder C)
Wird für die vorzeichenbehaftete Arithmetik benötigt.
OV = 1 wenn bei einer Addition oder Subtraktion der Zahlenbereich (-128 (80H) bis 127 (7FH)) verlassen wird und bei einer Division durch 0
(PSW.2)
Parity = 1 wenn die Anzahl der Bits mit dem Wert 1 im Akku ungerade ist.
P kann nur gelesen werden.
Wert ist ungerade -> p = 1
(PSW.0)
Zeigt an, dass das Ergebnis einer vorausgegangener Operation im Akku gleich Null ist.
Wenn alle 8 Bit 0 sind -> z = 1
Ein Adressbus ist für die Übertragung von Speicher- und Peripherie-Adressen zuständig.
Eine Adresse mit einer Länge von n Bit entspricht einem Adressraum von \(2^n \) Elementen
0000 0100 - 4
0000 1000 - 8
0001 0000 - 16
0010 0000 - 32
0100 0000 - 64
1000 0000 - 128
Dezimalzahl 15 in Binärzahl:
8 4 2 1
-------------
1 1 1 1
8 + 4 + 2 + 1 = 15
Dezimalzahl 1234 in Binärzahl:
1024 512 256 128 64 32 16 8 4 2 1
------------- -------------- --------------
1 0 0 1 1 0 1 0 0 1 0
1 - 9
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
Binärzahl 101 in Hexadezimal:
8 4 2 1
-------------
0 1 0 1
| |
4 + 1 = 5h
Binärzahl 1111 in Hexadezimal:
8 4 2 1
-------------
1 1 1 1
| | |
1 + 4 + 1 + 1 = 15 = Fh
Binärzahl 10011010010 in Hexadezimal:
8 4 2 1 8 4 2 1 8 4 2 1
------------- ------------- -------------
0 1 0 0 1 1 0 1 0 0 1 0
| | |
4 13 2
= 4D2h
11111111b + 00000001b
1 1 1 1 1 1 1 1
+ 0 0 0 0 0 0 0 1
Ü 1 1 1 1 1 1 1 1
= 0 0 0 0 0 0 0 0
Carry = 1 -> mehr als 8 Bit (letzter Übertrag)
Zero = 1 -> alle 8 Bit sind 0
Parity = 0 -> Anzahl '1er Bits' gerade
0 - 0 = 0
0 - 1 = 1 Übertrag
1 - 0 = 1
1 - 1 = 0
01000000b - 00000001b
0 1 0 0 0 0 0 0
- 0 0 0 0 0 0 0 1
Ü 1 1 1 1 1 1
= 0 0 1 1 1 1 1 1
Carry = 0 -> nicht mehr als 8 Bit
Zero = 0 -> nicht alle 8 Bits sind 0
Parity = 0 -> Anzahl '1er Bits' gerade
Hexadezimalzahl 3E8h in Binär:
3 = 0011
E = 14 = 1110
8 = 1000
---------------------
3E8h = 0011 1110 1000
# = Wert
Ohne # = Wert von der Adresse
Rotiert Akkumulator Links (Rotate Left)
Im Akku steht folgender Wert:
11000101b
Nach dem Befehl: RR A steht im Akku:
10001011b
Rotiert Akkumulator rechts (Rotate Right)
Im Akku steht folgender Wert:
11000101b
Nach dem Befehl: RR A steht im Akku:
11100010b
Tauscht Nibbles im Akkumulator
Der Befehl tauscht das obere Nibble mit dem unteren Nibble im Akkumulator.
Im Akkumulator steht folgender Wert:
11000101b
Nach dem Befehl SWAP A steht:
01011100b
DIV <Akku> <Register B>
Dividiert den Akkuinhalt durch das Register B
MUL <Akku> <Register B>
Multipliziert den Akkuinhalt mit dem Register B
MOV A, #01h - # Steht für eine Zahl, h steht für Hexadezimal
MOV A, B - Inhalt von B wird ins A kopiert, Inhalt von B bleibt
MOV R1, R0 - Ist nicht möglich! - Muss über A (Akku) kopiert werden
Der obere RAM Bereicht ist nur direkt adressierbar.
Dieser Bereich wird direkt adressiert un enthält für das System wichtige Register. Die IO Ports befinden sich ebenfalls in diesem Bereich.
Bei dieser Architektur sind Code und Daten im selben (64kB grossen) Speicherbereich.
Code und Datenbereiche dürfen sich nicht überschneiden.
Bei der Harvard Architektur werden die Code und Daten getrennt gespeichert.
Dabei wird über eine Steuerleitung signalisiert, ob es sich bei der Aktion um Code oder Daten handelt.