Müller / Walz Mikroprozessortechnik - ciando...

30

Transcript of Müller / Walz Mikroprozessortechnik - ciando...

Page 1: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik
Page 2: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

Müller / Walz Mikroprozessortechnik

Page 3: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

Elektronik 5

Vogel Buchverlag

Helmut Müller / Lothar Walz

Mikroprozessortechnik8., bearbeitete Auflage

Page 4: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

ISBN 978-3-8343-3285-18. Auflage. 2012Alle Rechte, auch der Übersetzung, vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder einem anderen Verfahren) ohne schriftliche Genehmigung des Verlages reprodu-ziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Hier-von sind die in §§ 53, 54 UrhG ausdrücklich genannten Ausnahmefälle nicht berührt.Printed in GermanyCopyright 1988 by Vogel Industrie Medien GmbH & Co. KG, WürzburgHerstellung: Vogel Business Media GmbH & Co. KG, Würzburg

Weitere Informationen:www.vogel-buchverlag.de

http://twitter.com/vogelbuchverlagwww.facebook.com/vogel.buchverlagwww.vogel-buchverlag.de/rss/buch.rss

Page 5: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

5

Vorwort

Mikrocontroller werden immer kleiner, billiger und trotzdem noch leistungsfähiger. Ihr Ein-satz ist inzwischen auf allen Gebieten der Steuerungs- und Regelungstechnik, ob im industri-ellen Bereich, im Verkehr, in der Telekommunikation oder im Haushalt, nicht mehr wegzu-denken. Inzwischen sind auch neue Berufe entstanden, die als Hauptlernziel den Erwerb vonKenntnissen über Aufbau und Anwendung von Computern haben. Kernstück dieser stürmi-schen und noch immer nicht abgeschlossenen Entwicklung ist der Mikroprozessor.

In diesem Band 5 der Fachbuchgruppe Elektronik werden der bei allen Computern dochrecht ähnliche Aufbau und die gleiche grundsätzliche Arbeitsweise und Programmierung aus-führlich erklärt. Aufbau und Verschaltung der zu einem Computer gehörenden Hardware unddie Anwendung von externen oder auf dem Chip integrierten Ein-/Ausgabebausteinen werdenerläutert, ebenso die zweckmäßige Strukturierung von Programmen und ihre Codierung, so-wohl in Assembler als auch in der höheren Programmiersprache C.

Nach unserer Ansicht ist es zweckmäßig, diese allgemeinen Prinzipien anhand eines wirk-lich existierenden Systems zu erarbeiten. Dazu wird im Hauptteil des Buches ein moderner,sehr weit verbreiteter Mikrocontroller – der 80C537 aus der schon lange existierenden 8051-Familie – verwendet. Um dem Leser eigenständiges Arbeiten zu ermöglichen, ist eine voll-ständige Entwicklungsumgebung, bestehend aus Editor, Assembler, C-Compiler und Debug-ger, im Onlineservice InfoClick abrufbar. Die mitgelieferten Beispiele geben Anregungen, wieverschiedene Standardprobleme gelöst werden können. Es können eigene Programme ent-wickelt und die Funktion mit dem integrierten Debugger getestet werden.

Kurze Einführungen in die speziellen Eigenschaften von Signalprozessoren anhand der Fa-milie ADSP21xx der Firma Analog Devices sowie in einen RISC-Prozessor der PIC-Familieder Firma Microchip sollen einerseits dem Leser einen Überblick über andere moderne Pro-zessorarchitekturen geben, aber ebenso zeigen, daß auch diese Prozessoren auf dem bereits be-kannten Prinzip aufbauen.

Das vorliegende Buch soll auch vermitteln, daß die Abläufe in all diesen Computern imGrunde gleich und eigentlich recht «primitiv» sind. Erst die immer weiter erhöhte Arbeitsge-schwindigkeit und die große Zuverlässigkeit dieser Bausteine machen den Computer heutzuta-ge zu einem wertvollen Werkzeug.

Für das Verständnis dieses Buches sind Grundkenntnisse über binäre Signale und derenGrundverknüpfungen, das duale Zahlensystem und das Prinzip eines Flipflops ausreichend.

Das Buch ist geeignet für alle diejenigen, für die ein genaueres Verständnis der Arbeitswei-se und Programmierung von Mikrocomputern wichtig ist, auch als Grundlage für die Aneig-nung von weiterem Wissen.

Freiburg im Breisgau Helmut MüllerLothar Walz

Page 6: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

6

Zur Fachbuchreihe «Elektronik» gehören die Bände:

Klaus Beuth / Olaf Beuth: Elementare Elektronik

Heinz Meister: Elektrotechnische Grundlagen(Elektronik 1)

Klaus Beuth: Bauelemente(Elektronik 2)

Klaus Beuth / Wolfgang Schmusch: Grundschaltungen(Elektronik 3)

Klaus Beuth: Digitaltechnik(Elektronik 4)

Helmut Müller / Lothar Walz: Mikroprozessortechnik(Elektronik 5)

Wolfgang Schmusch: Elektronische Meßtechnik(Elektronik 6)

Klaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik(Elektronik 7)

Wolf-Dieter Schmidt: Sensorschaltungstechnik(Elektronik 8)

Page 7: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

7

Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.1 Prinzip der Datenverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.1.1 Binäre Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.1.2 Verarbeitung binärer Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.2 Blockschaltbild eines Mikrocomputers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.2.1 Zentraleinheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.2.2 Zentralspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.2.3 Ein-/Ausgabebausteine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.2.4 Busleitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.2.5 Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.3 Prinzipielle Arbeitsweise eines Computers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.3.1 Historische Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.3.2 Prinzipieller Ablauf eines Programms . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2 Baugruppen eines Mikrocomputers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.1 Systembus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.1.1 Bausteine an Busleitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.1.2 Adressierung von Daten in Speicher- und E/A-Bausteinen . . . . . . . . . . 322.1.3 Bausteinauswahl, Decodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Unvollständige Decodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Auswahl mit Jumpern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Auswahl mit speziellen Decoderbausteinen . . . . . . . . . . . . . . . . . . . . . . 38Busleitungen im Multiplexbetrieb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.1.4 Bustreiber und Empfänger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.2 Zentraleinheit (CPU, Central Processing Unit) . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.2.1 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.2.2 Rechenwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.2.3 Befehls- oder Steuerwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462.2.4 Adreß- und Hilfsregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Adreßregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.3 Zentralspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

2.3.1 Aufbau von Halbleiterspeichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.3.2 Erweiterung der Wortbreite von gegebenen Speicherschaltungen . . . . . 512.3.3 Vergrößerung der Speicherzellenzahl . . . . . . . . . . . . . . . . . . . . . . . . . . . 522.3.4 Arten von Halbleiterspeichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Schreib-/Lesespeicher (RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Festwertspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2.3.5 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

3 Programmierung von Mikrocomputern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.1 Maschinenbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

3.1.1 Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.1.2 Prinzip der Steuerung durch binäre Befehle . . . . . . . . . . . . . . . . . . . . . . 68

Inhaltsverzeichnis

Page 8: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

8

3.1.3 Struktur eines Maschinenbefehls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.1.4 Erkennung von OP-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713.1.5 Darstellung von Befehlen und Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . 713.1.6 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4 Hardware des 8051-Mikrocontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.1 Blockschaltbild 80C537 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.2 Anschlußtechnik bei 80C537-Systemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

4.2.1 Anschlußtechnik des 80C537 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.2.2 Anschluß der externen Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794.2.3 Externe Programm- und Datenspeicher . . . . . . . . . . . . . . . . . . . . . . . . . 80

Harvard-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Von-Neumann-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

4.2.4 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

5 Maschinenprogrammierung des 80C537 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.1 Speichermodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.2 Transportbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

5.2.1 Allgemeine Schreibweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.2.2 Adressierungsarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Immediate-Adressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Direkte Adressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Registeradressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Registerindirekte Adressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Stackbefehle PUSH und POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

5.2.3 Adressierung externer Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.2.4 Zuordnung der Adressierungsart zum Speicherbereich . . . . . . . . . . . . . 96

Index-Basis-Adressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975.2.5 Symbolische Adressen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985.2.6 Parallele Ein-/Ausgabe-Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995.2.7 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

5.3 Bearbeitung von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015.3.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015.3.2 Rechnen mit dualen Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Zahlengerade, Zahlenkreis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101Addieren und Subtrahieren im Rechenwerk . . . . . . . . . . . . . . . . . . . . . 102Komplementdarstellung von Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Rechnen mit positiven und negativen Dualzahlen . . . . . . . . . . . . . . . . 106

5.3.3 Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.3.4 Arithmetische Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Zählbefehle (INC, DEC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Addier- und Subtrahierbefehle (ADD, ADDC, SUBB) . . . . . . . . . . . . 109

5.3.5 Binäre Befehle (ANL, ORL, XRL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125.3.6 Schiebebefehle (RL, RLC, RR, RRC) . . . . . . . . . . . . . . . . . . . . . . . . . 1145.3.7 Einzelbitbefehle (SETB, CLR, CPL) . . . . . . . . . . . . . . . . . . . . . . . . . . 1165.3.8 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

5.4 Programmsteuerbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175.4.1 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175.4.2 Unbedingte Sprungbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.4.3 Bedingte Sprungbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

5.5 Struktur von Programmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235.5.1 Symbolische Adressierung (Symbol, Marke, Label) . . . . . . . . . . . . . . 1235.5.2 Strukturierte Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

Folge (lineare Struktur, Sequenz) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128Schleife (Wiederholung, loop) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Page 9: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

9

Alternativen (Entscheidungen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305.5.3 Programmbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Erstellen einer Tabelle im externen Datenspeicher . . . . . . . . . . . . . . . . 132Verlagern einer Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135Binäre Verknüpfung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Vergleicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Zeitschleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

5.5.4 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1425.6 Unterprogramme (Subroutines) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1435.7 Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

5.7.1 Polling/Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1515.7.2 Ablauf eines Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1515.7.3 Ansteuern der Interrupt-Service-Routine (ISR) . . . . . . . . . . . . . . . . . . 152

Leitergebundener Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Vektorisierter Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

5.7.4 Priorität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1545.7.5 Interrupt beim 80C537 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Darstellung der Steuerregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Anforderung von Interrupt (Interrupt-Request) . . . . . . . . . . . . . . . . . . 156Interrupt-Freigabe (Interrupt-Enable) . . . . . . . . . . . . . . . . . . . . . . . . . . 157Priorität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Interrupt-Adressen (Interrupt-Vektor-Tabelle) . . . . . . . . . . . . . . . . . . . 159Rücksprung aus Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Reaktionszeiten bei externen Interrupts . . . . . . . . . . . . . . . . . . . . . . . . 160Maschinenprogramm mit Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

5.7.6 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

6 E/A-Baugruppen Teil 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1636.1 Parallelports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

6.1.1 Blockschaltbild eines Portanschlusses . . . . . . . . . . . . . . . . . . . . . . . . . 1636.1.2 Treiberschaltung am Portanschluß . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1646.1.3 Anschluß von Peripheriebausteinen . . . . . . . . . . . . . . . . . . . . . . . . . . . 1656.1.4 Read-Modify-Write-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1656.1.5 Zeitlicher Ablauf einer Port-Ansteuerung . . . . . . . . . . . . . . . . . . . . . . . 166

6.2 Analog-Digital-Umsetzung (ADU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1666.2.1 Betriebsarteneinstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1666.2.2 Kanaleinstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1686.2.3 Referenzspannungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1696.2.4 Zeitlicher Ablauf einer A/D-Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . 1716.2.5 Beispielprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1726.2.6 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

7 Programmierung in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1777.1 Warum eine höhere Programmiersprache verwenden? . . . . . . . . . . . . . . . . . . . 1777.2 Grundlagen von C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

7.2.1 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1787.2.2 Namen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1787.2.3 Schlüsselwort (reserviertes Wort, Keyword) . . . . . . . . . . . . . . . . . . . . 1787.2.4 Konstante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1797.2.5 Zeichenketten (String Literal, String) . . . . . . . . . . . . . . . . . . . . . . . . . . 1807.2.6 Variable (Objekt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817.2.7 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1827.2.8 Felder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

7.3 Bestandteile eines C-Quelltextes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1857.3.1 Deklarationen (Vereinbarungen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

Page 10: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

10

7.3.2 Ausdrücke, Zuweisungen und Funktionsaufrufe, Blockanweisung . . . 1877.4 Strukturierte Programmierung in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

7.4.1 Schleifen (loop) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189While-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189For-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Do-While-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

7.4.2 Entscheidungen, Alternativen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194If-Else-Entscheidung, einfache Alternative . . . . . . . . . . . . . . . . . . . . . 194Schachtelung von If-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196If-Else-if-Else-Entscheidung, mehrfache Alternative . . . . . . . . . . . . . . 197Switch-Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

7.4.3 Sprunganweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Break-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Continue-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Return-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204Goto-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

7.5 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2047.5.1 Funktionsdeklaration, Funktionsdefinition, Funktionsaufruf . . . . . . . . 204

Funktionsdeklaration, Funktionsprototyp . . . . . . . . . . . . . . . . . . . . . . . 205Funktionsdefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Funktionsaufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

7.5.2 Standardfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207Funktionen für Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207Funktionen für Eingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Funktionen zur Stringbearbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Sonstige Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

7.6 Zeiger (Pointer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167.6.1 Deklaration und Manipulation von Zeigern . . . . . . . . . . . . . . . . . . . . . 2167.6.2 Zeiger und Felder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2197.6.3 Zeiger und Übergabe von Funktionsargumenten . . . . . . . . . . . . . . . . . 2217.6.4 Felder von Zeigern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

7.7 Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2247.7.1 Übergabe von Strukturen an Funktionen . . . . . . . . . . . . . . . . . . . . . . . 2267.7.2 Felder von Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

7.8 Interrupt in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307.9 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

8 E/A-Baugruppen Teil 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2338.1 Serielle Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

8.1.1 Synchrone Übertragung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2338.1.2 Asynchrone Übertragung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348.1.3 Serielle Standardschnittstelle RS 232 C – V.24/V.28 . . . . . . . . . . . . . . 236

Einrichtungen zur seriellen Datenübertragung . . . . . . . . . . . . . . . . . . . 236Schnittstellenleitungen und ihre Bedeutung . . . . . . . . . . . . . . . . . . . . . 236Betriebliche Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Elektrische Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Anschlußtechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Stromschleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

8.1.4 Serielle Schnittstelle 0 (S0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2418.1.5 Serielle Schnittstelle 1 (S1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2428.1.6 Betriebsarten der seriellen Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . 242

Mode 0: Synchroner Betrieb (Schieberegister), nur S0 . . . . . . . . . . . . 242Mode 1 (S0), Mode B (S1): 8 Bit UART . . . . . . . . . . . . . . . . . . . . . . . 245Mode 2: 9 Bit UART, nur S0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245Mode 3 (S0), Mode A (S1): 9 Bit UART . . . . . . . . . . . . . . . . . . . . . . . 246

Page 11: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

11

Multiprozessor-Übertragung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478.1.7 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

Synchrone Übertragung mit S0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Asynchrone Übertragung 9 Bit (8 Datenbit und 1 Paritybit) über S0 . . 248Senden asynchron über S1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Empfangen von Zeichen über S1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

8.1.8 Baudratenerzeugung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2518.1.9 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

8.2 Timer, Counter (Zeitgeber, Zähler) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2538.3 Timer 0 und Timer 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568.4 Compare/Capture Unit (CCU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

8.4.1 Reload-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Sekundentakt mit dem Compare-Timer erzeugen . . . . . . . . . . . . . . . . 266Beispiel mit Timer 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

8.4.2 Compare-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268Compare-Funktion Mode 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Compare-Funktion Mode 0 mit dem Compare-Timer . . . . . . . . . . . . . 269Compare-Funktion Mode 0 mit dem Timer 2 . . . . . . . . . . . . . . . . . . . . 274Compare-Funktion Mode 1 mit dem Timer 2 . . . . . . . . . . . . . . . . . . . . 276Zusammenfassung der Compare-Funktion . . . . . . . . . . . . . . . . . . . . . . 283

8.4.3 Capture-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

9 Sicherheitsmaßnahmen und Energieeinsparung . . . . . . . . . . . . . . . . . . . . . . . . . . 2859.1 Watchdog (Fail Save) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

9.1.1 Programmierbarer Watchdog-Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . 2869.1.2 Oszillator-Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

9.2 Energiesparende Betriebsarten (Power-Saving) . . . . . . . . . . . . . . . . . . . . . . . . 2889.2.1 Slow-down Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2899.2.2 Idle Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2899.2.3 Power-down Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

9.3 Lernziel-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

10 Multiplizier-Dividier-Einheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29310.1 Programmierung der MDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29310.2 Steuerregister ARCON (Arithmetic Unit Control) . . . . . . . . . . . . . . . . . . . . . . 29510.3 Schieben und Normalisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

11 Programmbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.1 Ansteuerung einer Flüssigkristallanzeige (LCD) . . . . . . . . . . . . . . . . . . . . . . . 29811.2 Balkenanzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30311.3 Centronics-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30511.4 Zweipunktregler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30811.5 Abfrage eines Tastenfeldes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

11.5.1 Abfrage größerer Tastenfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31411.5.2 Interruptgesteuerte Tastaturabfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

11.6 Erzeugung sinusförmiger Signale mit PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . 31511.7 I2C-Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

11.7.1 Anschlußtechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32311.7.2 Busprotokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32311.7.3 Bestandteile des Busprotokollprogramms . . . . . . . . . . . . . . . . . . . . . . 32511.7.4 Ablauf einer Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

12 Weitere Prozessor-Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32912.1 Signalprozessoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

Page 12: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

12

12.1.1 Grundlagen der digitalen Signalverarbeitung . . . . . . . . . . . . . . . . . . . . 330Aufbereitung des Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330Verarbeitung des Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

12.1.2 Aufbau und Programmierung von Signalprozessoren . . . . . . . . . . . . . 332Signalprozessor ADSP 2181 von Analog Devices . . . . . . . . . . . . . . . . 333Signalprozessor TMS 32010 von Texas Instruments . . . . . . . . . . . . . . 340

12.1.3 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34212.2 RISC-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

12.2.1 Probleme der CISC-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34212.2.2 Prinzip der RISC-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34412.2.3 Leistungssteigerung bei RISC-Architektur . . . . . . . . . . . . . . . . . . . . . . 345

Verkleinerung der Anzahl der Befehle . . . . . . . . . . . . . . . . . . . . . . . . . 345Überlappende Befehlsabläufe (Pipelining) . . . . . . . . . . . . . . . . . . . . . . 346Registerorganisationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Speicherorganisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35012.2.5 RISC-Controller PIC16C5x von Microchip Technology . . . . . . . . . . . 351

Aufbau und Anschlüsse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Befehlsablauf, Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352Blockschaltbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354Befehlsliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

13 Entwicklungshilfsmittel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36113.1 Schritte bei der Programmentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36113.2 Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36213.3 Assembler (Assemblierer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

13.3.1 Befehle, Symbole, Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36313.3.2 Assemblerdirektiven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

Absolute Segmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363Verschiebbare Segmente (relocatable segments) . . . . . . . . . . . . . . . . . 364Weitere wichtige Assemblerdirektiven . . . . . . . . . . . . . . . . . . . . . . . . . 366Vom Assemblierer bzw. Linker erzeugte Dateien . . . . . . . . . . . . . . . . 368

13.4 Compiler, Kompilierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36813.5 Linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36913.6 Simulator (Debugger) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36913.7 Programmtest im Zielsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

13.7.1 Download über die serielle Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . 37013.7.2 EPROM-Emulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37013.7.3 CPU-Emulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

13.8 Entwicklungsumgebung (EU, engl. IDE: Integrated Development Environment) 37113.8.1 Installieren der EU Ride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37113.8.2 Erzeugen eines Quellprogrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37213.8.3 Erzeugen eines Projektes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37313.8.4 Assemblieren und Linken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37413.8.5 Testen (Debuggen) des Programmes . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.9 Optionseinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

14 Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37714.1 Schaltungsbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

14.1.1 Schaltungsbeispiel mit Harvard-Architektur . . . . . . . . . . . . . . . . . . . . 37714.1.2 Schaltungsbeispiel mit Von-Neumann-Architektur . . . . . . . . . . . . . . . 38014.1.3 Schaltungsbeispiel mit Flash-System . . . . . . . . . . . . . . . . . . . . . . . . . . 384

14.2 Ablaufsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38614.2.1 System-Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38614.2.2 Oszillatorschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

Page 13: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

13

14.2.3 Taktausgang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38814.2.4 Zeitlicher Ablauf von Befehlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38814.2.5 Zugriff auf den externen Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

14.3 Befehlslisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39414.4 Selten verwendete Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39914.5 Zusammenfassung der Special Function Register . . . . . . . . . . . . . . . . . . . . . . . 40114.6 Anschlußbelegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40414.7 Intel-Hex-Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40614.8 Zeichensatz PC 850 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

15 Lösungen von Aufgaben der Lernziel-Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

Page 14: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

14

Page 15: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

15

1 Einführung

1.1 Prinzip der Datenverarbeitung

Datenverarbeitung mit Hilfe von Computern ist inzwischen in fast alle Bereiche der industria-lisierten Welt eingeführt. Computer helfen bei der Erfassung und Aufbereitung von Meßwer-ten, der Herstellung von Fertigungsunterlagen, sie steuern Maschinen aller Größen, verwaltenLagerbestände, kalkulieren Angebote, berechnen Gehälter und Steuern, speichern Verkehrs-sünder und freie Plätze in Flugzeugen. Der Leser könnte diese Liste sicher noch aus eigenerKenntnis ergänzen.Aber so verschiedenartig diese Anwendungen auf den ersten Blick auch sein mögen, vom

Prinzip her ergibt sich immer der gleiche Ablauf einer Datenverarbeitung (Bild 1.1).

EingabeEingabegeräte stellen Daten zur Verarbeitung bereit.

Zu diesen Eingabegeräten zählen beispielsweise:

� Meßfühler (Sensoren), etwa für Temperatur, Durchflußmenge, Gehalt an Schwefeldioxidusw.Meßfühler besitzen inzwischen oft eine eigene «Intelligenz», mit der die Meßwerte schonaufbereitet werden. Die Übertragung zum «Sammelrechner» erfolgt dann über ein Systemvon Leitungen, ein «Netzwerk», an das viele Baugruppen angeschlossen werden können.Leider gibt es viele konkurrierende Verfahren zur Übertragung der anfallenden Daten, wieInterbus-S, Profibus, I2C-Bus, CAN-Bus usw.;

� Taster oder ganze Tastaturen, Endschalter,� Datenspeicher wie Magnetband- oder Diskettenlaufwerke.

Bild 1.1 Prinzip der Datenverarbeitung

Page 16: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

16

VerarbeitungDiese Daten werden nun von der eigentlichen Verarbeitungseinheit, dem Computer, ge-lesen und entsprechend einer im Computer vorhandenen Arbeitsanweisung, dem Pro-gramm, verarbeitet.

Von den eingelesenen Meßwerten müssen vielleicht ein Mittelwert gebildet, Maximal- oderMinimalwerte überwacht oder Endschalter auf Betätigung überprüft werden. Bei einem Ange-bot müssen Warenpreise addiert und die Mehrwertsteuer hinzugerechnet werden.

AusgabeDie Ergebnisse dieser Verarbeitung müssen ausgegeben werden.

Mittelwerte werden als Diagramm gezeichnet; Motoren werden – abhängig von der Stellungder geprüften Endschalter – gestartet oder angehalten, Meldeleuchten aktiviert, Angebote ge-druckt oder Werte über ein «LAN» (Local Area Network) an übergeordnete Steuer- bzw. Ver-waltungsrechner weitergegeben.

Der Computer übernimmt dabei nicht nur die Verarbeitung, sondern steuert auch dasEinlesen der Daten sowie die Ausgabe der Ergebnisse.

Dieses Arbeitsprinzip gilt unabhängig davon, ob es sich nun um Mikro-, Mini-, Midi- oderGroßcomputer (Mainframe) handelt. Sie unterscheiden sich durch ihre Verarbeitungsge-schwindigkeit, die Anzahl der anschließbaren Geräte und natürlich durch ihren Preis.Daten fallen in zwei verschiedenen Formen an:

� als analoge Werte, z.B. bei Messungen von Temperatur, Druck, pH-Wert, Spannung amAbgriff eines Potentiometers;

� in binärer Form, z.B. bei Eingaben von Tastaturen, beim Lesen von Barcodes auf Waren-verpackungen oder bei der Überprüfung von Endschaltern.

1.1.1 Binäre Daten

Heutzutage werden Daten fast ausschließlich in binärer Form verarbeitet, d.h., analoge Datenmüssen vor der weiteren Verarbeitung erst mit Hilfe von Analog-Digital-Umsetzern in binäreSignale umgewandelt werden.Die folgenden Merksätze zeigen die Unterschiede der verschiedenen Signalarten.

Page 17: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

17

Analoge Signale können zwischen zwei Grenzwerten beliebig viele Zwischenwerte an-nehmen.Digitale Signale können nur eine begrenzte Anzahl von Zuständen annehmen, z.B. dieZustände +5 V, 0 V, –5 V.Binäre Signale können nur zwei Zustände annehmen.

Ein Schalter ist ein Beispiel für ein binäres Signal; er kann

� betätigt sein, dann ist das davon abgeleitete Signal: aktiv, wahr, true, logisch «1» oder inabgekürzter Schreibweise: 1;

� nicht betätigt sein, dann ist das Signal: nicht aktiv, falsch, false, logisch «0» oder in ab-gekürzter Schreibweise: 0.

In Computern werden binäre Signale meist durch zwei verschiedene elektrische Potentiale ge-bildet, die gut voneinander unterschieden werden können.

Bei der Übertragung gilt immer:� Das negativere der beiden Potentiale wird als LOW oder abgekürzt als L bezeichnet.� Das positivere der beiden Potentiale wird als HIGH oder abgekürzt als H bezeichnet.

Bei dieser Festlegung können auch beide Potentiale positiv bzw. negativ sein; so verwendetman bei der ECL-Technik (Emitter coupled logic) die beiden Potentiale –0,75 V und –1,5 V.In diesem Falle ist –1,5 V das negativere Potential und wird mit Low bezeichnet.Nun muß noch eine Festlegung zwischen der logischen Bedeutung eines Signals (0 oder 1)

und den beiden Potentialen (L oder H), mit denen es übertragen wird, getroffen werden. Dabeigibt es zwei Möglichkeiten (Tabelle 1.1), was häufig zu Verwirrungen führt.In einem System werden oft beide Möglichkeiten verwendet. Dann müssen die Signalna-

men ein Kennzeichen erhalten, das deutlich macht, welche Zuordnung für dieses Signal gilt(Bild 1.2).

Tabelle 1.1

Positive Logik (Zuordnung) Negative Logik (Zuordnung)

HIGH: Signal ist aktiviert, also logisch 1LOW: Signal ist nicht aktiviert, also logisch 0

HIGH: Signal ist nicht aktiviert, also logisch 0LOW: Signal ist aktiviert, also logisch 1

Page 18: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

18

Ein Signal, für das die positive Zuordnung gelten soll, bezeichnet man als aktiv-high,es wird nicht besonders gekennzeichnet; es gilt: HIGH ⇔ 1 und LOW ⇔ 0.

Ein Signal, für das die negative Zuordnung gelten soll, bezeichnet man als aktiv-low,es erhält im Namen entweder einen Überstrich oder ein voran- bzw. nachgestelltes Dop-pelkreuz (#) oder einen Schrägstrich (/); es gilt: LOW ⇔ 1 und HIGH ⇔ 0.

Beispiele

A0, A1, SEL Positive Zuordnung L bedeutet 0 (Signal inaktiv, false, logisch <0>)H bedeutet 1 (Signal aktiv, true, logisch <1>)

pumpe_ein Positive Zuordnung L ≅ 0 (Signal inaktiv, Pumpe ist nicht einge-schaltet)H ≅ 1 (Signal aktiviert, Pumpe ist einge-schaltet)

#pumpe_ein, Negative Zuordnung L ≅ 1 (Signal aktiv, Pumpe ist eingeschaltet)pumpe_ein H ≅ 0 (Signal inaktiv, Pumpe ist nicht einge-

schaltet)

#pumpe_aus Negative Zuordnung L ≅ 1 (Signal aktiv, Pumpe ist ausgeschaltet)H ≅ 0 (Signal inaktiv, Pumpe ist nicht ausge-schaltet)

Bild 1.2 Signalkennzeichnung aktiv-high, aktiv-low

Page 19: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

19

Mit einem binären Signal kann 1 Bit übertragen werden. 1 Bit (0 oder 1) ist die kleinsteEinheit der Informationsverarbeitung.

Mikrocomputer sind meist aus Schaltkreisen in MOS-Technologie gefertigt, die mit den fol-genden Potentialen arbeiten:

LOW: 0 V...+0,8 V; HIGH: +2 V...+5 V

In diesem Buch sind also immer, wenn von Rechnern, (Mikro-) Computern usw. die Re-de ist, Systeme gemeint, die ausschließlich binäre Signale verarbeiten.

Die Technik der sog. Analogrechner wird kaum mehr angewendet. Sie eignen sich vor allemfür die Untersuchung des zeitlichen (dynamischen) Verhaltens von Systemen, die aus ver-schiedenen Energiespeichern und Dämpfungen bestehen, also mathematisch durch Differen-tialgleichungen beschrieben werden können. Ein typisches Beispiel dafür ist die Messung desEinschwingverhaltens eines Pkw-Fahrwerks, bestehend aus trägen Massen, Federn undStoßdämpfern. Dabei werden diese Kennwerte mit Hilfe von beschalteten Operationsverstär-kern elektrisch nachgebildet. Durch Variation der Einstellung der Operationsverstärker kön-nen so leicht verschiedene Auslegungen des Fahrwerks simuliert werden.Die digitale Verarbeitung hat sich aus mehreren Gründen durchgesetzt:

� Daten, z.B. analoge Meßwerte, können nur in digitalisierter Form über längere Zeit gespei-chert und wieder verarbeitet werden.

� Die Genauigkeit der Verarbeitung läßt sich mit relativ geringem Aufwand praktisch belie-big steigern.

� Digitalisierte Daten sind bei Übertragung störunempfindlicher als analoge Signale. BeiÜbertragung analoger Signale addiert sich jede noch so kleine Störung zum Nutzsignal,während sich bei digitaler Übertragung Störungen unterhalb einer bestimmten Schwelleüberhaupt nicht bemerkbar machen. Selbst Störungen über dieser Schwelle können bei ent-sprechendem Aufwand durch Fehlerkorrekturverfahren beseitigt werden.

1.1.2 Verarbeitung binärer Daten

Im Computer – genauer gesagt im Rechenwerk des Computers – befinden sich recht kompli-zierte Schaltungen, die eingelesene Daten z.B. addieren, subtrahieren, vergleichen oder inihrem Stellenwert verschieben können. Welche der möglichen Operationen die Daten durch-laufen, wird durch ein Programm festgelegt.

Page 20: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

20

Bei einem Computer handelt es sich nicht um eine Schaltung, die speziell für eine ganzbestimmte Aufgabe konstruiert ist, sondern um eine universelle binäre Schaltung, dieeingelesene Daten entsprechend den Befehlen des im Computer gespeicherten Pro-gramms bearbeitet.

Dieses Programm kann geändert oder gegen ein anderes ausgetauscht werden.Das ergibt einen sehr komplizierten, umständlichen und recht langsamen Ablauf. Müssen

Mikrocomputer in «Echtzeit» (real time) arbeiten, d.h. etwa bei einem Regler die Menge deranfallenden Meßwerte so schnell verarbeiten, wie sie vom Meßfühler erzeugt werden, habensie – was die Geschwindigkeit betrifft – deutliche Nachteile gegenüber konventionellen, ausOperationsverstärkern aufgebauten Reglern.

Der große Vorteil der Datenverarbeitung mit binär arbeitenden Computern liegt darin,daß die Schaltung, also die Hardware, im Prinzip immer gleich aufgebaut werden kann,weil die Anpassung an die spezielle Aufgabe durch das Programm, die Software, ge-schieht.

So lohnt es sich, für die Baugruppen des Computers sehr hochintegrierte Schaltkreise zu ent-werfen, die dann in riesigen Stückzahlen hergestellt werden können und dadurch recht preis-wert werden.

Bei Änderungen der Aufgabenstellung kann die Software relativ leicht ausgetauschtwerden, ohne daß – im Prinzip – Änderungen der Verdrahtung notwendig werden.

Die Kosten verlagern sich dann mehr auf die Herstellung der Software, die bis zu 80% der Ge-samtkosten einer Computeranwendung ausmachen kann.Nur für sehr häufig vorkommende Aufgaben lohnen sich sonst noch die Entwicklungsko-

sten für spezielle integrierte Schaltungen (ICs), z.B. bei Taschenrechnern oder Digitaluhrenund in der Telekommunikationstechnik.Eine Wandlung bahnt sich hier an durch den Einsatz eben dieser Computer beim Entwurf

und Testen neuer ICs. Auch bei kleineren Stückzahlen wird es zunehmend wirtschaftlich, ICsspeziell für eine ganz bestimmte Aufgabe zu entwerfen, sog. ASICs (Application Specific In-tegrated Circuits). Diese ASICs arbeiten dann wesentlich effektiver als ein Mikrocomputer.Inzwischen gibt es programmierbare logische Bausteine (Programmable Logic Devices,

PLD), die eine große Anzahl von UND- und ODER-Gattern enthalten, bis hin zu Sequenzern,die ganze Befehlsfolgen abarbeiten können und sich immer mehr der Leistungsfähigkeit vonMikroprozessoren annähern.

Page 21: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

21

1.2 Blockschaltbild eines Mikrocomputers

In diesem Abschnitt wird erst der prinzipielle Aufbau eines Mikrocomputers erklärt, genauereEinzelheiten folgen in Kapitel 2.Ein kompletter Computer kann auf einem einzigen Chip in einem 40poligen Gehäuse inte-

griert, auf einer Leiterplatte im Europaformat 100 × 160 mm untergebracht sein oder – wie beiden heute üblichen Personalcomputern – eine Leiterplatte im DIN-A3-Format einschließlichmehrerer Zusatzplatinen füllen.

Jeder digital arbeitende Computer besteht aus den Baugruppen (Bild 1.3):� Zentraleinheit (Central Processing Unit, CPU),� Zentralspeicher (Memory),� Ein-/Ausgabe-Einheiten (Input/Output, I/O).

1.2.1 Zentraleinheit

Die CPU hat zwei Aufgaben:� Sie steuert den gesamten Ablauf, sowohl innerhalb der CPU als auch im gesamten Computer.

� Sie bearbeitet Daten, kann also arithmetische und logische Operationen ausführen.

Bild 1.3 Blockschaltbild eines Mikrocomputers

Page 22: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

22

Durch die seit einiger Zeit mögliche Integrationsdichte können diese Funktionen in einem ein-zigen Chip implementiert werden.

Eine CPU, die auf einem einzigen Chip integriert ist, bezeichnet man als Mikroprozes-sor.

Ein Mikroprozessor ergibt für sich allein noch keinen funktionsfähigen Computer, es gehörennoch Speicher und E/A-Bausteine dazu.Jede CPU hat einen Eingang für ein rechteckförmiges Taktsignal, das meist von einem

Quarzgenerator erzeugt wird. Damit werden alle Abläufe innerhalb der CPU und des gesamtenMikrocomputers gesteuert. Solche Mikroprozessoren werden von vielen Firmen angeboten.Sie unterscheiden sich durch ihre Arbeitsgeschwindigkeit, ihren Programmierkomfort und dieAnzahl der Bits, die mit einem Befehl verarbeitet werden können (je nach Typ 4, 8, 16, 32 oder64 Bit).

1.2.2 Zentralspeicher

Zentralspeicher werden von der CPU direkt angesteuert – im Gegensatz zu peripherenSpeichern – z.B. Disketten, Festplatten, die über spezielle E/A-Bausteine (Controller)angesteuert werden müssen.

Zentralspeicher werden heute fast ausschließlich in Halbleitertechnologie hergestellt, wobeizwei Gruppen unterschieden werden.

Nichtflüchtige Speicher (Non Volatile Memory) behalten ihre Informationen auch beimAbschalten der Versorgungsspannung. Sie sind geeignet für Programme, Codetabellenusw.

Sie werden, nicht mehr ganz korrekt, als ROM (Read Only Memory = Nurlesespeicher) be-zeichnet; es gibt inzwischen Typen, bei denen der Inhalt relativ einfach geändert werden kann,siehe Abschnitt 2.3.

Flüchtige Speicher verlieren ihre Information beim Abschalten der Versorgungsspan-nung, dafür lassen sie sich aber einfach ändern. Sie werden zum Zwischenspeichern vonEingabedaten und Ergebnissen benötigt.

Sie werden als RAM (Random Access Memory) oder Schreib-Lese-Speicher bezeichnet.

Page 23: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

23

Grundsätzlich kann man sich einen Zentralspeicher vorstellen als einen Schrank mit vielenuntereinander angeordneten Schubladen – fachmännisch «Speicherzellen» genannt – die in ei-nem gegebenen System alle die gleiche Anzahl von binären Stellen (Bitstellen) enthalten. Sieist abgestimmt auf die Anzahl, die die CPU auf einmal verarbeiten kann, z.B. 8 Bitstellen.Jede Speicherzelle ist durch eine Zahl – fachmännisch «Adresse» genannt – gekennzeich-

net. Die CPU kann solche Adressen auf den Adreßbus schalten und damit beliebige Speicher-zellen anwählen.

1.2.3 Ein-/Ausgabebausteine

Sie stellen die Verbindung zur «Außenwelt» des Computers, zur Peripherie, her. Sie werdenoft als Input-Output-Ports oder kurz I/O-Ports (engl.: port = Tor, Türe, Pforte) bezeichnet.Sie entlasten die CPU von Routineaufgaben und erhöhen dadurch die Arbeitsgeschwindig-

keit des Systems. Es gibt inzwischen sehr komplexe Bausteine, die z.B. parallele in serielleDaten in einem selbst erzeugten Zeittakt umwandeln können. Nicht zu vergessen sind die E/A-Bausteine zur Steuerung von Disketten- oder Festplattenlaufwerken. Andere Bausteine ver-stärken nur die von der CPU gesendeten Signale zum Betrieb von Relais oder Meldeleuchten.

1.2.4 Busleitungen

Alle Baugruppen eines Mikrocomputers sind durch Busleitungen (abgekürzt «Bus») miteinan-der verbunden.

Der Bus besteht aus mehreren Leitungen, wobei an jede Leitung parallel mehrere Bau-steine angeschlossen sind (Bus von lat.: omnibus = alle).

Das bedeutet, daß eine einzige Leitung alle mit D0 bezeichneten Datenanschlüsse von CPU,Speicher und E/A-Bausteinen miteinander verbindet.Die beiden anderen Gruppen, Adreßbus und Steuerbus, benötigt die CPU zur Steuerung

dieser Informationstransporte, womit das Problem gelöst werden kann, daß auf dem Datenbusimmer nur ein Baustein senden und ein Baustein empfangen darf.

1.2.5 Mikrocontroller

Da sich bei ICs die Integrationsdichte immer weiter erhöht hat, können CPU, Zentralspeicherund einige Peripheriebausteine – also ein kompletter Mikrocomputer – auf einem einzigenChip untergebracht werden. Man bezeichnet solche Computer auf einem Chip als Mikrocon-troller, Single Chip Computer oder Embedded Computer. Da sie wenig Platz beanspru-chen und – bei niedriger Taktfrequenz – nur wenig Leistung aufnehmen und durch hohe Stück-zahlen billig geworden sind, findet man solche Mikrocontroller heute fast in allen Geräten, woetwas zu messen, steuern, speichern, anzuzeigen oder zu drucken ist. Auch in diesem Buchwerden Arbeitsweise, Programmierung und Anwendung von Mikrocomputern anhand einesMikrocontrollers, des 80C537 aus der weitverzweigten 8051-Familie, erklärt.

Page 24: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

24

1.3 Prinzipielle Arbeitsweise eines Computers

1.3.1 Historische Entwicklung

Der Anfang der Entwicklung, die schließlich zur heutigen Struktur führte, geht auf das Jahr1833 zurück. Zwar wurden auch schon vorher Rechenmaschinen erdacht und gebaut, aber diewaren noch nicht programmgesteuert, entsprachen also eher unseren heutigen Taschenrech-nern. 1833 begann der englische Mathematiker CHARLES BABBAGE mit der Entwicklung seiner«Analytical Engine», die bereits aus einem Datenspeicher, Rechenwerk, Steuerwerk und einerEin-/Ausgabe bestehen sollte. Die Steuerung, also «Programmierung», sollte durch Lochkar-ten erfolgen, die schon seit 1728 zur Steuerung von Webstühlen verwendet wurden. Die Aus-führung scheiterte jedoch an mechanischen Schwierigkeiten.Erst 1941 verwirklichte KONRAD ZUSE mit seinem Relaisrechner Z3 diese Prinzipien, ob-

wohl er die Ideen von BABBAGE nicht gekannt hatte. Dieser Rechner gilt als der erste pro-grammgesteuerte Rechenautomat, der auch wirklich funktionierte. Das Programm wurde,immer noch extern, auf einem gelochten Kinofilmstreifen gespeichert. ZUSE hat zur Entwick-lung der Rechnertechnik zwei neue Ideen beigesteuert: die Verwendung bistabiler, also binärwirkender Schaltelemente und des dualen Zahlensystems, das bereits von LEIBNIZ 1679 in sei-ner Schrift «De progressione Dyadica» veröffentlicht worden war. LEIBNIZ beschrieb auch,wie einfach die Regeln der vier Grundrechenarten in diesem Zahlensystem werden.ZUSE erkannte auch, daß sich bei Dualzahlen alle Berechnungen mit den binären Grund -

operationen UND, ODER und NICHT durchführen lassen.Die ersten Rechner von ZUSE waren noch mit mechanischen bistabilen Elementen ausge-

stattet; der Durchbruch erfolgte erst, als mit der Elektronenröhre ein schnelles, nicht mecha-nisch bewegtes Bauelement für bistabile Kippstufen zur Verfügung stand. Diese ersten «Elek-tronenrechner» waren saalfüllende Ungetüme, wie z.B. der 1945 in Amerika in Betriebgenommene ENIAC mit 18 000 Röhren und einer Leistungsaufnahme von 150 kW. Nur etwain der halben Betriebszeit war der Rechner funktionsfähig, die andere Zeit über mußten de-fekte Röhren gesucht und ausgetauscht werden.Die vorerst letzten grundsätzlichen Ideen fügte gegen Ende des 2. Weltkrieges der aus

Deutschland ausgewanderte Mathematiker VON NEUMANN hinzu.Nicht nur Daten, sondern auch die Programme sollten im Zentralspeicher abgelegt werden, siewurden speicherresident.Die Verwendung «bedingter Sprungbefehle» ermöglichte es nun – z.B. abhängig von der

Größe eines Ergebnisses oder eines Zählregisters – Programmteile beliebig oft zu wiederholen(Schleifen) oder aber zu überspringen, d.h., das Programm konnte selbständig Entscheidungentreffen, ohne daß der Mensch eingreifen mußte.Damit war die prinzipielle Entwicklung abgeschlossen; was danach noch folgte, war im we-

sentlichen technologische Weiterentwicklung.Etwa ab 1955 wurden die leistungsfressenden und relativ unzuverlässigen Röhren durch

Transistoren ersetzt, ab 1965 erschienen dann integrierte Schaltkreise.Hier verzweigt sich die Entwicklung. Zum einen entstehen in bipolarer Technik immer

schnellere Schaltkreise mit Durchlaufzeiten unter 1 ns, die in Großrechnern eingesetzt werden.Zum anderen erreicht man in der einfacher aufzubauenden MOS-Technik immer größerePackungsdichten.

Page 25: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

25

Etwa seit 1975 gibt es ICs, bei denen ein komplettes Steuer- und Rechenwerk auf einemChip integriert ist: eben den Mikroprozessor mit mehr als 1 Million Transistorfunktionen. Da-durch konnten immer kleinere, verlustärmere, dabei noch schnellere und billigere Computerhergestellt werden. Diese Computer werden nicht mehr in klimatisierten Rechenzentren aufge-stellt, sondern können überall vor Ort, wo Rechenleistung benötigt wird, eingesetzt werden.Die grundlegende Arbeitsweise eines Computers ist jedoch seit den Ergänzungen Zuses

und Von Neumanns gleichgeblieben.

1.3.2 Prinzipieller Ablauf eines Programms

Das Steuerwerk der CPU ist durch Steuerleitungen mit allen Baugruppen innerhalb der CPUund über die Steuerbusleitungen auch mit Speicher und E/A-Bausteinen verbunden.Welche Steuerleitungen nun in welcher Reihenfolge aktiviert werden, wird durch Maschinen-befehle – das sind bestimmte Kombinationen aus 0 und 1 – festgelegt. Solch ein Maschinenbe-fehl bewirkt meist nicht sehr viel, z.B. den Transport einer 8stelligen Dualzahl vom Rechen-werk der CPU in eine Speicherzelle oder in einen E/A-Baustein. Andere Maschinenbefehlebewirken die Addition oder Subtraktion von zwei in der CPU gespeicherten 8stelligen Dualzah-len. Auch für scheinbar einfache Probleme, wie Addition längerer Dezimalzahlen, Wurzelzie-hen oder gar Berechnung einer Sinusfunktion, werden bereits eine ganze Menge dieser Maschi-nenbefehle benötigt. Befehlswerke von Mikroprozessoren können einige Hundert verschiedeneMaschinenbefehle ausführen, von denen allerdings viele sehr ähnlich sind. Für jede CPU liefertder Hersteller Befehlslisten, in denen alle ausführbaren Befehle aufgeschrieben sind.

Aus diesen Befehlslisten muß der Programmierer diejenigen Befehle heraussuchen, dieer zur Lösung des Problems benötigt.

Je nach Geschick des Programmierers ergeben sich dabei mehr oder weniger elegante Lösungen.

Die ausgewählten Befehle müssen nun genau in der Reihenfolge, wie sie vom Befehls-werk ausgeführt werden sollen, im Zentralspeicher in unmittelbar aufeinanderfolgendenSpeicherzellen abgelegt werden.

Der erste auszuführende Befehl muß dabei in Speicherzelle 0 stehen, und es dürfen keine Zel-len übersprungen werden. Ein solches Programm kann z.B. mit Hilfe eines Programmiergerä-tes in ein EPROM (siehe Abschnitt 2.3) eingeschrieben und dann in einen für einen Speicher-baustein vorgesehenen Sockel des Mikrocomputers eingesetzt werden.Jedes Befehlswerk besitzt nun ein «Zählwerk», den Programmzähler, der im Prinzip die

Nummer oder besser die Adresse des Befehls enthält, der gerade ausgeführt wird. Durch einenTaster, der auf den Reset-Eingang der CPU führt, kann der Programmzähler auf 0 gesetzt wer-den. Bei den meisten Computern wird dieses Reset-Signal nach dem Einschalten der Span-nungsversorgung automatisch für kurze Zeit aktiviert. Anschließend beginnt das Befehlswerkseine Arbeit:

Page 26: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

26

� Es schaltet den Programmzähler auf den Adreßbus, und der Inhalt der Adresse 0 wird ausdem Speicher über den Datenbus in das Befehlswerk geladen (Bild 1.4).

� Der Befehl wird nun decodiert und die entsprechenden Steuersignale erzeugt, so daß derBefehl «ausgeführt» wird. Anschließend erhöht das Befehlswerk automatisch den Pro-grammzähler um 1 (Bild 1.5).

� Dieser nächste Befehl wird nun in das Befehlswerk geladen und ausgeführt (Bild 1.6).� Nach Ausführung dieses Befehls wird der Zähler wiederum automatisch erhöht, der näch-ste Befehl geladen usw.

Dieser eigentlich recht sture Ablauf wiederholt sich nun immerzu. Er läßt sich nur beendendurch einen speziellen Befehl, den sog. HALT-Befehl, oder durch Abschalten der Spannungs-versorgung.Spezielle Befehle, die sog. Verzweigungsbefehle (Abschnitt 4.4), bewirken bei ihrer Aus-

führung, daß der Programmzähler mit einer anderen Zahl geladen wird, die o.g. Prozedur wirddann eben ab dieser Adresse fortgesetzt.Ein Computer «steht also niemals still», auch wenn «nichts abläuft». So wird z.B. bei einem

PC dauernd der Bildschirm neu beschrieben und die Tastatur abgefragt, ob eine Taste gedrücktwurde.Eines sollte nach dem eben Gesagten klar geworden sein: Ein Computer kann nicht «den-

ken», er kann nur die vom Programmierer eingegebenen Befehle der Reihe nach ausführen.Ein Computer – die Größe spielt dabei keine Rolle – kann nur auf solche Ereignisse reagieren,die der Programmierer in seinem Programm vorausgesehen hat. Ein Beispiel mag das verdeut-lichen: Auch Experten können Schwierigkeiten haben, gegen ein gutes Computer-Schachpro-gramm zu gewinnen. Aber das Schachprogramm wird z.B. von sich aus nie in der Lage sein,etwa die Regeln zu ändern oder gar ein neues Spiel zu erfinden.

Bild 1.4 Laden des ersten Befehls

Page 27: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

27

Bild 1.5 Ausführung eines Befehls

Bild 1.6 Laden des nächsten Befehls

Page 28: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

28

Die Maschine ist dem Menschen eigentlich nur in zwei Dingen überlegen:

� Die Befehlsausführung erfolgt sehr zuverlässig und immer in exakt der gleichen Weise undZeitdauer.

� Befehle werden sehr schnell ausgeführt. Mikrocontroller, mit denen wir uns noch näher be-schäftigen werden, können in der Sekunde etwa 800 000 Befehle ausführen bei einer Takt-frequenz von 12 MHz, andere Mikroprozessoren (siehe Kapitel 10) auch 10mal mehr. Manspricht dann von 0,8 bzw. 8 MIPS (Million Instructions per Second). Auch die weiteren Ka-pitel dieses Buches werden zeigen, daß ein Computer keineswegs ein denkendes Wesen,sondern nur eine – allerdings recht komplizierte – elektronische Steuerung ist.

Page 29: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

29

2 Baugruppen eines Mikrocomputers

In diesem Kapitel soll die Hardware eines Computers, also CPU, Zentralspeicher, Ein-/Ausga-be-Bausteine und Systembus, etwas eingehender behandelt werden.

2.1 Systembus

Die Busleitungen, die die Baugruppen eines Mikrocomputers – CPU, Zentralspeicher, E/A-Bausteine – miteinander verbinden, werden als Systembus bezeichnet.Es gibt noch andere Busleitungssysteme, z.B. sind in der CPU alle Register durch einen

«internen Datenbus» miteinander verbunden. Auch außerhalb eines Computers werden häufigBussysteme benutzt, um mehrere Peripheriegeräte an eine E/A-Baugruppe anzuschließen; derin der Meßautomatisierung häufig verwendete IEC-Bus ist ein Beispiel dafür. Lokale Netz-werke (LAN, Local Area Networks) werden als Bussystem ausgeführt.Auch eine Gemeinschaftsantennenanlage ist als Bussystem ausgeführt, wobei ein Sender –

der Antennenverstärker – mehrere Empfänger betreibt. Im Prinzip können durch «Anzapfen»Geräte dazugeschaltet werden, ohne daß jedesmal eine neue Leitung vom Dach verlegt werdenmuß. In einem Computersystem ist die Informationsverteilung jedoch schwieriger, weil meh-rere Datensender vorhanden sind. So müssen z.B. Zahlen von verschiedenen Speicherbaustei-nen zur CPU gesendet werden, damit sie dort bearbeitet werden können. Ebenso müssen Datenvon Tastaturen oder Stellungen von Endschaltern über Eingabebausteine zur CPU gesendetund Ergebnisse von der CPU zu Speicher- oder E/A-Bausteinen transportiert werden.

Zur korrekten Abwicklung des Datenflusses werden im Systembus eines Computersentsprechend ihrer Aufgabe drei Gruppen von Busleitungen unterschieden:� Datenbus,� Adreßbus,� Steuerbus.

Um die Steuerung des Datenflusses nicht zu kompliziert zu machen, sind nur Transporte zwischen CPU und Speicher oder zwischen CPU und E/A-Bausteinen möglich – jeweils in beiden Richtungen.

Da die an einer Datenleitung angeschlossenen Bausteine sowohl senden als auch emp-fangen können, spricht man hier von einem bidirektionalen Bus.

Page 30: Müller / Walz Mikroprozessortechnik - ciando ebooksvbm-fachbuch.ciando.com/img/books/extract/3834361666_lp.pdfKlaus Beuth / Richard Hanebuth / Günter Kurz / Christian Lüders: Nachrichtentechnik

30

Das Steuerwerk der CPU muß nun zwei Probleme lösen:

� Auswahl einer bestimmten Speicherzelle oder eines E/A-Bausteins für den Datentransport;� Festlegung der Richtung des Transportes.

Das Steuerwerk sorgt dafür, daß zur selben Zeit bei jeder Datenbusleitung nur ein Sen-der und ein Empfänger durchgeschaltet sind – entsprechend dem gerade auszuführendenBefehl.

2.1.1 Bausteine an Busleitungen

Zum Anschluß an Datenbusleitungen geeignete Bausteine müssen folgende Voraussetzungenerfüllen:

� Die Datenbusanschlüsse brauchen abschaltbare Sender bzw. Empfänger, sog. Tristate-An-schlüsse, mit den Zuständen:– HIGH,– LOW,– hochohmig (high impedance, high z).

� Die Bausteine brauchen Steuereingänge zur Steuerung der Datenflußrichtung und zum An-schalten des Datenbusanschlusses. Meist werden die folgenden Anschlußbezeichnungenverwendet (Bild 2.1):– Aktivierung des Bausteins: CE (Chip Enable); CS (Chip Select); DS oder DE (DeviceSelect oder Device Enable),

– Aktivierung des Dateneingangs: WR oder WE (WRite oder Write Enable),– Aktivierung des Datenausgangs: OE oder RD (Output Enable oder ReaD).

Der Übersichtlichkeit halber ist in Bild 2.1 nur einer von 8 Datenbusanschlüssen gezeichnet.Bei nicht aktiviertem Steuereingang CS ist der Datenbusanschluß von der Innenschaltung desBausteins getrennt, der Anschluß ist, von außen gemessen, hochohmig. Der Baustein selbst istaußerdem in eine Art Ruhezustand versetzt, wobei er meist nur ca. 20% des Stromes im akti-ven Zustand aufnimmt.Die Steueranschlüsse sind meist aktiv-low.

Das Signal für den CS eines Bausteins wird aus den Signalen des Adreßbusses abgelei-tet, und zwar so, daß (außer der CPU) immer nur ein Baustein aktiviert wird, siehe näch-sten Abschnitt.

Die Signale für OE und WE werden von der CPU ausgegeben, sie geben die Übertragungs-richtung auf dem Datenbus an. Die dabei üblichen Begriffe Read/Lesen und Write/Schreibengelten vom Standpunkt der CPU aus (Tabelle 2.1).