130 79 20MB
German Pages 311 [323] Year 2008
Mikrocomputertechnik mit der 8051-Controller Familie 3. neu bearbeitete Auflage
Jürgen Walter
Mikrocomputertechnik mit der 8051-Controller Familie Hardware, Assembler, C 3. neu bearbeitete Auflage
123
Prof. Dipl.-Ing. Jürgen Walter HS Karlsruhe Fachgebiet Mechatronik Moltkestr. 30 76133 Karlsruhe [email protected]
ISBN 978-3-540-66758-2
e-ISBN 978-3-540-69465-6
DOI 10.1007/978-3-540-69465-6 Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. © 2008, 1996, 1994 Springer-Verlag Berlin Heidelberg Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der Vervielfältigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Satz: Digitale Druckvorlage des Autors Herstellung: le-tex publishing services oHG, Leipzig Einbandgestaltung: eStudioCalamar S.L., F. Steinen-Broo, Girona, Spanien Gedruckt auf säurefreiem Papier 987654321 springer.com
Vorwort zur dritten Auflage Der 8051-Controller ist aufgrund seiner weiten Verbreitung besonders als Modellsystem für die Mikrocomputertechnik geeignet. Dieses Buch führt in die technischen Grundlagen dieses Prozessorsystems, die Assembler- und C-Programmierung mit Anwendungen, sowie die Hardwareentwicklung ein. Die beiliegende CD-ROM enthält ein voll funktionales Entwicklungspaket mit Simulator, Assembler und C-Compiler. Für die zweite Auflage wurde das Softwarepaket um ein Lehrprogramm erweitert, mit dem die Grundlagen der Digitaltechnik repetiert und dynamische Abläufe anschaulich dargestellt werden können. Mit seinem didaktischen Aufbau, den verständlichen Erklärungen, den Übungsaufgaben, den mitgelieferten Übungs- und Entwicklungsprogrammen wendet sich dieses Lernpaket vor allem an die praxisorientierten Ingenieure und Studenten. Für die dritte Auflage wurde die CD-ROM durch Programme für die wichtige praktische Anwendung erweitert. Karlsruhe 8. Oktober 2007 Jürgen Walter
Vorwort zur zweiten Auflage Als Autor bin ich erfreut über die Resonanz, die dieses Buch mit CD gefunden hat. Das Lehrangebot wurde auf der CD zusätzlich durch ein CBT (Computer Based Training) ergänzt. Insbesondere können Sie hier interaktiv mit Hilfe des Rechners in Ihrer eigenen Lerngeschwindigkeit arbeiten. Die Software zum Debuggen von Programmen wurde auf die WindowsOberfläche umgestellt. Ein Programm zur Pulsweitenmodulation ergänzt die verschiedenen Programmbeispiele. Durch die Einrichtung eines FTP-Servers an der FH Karlsruhe können Sie die aktuellsten Programme über Internet abrufen. Die Adresse ist: http://WWW.FH-Karlsruhe.de/ . Auf der ersten Seite befindet sich eine Volltextsuche an der Sie als Stichwort „8051“ eingeben sollten. Karlsruhe 2. März 1996 Jürgen Walter
Vorwort zur ersten Auflage Es ist mir eine große Freude, als Hochschuldidaktiker das Vorwort zu dieser gelungenen Einführung in die µ-Computertechnik zu schreiben. Um die Vorzüge dieses Buches zu illustrieren, ist eine kurze Betrachtung des Lernprozesses erforderlich. Traditionelles Lernen besteht in dem Versuch, eine komplexe Informationsfülle - etwa in einer Vorlesung oder aus einem Buch - aufzunehmen. Je passiver dies geschieht, desto geringer sind die Aussichten für einen nachhaltigen Lernerfolg. Nach Möglichkeit sollte das "Schlucken" der Inhalte bereits mit einem "Kauvorgang" (z.B. in Form einer strukturierten Mitschrift oder eigenen Markierungen bzw. Kommentaren im Buchtext verbunden werden. Nach der Aufnahme der Information muss diese in einem zweiten Schritt "verdaut" werden. Hiermit ist der Prozess gemeint, in welchem eine Vernetzung der neuen Begriffe, Theorieelemente und Sachverhalte mit dem Vorwissen des Studenten erfolgt. Da jeder Studierende andere Vorkenntnisse und Vorerfahrungen sowie einen anderen Lernstil hat, gestaltet sich dieser Arbeitsvorgang sehr individuell. In jedem Fall aber ist er ein aktiver Prozess, in dessen Verlauf die alte Wissensstruktur so umgebildet werden muss, dass sich die neuen Wissenselemente einfügen. Jede Frage und jeder kognitive Konflikt, der in dieser Phase auftaucht, kann als Brückenkopf zu der gewünschten Vernetzung beitragen. Jede abgeblockte oder verdrängte Frage aber ist eine vertane Chance zu einer solchen Brückenbildung, zur Vernetzung zwischen erschlossenen und noch unerschlossenen Wissenselementen. Hier liegt die große Bedeutung von Diskussionen fachlicher Inhalte in kleinen Gruppen. Unvernetztes Wissen "haftet nicht", bleibt "oberflächlicher Wissenslack", der vielleicht noch in der Prüfung "glänzen" mag, aber schon bei geringen Herausforderungen "abblättert" und nicht von Dauer ist. Ein geeigneter Test auf die Vernetzungstiefe hingegen ist die Fähigkeit, einem Mitstudierenden auch komplexe Sachverhalte in einfacher, alltagsnaher Sprache darzustellen. Vor der eigentlichen Bewährungsprobe steht das erworbene Wissen dann im dritten Schritt, der Anwendung auf einen neuen Aufgabentyp mit unbekannter Lösung. Hier muss der Student selbständig unter verschiedenen Strategien auswählen und bekannte Wissenselemente praxisbezogen
VII
kombinieren. Wie wir essen und verdauen, um mit der in körperliche Energie verwandelten Nahrung konkret Arbeit zu verrichten, so eignen wir uns Wissen an, um mit seiner Hilfe auch neuartige Probleme in den Griff zu bekommen. Dabei muss sich die neue Wissensstruktur in Aktion bewähren und erst in dieser Funktion hat Wissen sein Ziel erreicht. Wozu dieser Exkurs? Das vorliegende Buch trägt den Anforderungen aktiven Lernens, die hier formuliert wurden, in besonderer Weise Rechnung. Es macht nicht nur in systematischer Weise mit den wichtigsten Grundtatsachen der µ-Computertechnik vertraut, es tut dies auch in einer sehr alltagsnahen Sprache und so ausführlich, dass der Leser stets folgen kann und ihm berüchtigte Phrasen der Art "wie man leicht sieht ..." erspart bleiben. Er wird terminologisch und inhaltlich dort "abgeholt", wo er als Neuling in seinem Wissen steht. Der Clou des Buches jedoch ist die Tatsache, das es mittels der dem Buch beigefügten CD konsequent von den Möglichkeiten moderner Datentechnik zur Unterstützung aktiven Lernens Gebrauch macht. Die Idee, Assembler, C-Compiler und Simulator für einen 8051/80535-Controller auf einem modernen Datenträger mitzuliefern, macht aus der Kombination von Buch und CD ein komplettes µ-Computer-Labor. Ausführliche Beispiele und zahlreiche praktische Hinweise befähigen den Leser, selbständig und aktiv in die faszinierenden Anwendungsmöglichkeiten des µ-Controllers einzusteigen. Didaktisch besonders hervorzuheben ist, dass sich am Bildschirm die Programmstruktur gleichzeitig auf zwei Ebenen (Quellcode, Assembler) verfolgen und zugleich die Auswirkung jedes einzelnen Befehls beobachten lässt. Damit wird das Programmieren eines µ-Controllers in vorbildlicher Weise transparent. Beeindruckt hat mich, mit welchem Engagement und welcher hohen Sachkompetenz Studierende, die in die Technik der µ-Computer nach dem hier realisierten Konzept eingeführt wurden, komplizierte Steuerungsaufgaben in Studienprojekten bewältigt haben. Die für eine profunde Wissensverarbeitung erforderlichen Diskussionen und der Transfer des Wissens auf neuartige Problemstellungen haben die Arbeit der Teams in hohem Maße beflügelt und die individuellen Lernerfolge durch selbständig gewonnene Erfahrung nachhaltig abgestützt. Ich möchte das Buch Studenten und Dozenten wärmstens empfehlen. Den letztgenannten bietet es den zusätzlichen Vorteil, dass der Dozent die
VIII
Grafiken und Programme auf der mitgelieferten CD als Quelle und Ausgangsbasis für die Erstellung eigener Unterlagen verwenden kann. Karlsruhe 27. Oktober 1994
Hans-Peter Voss Leiter der Geschäftsstelle für Hochschuldidaktik
Danksagung Das vorliegende Buch konnte nur durch die tatkräftige Mithilfe der Studenten und Kollegen entstehen. Besonders möchte ich die Anregungen von Herrn W. Müller und Herrn W. Marx hervorheben. Prof. O. Onnen sowie Herrn Prof. D. Girke unterstützten durch ihre Anregungen das Vorhaben. Prof. G. Danner ermöglichte als Leiter des Labors für Automatisierungstechnik den Aufbau des Labors zur Einführung in die µ-Computertechnik mit den µ-Controllern der 8051-Familie. Herr B. Beck hatte maßgeblichen Anteil an der Entwicklung der EURO_535-Karte. Die Firmen Siemens, Intel, Hitex und Keil ermöglichten erst durch Ihre großzügige Unterstützung in Form von Datenbüchern, Assembler zur Evaluation, Kommunikationssoftware, Simulator und C-Compiler zur Evaluation das Gelingen des kombinierten Studiums. Die Studienkommission für Hochschuldidaktik an Fachhochschulen in Baden-Württemberg unterstützte durch ihr Wirken dieses Konzept an verschiedenen Hochschulen und Fachbereichen. Prof. Dr.-Ing. W. Fischer sei als Vorsitzendem dieser Kommission und als Rektor für das angenehme Hochschulklima gedankt. Frau A. Scholl M.A. möchte ich recht herzlich für die unermüdlichen Korrekturarbeiten danken. Die Zusammenarbeit mit Personen aus anderen Fachgebieten, wie beispielsweise der Germanistik habe ich sehr genossen und kann diese nur weiterempfehlen. Herrn Dr. D. Merkle und Herrn B. Huhn vom Springer-Verlag gilt hier ebenfalls mein Dank. Diese Arbeit wurde in hervorragender Weise von Frau Eva Hestermann-Beyerle in der dritten Auflage fortgesetzt. Anregungen und Hinweise aus dem Leserkreis zur Weiterentwicklung der Lehre nehme ich gerne entgegen. Karlsruhe 11. November 2007 Jürgen Walter
Inhaltsverzeichnis 1 1.1 1.2 1.3 1.4 1.5
Einführung Zielsetzung und Methode Einführung in die µ-Computertechnik Erläuterungen zum Sprachgebrauch: Englisch - Deutsch Begriffsbestimmung µ-Computer und µ-Controller Turingmaschine
1 1 2 4 5 6
2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8
Die Peripherie des µ-Controllers Das D-Kippglied - D-Flip-Flop Tri-State-Ausgang Register Latch Empfehlungen für digitale Schaltungen Adress-Decoder Bus Schaltplan EURO_535 Karte
11 11 16 17 18 19 21 23 27
3 3.1 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.3 3.4 3.5 3.6 3.7 3.7.1 3.7.2 3.7.3
Aufbau von µ-Controllern der 8051-Familie Pin-Definitionen und Funktionstabelle Prinzipieller Aufbau eines 8051-Ports. Port 0 Port 1 Port 2 Port 3 Blockdiagramm 8051 - 8051A Aufbau des klassischen Digitalrechners Blockdiagramm 80C515/C535 Adressbereiche 8051 Timingberechnungen für 80535-Speicher 16K-EPROM an 80535 Timingberechnung 32K-RAM am 80C535 RAM-Berechnung für die EURO_535-Karte
30 31 32 35 37 37 38 39 42 45 46 47 50 57 58
4 4.1 4.2 4.3
Assembler für die 8051-Controller-Familie Erstellen eines einfachen Assemblerprogramms Debuggen – Test und Fehlerbeseitigung Test des EIN_AUS-Programms mit dem Simulator
61 67 71 72
XI
4.4 4.5 4.6 4.7 4.8 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.9.7 4.10 4.10.1 4.10.2 4.10.3 4.10.4 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18
Test des EIN_AUS-Programms mit EURO_535 Entwicklungsprozess für ein µ-Controller-Programm Prototyp Software Design Die Speicherbereiche des 8051 / 80535 ASM 51 Macro Assembler Die Assembler-Anweisungen im Detail Vereinbarungen für Symbole und Syntax Speicherbereich Initialisierung und Reservierung Die Registerbänke 0 bis 3 Der Programmspeicherbereich Der interne Datenspeicher Der externe Datenspeicher Die Bit-Adressen Segmente Relative Segmente Absolute Segmente Assembler-Anweisungen ORG - END Quellcode-Anweisungen für den Linker Assembler-Steueranweisungen (Assembler Controls ) Stack Special Function Register Program Status Word Die Befehle für die 8051 µ-Controller-Familie Der System Reset Der Stromsparmodus Watchdog Timer
74 79 81 82 83 85 85 85 86 87 88 89 90 90 91 92 92 92 93 95 96 96 99 105 106 107
5 5.1 5.2 5.2.1 5.2.2 5.3 5.3.1 5.4 5.4.1 5.4.2 5.5 5.5.1 5.5.2 5.5.3 5.5.4
Projekte mit Assembler gelöst Standardkopf für Assemblerprogramme Blinklicht mit vorgegebener Blinkfrequenz Timer / Counter - Zeitgeber / Zähler des 8051 Interrupt-System des 8051 / 80535 Projekt A/D-Wandlung Wesentliche Daten des A/D-Wandlers im 80535 Projekt Serielle Schnittstelle Die serielle Schnittstelle im Detail Die Baudrate Projekt Effektivwertmesser Erweiterungen - Wiederverwendung der Software Modularisierung Vereinfachung der Aufgabenstellung Timer 2
108 110 111 111 114 126 126 133 138 139 141 142 142 144 145
XII
5.6 5.7
Der Linker Projekt Effektivwertmesser mit dem Linker erzeugt
161 161
6 6.1 6.1.1 6.1.2 6.1.3 6.2 6.2.1 6.2.2
C für die 8051-Familie Einführung in den C-Compiler Das Programm EIN_AUS Test des EIN_AUS Programms in C mit dem Simulator Test des EIN_AUS Programmes in C in Hardware-Umgebung Die Eigenschaften des C-51-Compilers Die Datentypen des C-51-Compilers Speichertypen und Speichermodelle
175 176 176 179 182 182 183 184
7 7.1 7.2 7.3 7.4 7.5
Projekte in C gelöst Standardkopf für Programme in C Blinklicht mit vorgegebener Blinkfrequenz Projekt A/D-Wandlung Die serielle Schnittstelle in C Das Programm Effektivwert in C
186 187 188 193 196 198
8 8.1 8.1.1 8.1.2 8.2 8.2.1 8.2.2
Prozessorarchitekturen im Überblick Grundstrukturen und Einteilung von µ-Prozessoren 80x86-Prozessoren Signalprozessoren Derivate der 8051-Controller-Familie C515C-Controller 8051-Derivat C8051F340
200 200 203 207 212 213 214
9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12 9.13
Entwicklung von µ-Computer-Hardware Klärung der Anforderungen Abschätzung der CPU-Belastung - Datenflüsse Wahl der CPU Blockschaltbild der Karte Schaltplan Stückliste - Bezugsquellen Schnittstellen Layout - Bestückungsplan Fertigungsunterlagen Fehlerfindung, Diagnose Lieferumfang Software - Liste verfügbarer Software Weiterentwicklungswünsche , Verbesserungen
217 218 221 223 224 225 226 228 230 231 232 232 233 234
XIII
10 10.1 10.2 10.3 10.4
Übungsaufgaben Übungsklausur 1 Übungsklausur 2 Übungsklausur 3 Übungsklausur 4
236 236 247 259 271
11 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.3 11.4
Anhang Zusammenstellung der Register von 8051/80535 REG8051.PDF REG535.PDF Datei REGISTER DECLARATIONS FOR 80535 mit Erklärungen EURO_535.h Installation der Software Hilfreiche Bücher zum Aufarbeiten der Grundlagen Vortragsfolien
284 284 284 287 291 298 301 303 303
Literaturverzeichnis
304
Bildverzeichnis
305
Tabellenverzeichnis
308
Stichwortverzeichnis
310
1 Einführung
1.1
Zielsetzung und Methode
Wie lernen Sie, schnell und effektiv, Aufgaben mit Hilfe von µControllern zu lösen? Diese und viele weitere Fragen beantwortet das vorliegende Buch. Wissen „auf Vorrat“, welches nicht zur Anwendung kommt, wird dabei auf das Notwendigste beschränkt. Hier wird auf ähnliche Art und Weise vorgegangen wie beim Erlernen eines Musikinstruments. Klavier spielen lernen Sie ausschließlich am Klavier. Den Assembler, C-Compiler und Simulator für einen 8051/80535-Controller - nämlich das "Klavier" - erhalten Sie gemeinsam mit diesem Buch in Form einer CD (Compact Disc). Damit können Sie sich umfassend und vollständig in die µ-Computertechnik einarbeiten. Durch die Verwendung von professionellen "Light-Versionen" können Sie die gesamte Entwicklungsumgebung beherrschen. Alle Wege der Entwicklung von µ-Computer-Systemen stehen Ihnen somit offen, auch ohne neue Bedienungsanleitungen erarbeiten zu müssen. Anhand der EURO_535-Karte, ein erweiterbares µ-Controller-Grundsystem, wird ein weiterer, in Laborversuchen getesteter und bewährter Weg aufgezeigt. Alle Bilder des vorliegenden Buches sind auf der beigelegten CD verfügbar. Dozenten können diese Bilder in Form von Folien benutzen. Falls Sie bestimmte Sachverhalte hervorheben wollen, können Sie die Bilder in Powerpoint bearbeiten. Kapitel 1 gibt eine allgemeine Einführung in das Themengebiet. Die wesentlichen Grundlagen der Digitaltechnik für µ-Controller werden in Kapitel 2 gelegt. Von der Peripherie kommend, steigen Sie immer tiefer in die „Geheimnisse“ der µ-Computertechnik ein. Dieser Weg wird in Kapitel 3 fortgesetzt, in dem der µ-Controllerbaustein zunächst von außen und dann immer detaillierter betrachtet wird. Das erste Programm und dessen Test erfolgt in Kapitel 4. Anhand der Projekte des Kapitels 5 studieren Sie die Befehle und die Verwendung der in den µ-Controller eingebauten Einheiten. Die Mächtigkeit einer Hochsprache und die vereinfachte Softwareentwicklung wird durch die Bearbeitung der gleichen Projekte mit der Sprache C in den Kapiteln 6 und 7 aufgezeigt. Das anschließende Kapitel 8
2
zeigt verschiedene Prozessorarchitekturen auf. Die enorme Vielfalt der 8051-Derivate ermöglicht Ihnen, immer den richtigen Controller für Ihre Aufgabenstellung auszuwählen. Das methodische Vorgehen bei der Entwicklung von µ-ControllerHardware beschreibt Kapitel 9. Die Vorbereitungen für die Entwicklung in Form einer Anforderungsliste werden in diesem Kapitel besonders hervorgehoben. Mit Hilfe der Übungsaufgaben in Kapitel 10 können Sie Ihr erworbenes Wissen zuverlässig überprüfen. Ich wünsche Ihnen viel Spaß mit dem µ-Controller. 1.2
Einführung in die µ-Computertechnik
Die µ-Computertechnik erscheint vielen Einsteigern als eine Trödelbude von Detailwissen ohne Struktur. Verstärkt wird dieser Eindruck durch die Schwierigkeiten im Umgang mit den unterschiedlichen Ebenen in Hardware und Software. Genaue Kenntnisse über diese Ebenen sind daher für das Verstehen der µ-Computertechnik von zentraler Bedeutung. Die nachfolgende Tabelle zeigt diese Ebenen auf. In den anschließenden Kapiteln werden die einzelnen Ebenen studiert, erläutert und die einzelnen Fachgebiete gegeneinander abgegrenzt. Tabelle 1.1 Die Ebenen in vereinfachter Darstellung Ebene Intelligente Programme, Maschinen
Beispiel PDA, Schrift-, Spracherkennung, Turing Test Anwenderprogramme Word, Excel, Maple Programmieren mit Objekten Visual Basic, Toolbook Objektorientierte Hochsprachen C++, Small-Talk, C# Compiler, Interpreter, Linker MSC, C, Pascal, Basic, Lisp... Betriebssystem DOS, Unix, XP, Vista, Mac OS X Maschineninstruktionen - Assembler MOV A,@R0 µ-Controller, DSP 80535, DSP 21020 Zähler, Timer, FIFOs, Input-Output, 8253, 7202, 8251, 8255 µ-Prozessor, Arithmetik-Prozessor... 8085, 80486, 68000, 80387 µ-Programm Steuerwerk Register, Adress- und Datenwege 74F374, A0...A31, D0....D15 Gatter, Flip-Flops Nand, Nor, D-Flip-Flop Transistoren, Widerstände, Kondensatoren BC107, 1kΩ, 20 µF
Lassen Sie sich von der Vielzahl der Ebenen nicht erschrecken. Nach dem Studium dieses Buches und der darin aufgeführten Software sollten Sie diese Tabelle erneut betrachten. Die aufeinander aufbauenden Gebiete erscheinen dann für Sie logisch, ja sogar zwangsläufig. Sie werden dann
1 Einführung
3
schnell entdecken, dass die Ebenen nicht nur aufeinander aufbauen, sondern sind auch miteinander verzahnt sind. Eine weitere interessante Fragestellung ist: "In welcher Ebene ist der Zugang am leichtesten?" Während vieler Diskussionen mit Studierenden ergaben sich verschiedene Antworten auf diese Frage. Ein möglicher Weg ist, das Buch nicht linear zu lesen. Lineares Lesen heißt, dass eine Ebene auf der anderen aufbaut. Bei einem nicht linearen Studium können Sie beispielsweise sofort mit Kapitel 3 beginnen. Schon bei dem Versuch, die einzelnen Ebenen in einer Tabelle darzustellen wird deutlich, dass bestimmte Sachverhalte auf diese Weise nicht berücksichtigt werden. Dagegen bietet sich folgende Darstellung an: Intelligente Programme
EXCEL, Winword, AUTOCAD, Maple
Anwenderprogramme
.NET, Visual Basic, Toolbook, Hypercard
Programmieren mit Objekten Objektorientierte Hochsprachen
C++
Compiler, Interpreter, Linker
TPW
Turbo C
Maschineninstruktionen, Assembler µ-Controller
PDA, Schriften-, Spracherkennung
MSC
MOV A,@I0
INT 21
8051, 80535
Zähler, Timer, FIFOs, Input Output
8253
SMALL TALK
PASCAL
IF NOT MV MR=MR+MX0*MY0(UU)
Signalprozessoren
8251
7202
µ-Programm
LINK
8085
21020, 96002
80486 68030
1101 0011 0011 1111
Register, Adress-, Daten- und Controlwege Gatter, Flip-Flops
&
>1
Transistoren, Widerstände, Kondensatoren
Abb. 1.1 Ebenen-Problematik
Die µ-Computertechnik befasst sich mit 7 verschiedenen Ebenen v "Gatter, Flip-Flop" bis "Compiler, Linker, Interpreter". Gleichzeitig erklären die verschiedenen Ebenen die Problematik des Einstiegs in das Gebiet der µ-Computertechnik. Auf welcher Ebene ist der Einstieg am sinnvollsten? Wie werden Aufgabenstellungen mit µ-Controllern am besten gelöst? Zunächst erfolgt eine Abstimmung bezüglich der Sprache zwischen dem Autor und dem Leser. Infolge des Mediums "Buch", man könnte auch "Read-Only-Paper" sagen, ist eine einseitige Kommunikation vorgegeben.
4
Es stört das Buch sehr wenig, wenn Sie ihm freche Antworten geben. Machen Sie sich deshalb beim Studium Notizen. Hierdurch wandeln Sie das "Read-Only-Paper" in ein "Read-Write-Paper". Nach einigen Erklärungen zum Sprachgebrauch werden wir sehr abstrakt auf der höchsten Ebene der µ-Computertechnik einsteigen. Die gesamte µ-Computertechnik wird zunächst theoretisch erklärt. Leider ist jedoch das Beherrschen der Theorie in der µ-Computertechnik genauso „wirkungsvoll“ wie beim Klavier spielen. Theorie des Klavierspiels: Sie müssen bestimmte Tasten zum richtigen Zeitpunkt mit der gewünschten Stärke und der angegebenen Dauer anschlagen. Sie müssen also nur vier Dinge beherzigen. Diese Theorie können Sie verstanden haben und in einer Prüfung wiedergeben. Trotzdem können Sie als Einsteiger noch nicht einmal "Hänschen Klein" spielen. Sie müssen üben, üben, üben..... 1.3
Erläuterungen zum Sprachgebrauch: Englisch - Deutsch
In diesem Buch werden sowohl englische als auch deutsche Fachausdrücke verwendet. Für das Verständnis der jeweiligen Ausdrücke ist es sehr wichtig, die Übersetzung in die jeweilige Sprache zu kennen. Eine "normale" Übersetzung kann in den meisten Fällen nicht vorgenommen werden. Durch das Verwenden von englischen Ausdrücken wird unmittelbar klar, dass es sich um einen Fachausdruck handelt. Es werden deshalb nicht alle Fachausdrücke zwanghaft übersetzt, sondern die für das Verständnis notwendigen Formulierungen und Bedeutungen dem Studierenden näher gebracht. Als Beispiel dient der Ausdruck Stack. Dieser wird häufig mit "Stapelspeicher" übersetzt. Ein Stapel ist - nach dem deutschen Wörterbuch Wahrig - ein aufgeschichteter Haufen. Ein Speicher ist auch Lagerhaus, Raum, Behälter. Folglich handelt es sich um ein Lagerhaus mit aufgeschichteten Haufen. Für das Verständnis sind solche Übersetzungen irreführend, da weder die Struktur noch die Zugriffsart für einen Stack aus dieser Übersetzung hervorgeht. Ich werde deshalb von einem Stack reden und lieber diesen Fachausdruck erklären. Eine sinnvolle Übersetzung für den englischen Ausdruck File ist dagegen das deutsche Kurzwort Datei, entstanden aus den beiden Worten Daten und Kartei. Es handelt sich demnach um eine Sammlung sachlich zusammengehöriger Daten. Anstatt zwanghaft "einzudeutschen", sollten Sie das technische Englisch als Vorteil für die sprachliche Eindeutigkeit nutzen.
1 Einführung
1.4
5
Begriffsbestimmung µ-Computer und µ-Controller
Der Begriff Mikrocomputer ist ein Kompositum: µ ~ Mikro = 1 Millionstel, von griechisch mikros = klein - Computer - engl., von lat. computare = berechnen. Die folgenden Ausdrücke sind mit dem Wort µ-Computer verbunden: • kleiner leistungsfähiger Computer • PC, Laptop, Notebook, Palm, iTouch, PDA, µ-Controller • urspr. menschlicher oder maschineller Rechner • heute Synonym für programmgesteuerte Rechenautomaten Computer lassen sich in drei Klassen unterteilen: • Analogcomputer • Digitalcomputer • Hybridrechner Die wesensbestimmenden Charakteristiken für den µ-Computer sind: • austauschbares Programm • Universalität • kann beliebig wohldefinierten Automaten simulieren • Selbstbezüglichkeit - auf dem µ-Computer können Programme entwickelt werden, die wiederum auf demselben µ-Computer lauffähig sind. • Approximation einer Turingmaschine Als µ-Computer wird im üblichen Sprachgebrauch ein µ-Prozessor mit verschiedenen Chips auf einer Platine sowie einer Ein- und Ausgabeeinheit bezeichnet. Chip
µ-Prozessor
µ-Prozessor Chip
µ-Controller
Timer µ-Prozessor
Interrupt Schnittstellen Ausgabeeinheit
Platine
µ-Computer
Chip µ-Prozessor
c:> Chips
Timer Interrupt Schnittstellen
Eingabeeinheit Tastatur
Abb. 1.2 µ-Prozessor, µ-Controller, µ-Computer
6
Beim µ-Controller sind die verschiedenen peripheren Einheiten und der µ-Prozessor auf einem gemeinsamen Chip integriert. Die Fertigungstechnik ermöglicht inzwischen, ganze µ-Computer in Form eines PCs in Checkkartengröße zu realisieren. Die Bezeichnung PC (Personal Computer) möchte ich in diesem Zusammenhang ebenfalls klären. Die Vision des PCs von Steve Jobs war, dass jede Person einen ihr zugeordneten PC besitzt. Die Bezeichnung Personal Computer beschreibt daher vor allem die individuelle Zuordnung eines Computers zu einer Person. Ein PC mehreren Personen zuzuordnen, zieht einen nicht vertretbaren Wartungsaufwand nach sich. Fazit: Kein Pool, sondern jedem Studierenden sein Laptop inklusive Software. 1.5
Turingmaschine
Der britische Mathematiker Alan Turing (1912-1954) schrieb 1950 seine Überlegungen zum "Turing Test" in seinem Aufsatz "Maschinelle Rechner und Intelligenz" nieder [Hofstadter; Gödel, Escher, Bach]. Darin geht es um die Frage, ob es denkende Maschinen gibt. Aus mathematischer Sicht gehören solche Fragestellungen in die Automatentheorie und die Theorie der Berechenbarkeit. Sie brauchen keine Befürchtungen zu haben, dass ich diese abstrakte Theorie erklären möchte, aber gerade Alan Turing beweist, dass solche Theorien nicht allein durch Nachdenken entstehen, sondern durch jahrelange praktische Beschäftigung, der daraus gewonnenen Erfahrung und den Umgang mit daraus resultierenden verwandten Fragestellungen. Alan Turing knackte während des zweiten Weltkrieges den Code der Verschlüsselungsmaschine "Enigma". Da dort zwei Codierungsschichten verwendet und Änderungen an der Maschine vorgenommen wurden, musste die Codierung immer wieder neu entschlüsselt werden. Durch diese Arbeit wurde Turing angeregt, zu untersuchen, wie Maschinen Denkvorgänge imitieren könnten. Seine Theorie entstand folglich aus den konkret zu lösenden Problemen und nicht aufgrund abstrakter Ideen. Eine sehr aktuelle Fragestellung: Unterhalten Sie sich am Telefon mit einem Automaten oder einem Menschen? Die theoretische Maschine von Turing besitzt alle wesentlichen Teile, die einen Computer charakterisieren. Turingberechenbare Funktionen Eine Funktion heißt turingberechenbar, wenn man eine Turingmaschine angeben kann, die aus dem Argument x in endlich vielen Schritten den Funktionswert f(x) berechnet. Die Verarbeitung der Werte erfolgt durch eine extrem lange Folge, wird aber durch einfache Rechenoperationen durchgeführt. Der gegensätzliche Fall wäre die Verarbeitung der Werte in einem Schritt.
1 Einführung
7
Die Turingmaschine ist eine theoretische Maschine mit folgenden Charakteristiken: • • • •
Speichermedium Band unendlich langes Band Beliebig viele Zustände Z Zeichen E1....En ( E>=2) Ei ,Z j E k,Z l
Übergangstabelle Maschinentafel SchreibLeseKopf
* hgfedcba
hgfedcba 76543210 743210
76543210
E
Abb. 1.3 Turingmaschine
Operationen Schreib-Lese-Kopf Schreiben Lesen Sonderoperationen als Pseudozeichen • E0 ≡ Löschen ≡ identisch mit • * ≡ Rechenschritte beenden • L ≡ Linksverschiebung des Bandes um ein Zeichen • R ≡ Rechtsverschiebung des Bandes um ein Zeichen • •
Zwei wesentliche Realisationsmöglichkeiten von Rechenmaschinen beziehungsweise Rechenautomaten möchte ich Ihnen im nachfolgenden vorstellen: Schaltwerk und Schaltnetz. Schaltwerk Durch eine zeitliche Aufeinanderfolge von einfachen Rechenschritten werden komplizierte Operationen durchgeführt. Daraus ergeben sich folgende Konsequenzen: • Das Zeitproblem digitaler Informationsverarbeitung • Notwendigkeit von Speicherplatz?
8
Schaltnetz Durch gleichzeitige Eingabe des Befehls und der Daten erhält man unmittelbar am Ausgang das Ergebnis. Schaltwerk
+
2
5
5 7
Schaltnetz
2
7
+
Abb. 1.4 Schaltnetz - Schaltwerk
Aufgabe Funktioniert ein Taschenrechner ähnlich einem Schaltnetz oder ähnlich einem Schaltwerk? Lösung Da die Tasten "5" und "2" nicht gleichzeitig betätigt werden können, muss es sich um ein Schaltwerk handeln. Diese sehr abstrakte Beschreibung eines Rechenautomaten verlasse ich gerne und gehe zu einer anschaulicheren Darstellung der µComputertechnik über. Hierzu die Fotografie eines µ-Controllers und seine technische Darstellung:
Abb. 1.5 µ-Controller als Fotografie und als technische Darstellung
1 Einführung
9
Die einzelnen Anschlüsse des µ-Controllers sind bei dieser Bauform an den vier Kanten des Chips herausgeführt. In der technischen Darstellung werden die einzelnen Anschlüsse nummeriert und bezeichnet. Eine Einkerbung markiert den Anschluss mit der Nummer 1. Der Herstellername und die Bausteinbezeichnung befinden sich in der Mitte des Chips. Aus den weiteren Bezeichnungen gehen die verwendete Technik und die Gehäuseform hervor. Je nach Einsatzgebiet verändern sich die Umgebungsbedingungen wie z. B. Temperatur oder Feuchtigkeit und damit die jeweiligen Anforderungen an den Baustein. Zu jeder Bauform eines µ-Controllers gibt es das dazugehörige Datenblatt, auf dem die Spezifikationen genau festgelegt sind. Erinnern Sie sich an die Theorie des Klavierspiels? Sie müssen bestimmte Tasten zum richtigen Zeitpunkt mit der gewünschten Stärke und der angegebenen Dauer anschlagen. Ähnlich verhält es sich bei dem gezeigten Baustein mit seiner Vielzahl von Anschlüssen, auch Pins genannt. Die Theorie des µ-Controller Chips Sie müssen bestimmte Pins zum richtigen Zeitpunkt mit der angegebenen Dauer auf "1"- oder "0"-Pegel legen. Es ist also einfacher als beim Klavier spielen, da in der Digitaltechnik die Kategorie "Stärke" entfällt. Der Spannung zwischen 0V und 0,8V ist bei der TTL-Technik (Transistor-Transistor-Logik) der logische Pegel "0" zugeordnet. Der Spannung zwischen 2,4 und 5 V ist der Pegel "1" zugeordnet. Zwischen 0,8V und 2,4V liegt eine „verbotene Zone“. Bei Messungen in TTL-Schaltungen sind Ausgang und Eingang von Bausteinen in den meisten Fällen zusammengeschaltet. Die Zuordnung von Pegel zu logischem Zustand entspricht dann den vorher genannten Werten. Durch die unterschiedlichen Pegel an Ausgang und Eingang eines ICs entsteht eine zusätzliche Sicherheit bei TTL-Technik von 0,4 V. Bei CMOS-Technik beträgt dieser Störspannungsabstand 1 V. Zur Erklärung dieses Sachverhaltes bei der TTL-Technik, auch im Vergleich zur C-MOS-Technik, dient das nachfolgende Bild:
10 U/V
TTL
TTL
5
CMOS 4,5V
4
H
CMOS
H
H
H 3,5 V
3 2,4V 2
2,0 V 1,5 V
1
0,4V
0,8 V L Ausgang
L Eingang
0,5V
L Ausgang
L Eingang
Abb. 1.6 TTL Pegel am Eingang und Ausgang
Beachten Sie bitte den Ebenenwechsel, der mit den eben vorgenommenen Schritten erfolgte. Sie bewegen sich jetzt auf der untersten Ebene den Transistoren bzw. der Elektrotechnik mit dem Teilgebiet der Halbleitertechnik. Ordnen Sie also bestimmten Spannungspegeln einen logischen Wert zu, bewegen Sie sich automatisch in der Gatter - Flip-Flop - Ebene. Wiederholen Sie bitte noch einmal die "Theorie des µ-ControllerChips". Auffällig bei dieser Theorie ist die doppelte Betonung der Zeit. Bei der Erklärung des Schaltwerks wurde bereits das Zeitproblem der digitalen Informationsverarbeitung erläutert. Um dieses Zeitproblem zu studieren, verändert man die Perspektive aus der der µ-Prozessors betrachtet wird und bewegt sich gewissermaßen in den µ-Prozessor hinein. Hierdurch wechselt man von der µ-Prozessor-Ebene auf die Flip-Flop-Ebene. Der letzte Teil in der "Theorie des µ-Controller-Chips" - "1"- oder "0"Pegel - besagt, dass dann das Ziel erreicht ist, wenn ein Bit, d.h. die kleinste Informationseinheit zu einem beliebigen Zeitpunkt gesetzt und zurückgesetzt werden kann. Ist ein Bit mit 1 oder 0 in einen Baustein zu schreiben und kann dieses Bit auch gelesen werden, muss der Baustein einen Speicher für den Zustand dieses Bits haben. Gesucht wird also ein Baustein, in den man ein Bit einschreiben und ein Bit herauslesen kann. Weiterhin soll der Baustein beim Einschalten einen definierten Zustand einnehmen. Sind alle beschriebenen Operationen mit diesem Bit durchführbar, können beliebige Systeme durch Erweiterung auf 8 Bit ≡ 1 Byte, 16 Bit ≡ 1 Word, 32 Bit ≡ Double Word und 64 Bit entwickelt werden.
2 Die Peripherie des µ-Controllers
Die beschriebene Zeitproblematik der digitalen Informationsverarbeitung hat wichtigste Konsequenzen für die Entwicklung von digitaler µ-ComputerHardware. Um dies zu unterstreichen, sei die Frage gestellt: "Was sind die drei wichtigsten Dinge bei der Entwicklung von digitaler µ-Computerhardware?“ Die Antwort: "1. Timing; 2. Timing; 3. Timing.“ 2.1
Das D-Kippglied - D-Flip-Flop Pin 14 = Vcc /S 4 D
2
C
3
5
Q
6
Q
Kenn-
74F74
zeichnung
1
/R
Pin 1
Pin 7 = GND
Abb. 2.1 Logisches Symbol für D-Kippglied und Fotografie
S Set Setzen R C Clock Takt D Q Out Ausgang / oder Querstrich über Zeichen = Verneinung
Reset Date
Rücksetzen Daten
Normalerweise ist bei allen TTL-Bausteinen - von oben gesehen - der Pin unterhalb der Kennzeichnung der Pin mit der Nummer 1. Am rechten Rand unten befindet sich GND (Ground = Masse) und am linken Rand oben Vcc = Versorgungsspannung + 5V. In einem Baustein befinden sich zwei D-Kippglieder. Wahrheitstabelle für D-Kippglied Synonyme: Funktionstabelle, Wahrheitstafel, Truth Table, Function Table Die Wahrheitstabelle beschreibt die rein logischen Zusammenhänge. Sie zeigt keinerlei zeitliche Zusammenhänge auf.
12 Tabelle 2.1 Wahrheitstabelle D-Flip-Flop (Motorola) /Set L H L H H H H H
Eingänge /Reset H L L H H H H H
Clock X X X
L H
Daten X X X H L X X X
Ausgänge Q H L H* H L
/Q L H H* L H
kein Wechsel kein Wechsel kein Wechsel
kein Wechsel kein Wechsel kein Wechsel
L Low-Pegel ≡0V H High-Pegel ≡5V Rising Edge ≡ steigende Flanke x undefined - don´t care ≡ nicht definierter Zustand * Vorsicht, bei jeder Bausteinfamilie anders Impulsdiagramm für D-Kippglied Synonyme: Zeitdiagramm, Timing, Signal-Zeit-Plan • Das Impulsdiagramm ist eine Darstellungsform, in der alle kritischen Vorgänge optimal dargestellt werden können. • Es handelt sich um die zeichnerische Darstellung des zeitabhängigen Zusammenhangs zwischen Eingangsvariablen und Ausgangsvariablen. • Exakt diese Darstellung erhalten Sie bei der Verwendung eines Logikanalysators. 1 µs
T=C D /Set
/Reset
Q * * Falls /Set und /Reset gleichzeitig auf H gehen ( Einschalten ), ist der Zustand für Q nicht definiert !
Abb. 2.2 Impulsdiagramm für D-Flip-Flop (Funktion)
t
2 Die Peripherie des µ-Controllers
13
In diesem Zeitdiagramm ist auf der x-Achse die Zeit und auf der y-Achse der Pegel eingetragen. In digitalen Systemen ohne Peripherie werden alle weiteren Signale vom Takt angeregt. Dieser Systemtakt stellt gewissermaßen das Herz des Systems dar. Vom Takt leiten sich alle weiteren Signale ab. Deshalb wird im Bild 2.7 für die Funktion das Set-Signal vom Clock abgeleitet und daher nach dem Clock-Signal anliegen. Weiterhin ist eine Zeitbedingung für den Clock vorhanden, wenn /Set von LOW nach HIGH geschaltet wird. Diese Zeit wird als Recovery Time (Aufdeck-Zeit) bezeichnet. Aufgabe Um eine Vorstellung von der Zeit „1 µs“ zu erhalten, berechnen Sie bitte den Weg, den ein elektrisches Signal in dieser Zeit zurücklegen kann. Die elektrische Signal-Geschwindigkeit beträgt auf Leiterplatten infolge des Dielektrikums näherungsweise 200 000 000 m/s und beträgt somit 2/3 der Lichtgeschwindigkeit. Lösung s = v * t = 2*108 m/s * 1*10-6s = 200 m Innerhalb der Zeit, in der ein einfacher µ-Prozessor eine Operation durchführt, kann der schnellste physikalische Vorgang, die Ausbreitung von Licht, nur 300 m zurücklegen. Das elektrische Signal kann sich über 200 m ausbreiten. Machen Sie sich diese Tatsache immer wieder bewusst. Kehren wir nach diesem Exkurs über die Zeit zurück zur Erklärung des Impulsdiagramms. An der ersten gestrichelten Linie befindet sich eine kritische Stelle. Befindet sich /Set vor dem Clock C auf "H", müsste aufgrund der auf "L" liegenden Datenleitung das Ausgangssignal auf "L" gehen. Bei dieser zeitlichen Auflösung reicht das einfache Impulsdiagramm für das Funktionsverständnis nicht aus. Eine bessere Zeitauflösung ergibt das verfeinerte Impulsdiagramm mit Schaltzeiten. Zunächst werden hierfür das Clock-Signal und die Reaktion des Ausgangs genauer untersucht. tr
Clock
tf V CC
90% 50% 10% t
GND w 1/ f
t
PLH
max
t
PHL
Q oder /Q t
TLH
t
THL
Abb. 2.3 verfeinertes Impulsdiagramm -Timing- für Clock von D-Flip-Flop
14 Tabelle 2.2 Erklärung der Abkürzungen für Timing D-Flip-Flop Abkürz- Erklärung ung englisch tw time width tPLH tPHL fmax tr tTLH tTHL
Bedeutung Impulsbreite des Clocks, bei symmetrischem Signal ist die Clockperiodendauer doppelt so lang wie die Impulsbreite Ausbreitungszeit des Signals bzw.Signallaufzeit bis der Ausgang aufgrund einer Änderung des Clocks und des D-Eingangs wirksam wird
time propagation low - high high - low max frequency rise time Output rise time low - high Output fall time high - low
Maximale Frequenz Anstiegszeit Anstiegsgeschwindigkeit des Ausgangs Abfallgeschwindigkeit des Ausgangs
t
/Set oder /Reset
V CC
w
50% t
Q oder /Q
50%
Q oder /Q
50% t
Clock
PHL
PLH
t
rec 50%
V GND
Abb. 2.4 Verfeinertes Impulsdiagramm für Setzen - Rücksetzen - Ausgang Q
Aufgrund der von Bausteinfamilie zu Bausteinfamilie unterschiedlichen Zeit trec kann sich im Bild "Impulsdiagramm für die Funktion" der Datenausgang Q bei gleichzeitigem Anliegen der steigenden Flanke von Clock und /Set ändern. Diese Zeit ist abhängig von der verwendeten TTL-Familie. Geläufige Familien sind HCT, FACT, TTL, LS. Wichtige Unterschiede liegen im gewählten Fertigungsverfahren und im Material. Das wichtigste, verfeinerte Impulsdiagramm, das auch bei µ-Computern für den Speicherzugriff eine entscheidende Rolle spielt, ist das Impulsdiagramm für die Datenleitung. Dieses gibt Auskunft über die Zeit, die Daten vor und nach der Übernahme-Flanke anstehen müssen.
2 Die Peripherie des µ-Controllers
15
gültig
Daten t
Clock
t su
h V CC
50%
GND
Abb. 2.5 Verfeinertes Impulsdiagramm für Daten - Clock
Diese Zeitberechnung für die minimalen und maximalen Werte der Zeiten, die für die Datenleitung gelten, spielt eine zentrale Rolle bei der Auswahl der Speicherbausteine für ein µ-Prozessorsystem. Die minimalen und maximalen Werte entstehen aufgrund der Exemplarstreuungen. Wichtigste Zeit-Werte für FACT-Familie (Fast Advanced CMOS TTLkompatibel) sind: Tabelle 2.3 FACT Logikbausteine (aus Datenbuch für FACT-Bausteine) Symbol Vcc GND tr, tf tw fmax tPLH tPHL tsu th trec
Parameter Min Versorgungsspannung 4,5 Gleichspannungsein/-ausgang 0 Typische Eingangsanstieg und -abfallzeit (4,5 V) Kleinste Impulsweite für Takt - Clock 3 Größte Taktfrequenz 145 Propagation Delay Verzögerungszeit für L zu 3 H Propagation Delay Verzögerung für H zu L 3 Setup time, Daten für Clock 1 Hold time, Clock zu Daten -0,5 Recovery Time, Set oder Reset Inactive -2,5 Clock
Typ 5
Max 5,5 Vcc
Unit V V ns/V
5 9,5
ns MHz ns
10 3 1,0 0
ns ns ns ns
40 200 5,5 6 0
Um den Pegel am D-Eingang sicher zu übernehmen, muss der Pegel mindestens 3ns vorher anliegen und mindestens 1ns nach der steigenden Flanke des Clocks gehalten werden. Aufgabe Führen Sie die Berechnung für die Wegstrecke, die Licht innerhalb einer Nanosekunde zurücklegen kann, durch. (Hinweis: Das Ergebnis liegt im cm-Bereich.)
16
Aufgabe Zeichnen Sie das Timing für ein rückgekoppeltes D-Flip-Flop. Der /QAusgang (Das Zeichen "/" bedeutet die Verneinung) führt auf den D-Eingang. Am Clock-Eingang liegt ein Rechtecksignal mit der Frequenz von 10 MHz an. 2.2
Tri-State-Ausgang
Ein Ausgang, der drei Zustände L (low), H (high) und Z (hochohmig) aufweist, wird als Tri-State-Ausgang bezeichnet. Diese drei Zustände eines Ausgangs benötigt man beim Zusammenführen von mehreren Ausgängen auf eine gemeinsame Leitung. Eine Logik bewirkt, dass immer nur ein Ausgang auf die gemeinsame Leitung geschaltet wird. Die anderen Ausgänge müssen sich dann im hochohmigen Zustand befinden. Die auf der Leitung liegende Information in Form des High- oder Low-Pegels gelangt an die entsprechenden Eingänge anderer Bausteine. Auf einem Chip befinden sich vier 3-State Buffers. /OE 1 D
2
3
Y
Abb. 2.6 Logisches Diagramm für 3-State-Ausgang und Fotografie Tabelle 2.4 und 2.5 Wahrheitstabelle für 3-State-Register 74125 / 74126 Eingänge D 0 1 x
74125 Ausgang /OE Y 0 0 0 1 1 Z
Eingänge D 0 1 x
74126 OE 1 1 0
Ausgang Y 0 1 Z
Für den Aufbau von Schaltungen mit diesen Bausteinen 74125 müssen natürlich auch die Werte des Signal-Zeit-Planes eingehalten werden. Diese Durchlaufzeiten betragen bei LS-Bausteinen und HC-Bausteinen bei Temperaturen, die geringer als 85° C sind ca. 20ns. Der Ausgang kann bei diesen Bausteinen durch 15 LS-Bausteine belastet werden. In HC-Technik können auch nicht invertierende 3-State-Buffer bezogen werden. Die Wahrheitstafel kehrt sich damit für den /OE-Steuereingang um.
2 Die Peripherie des µ-Controllers
2.3
17
Register
Ein Register besteht aus acht flankengetriggerten D-Flip-Flops. Die Steuerung von /Set und /Reset ist nicht möglich. Die Ausgänge sind 3-StateAusgänge mit den Zuständen: H, L, Hochohmig. Diese Bausteine werden sehr häufig in µ-Controller-Schaltungen eingesetzt. D0 CP
CP
D
Q
/Q
/OE
O0
Abb. 2.7 Logisches Diagramm 3-State-Register
Bei einer steigenden Flanke am CP - Clock Pin wird die am D0-Eingang stehende Information im Flip-Flop gespeichert. Am Ausgang beeinflusst der Zustand des /OE Pins die Umschaltung des Ausgangs von hochohmig in niederohmig. Der Baustein speichert und ändert eine Bitkombination auf Anforderung. Die Information liegt am Ausgang an. D0
D2
D1
D3
D4
D5
D6
D7
CP
CP Q
D /Q
CP Q
D
CP
D
CP
D
CP
D
CP
D
CP
D
CP
D
/Q
Q
/Q
Q
/Q
Q
/Q
Q
/Q
Q
/Q
Q
/Q
/OE O0
O1
O2
O3
O4
O5
O6
O7
Abb. 2.8 Interner Aufbau des 3-State-Register 74F374
Innerhalb eines Schaltplanes wird normalerweise das logische Symbol verwendet. Das logische Symbol wurde aus der Bibliothek des CAD-Programms "Eagle" kopiert. CAD-Programme (Computer Aided Design) unterstützen die Erstellung des Schaltplans und entflechten die Leiterbahnführung von Platinen.
18
Abb. 2.9 Logisches Symbol für das 3-State-Register und Fotografie
Für acht Dateneingänge und acht Datenausgänge sowie einen Pin für die Datenübernahme und Freigabe des Ausgangs ergeben sich 18 Pins. Mit der Versorgungsspannung und Masse gibt es somit 20 Anschlüsse am Chip. Tabelle 2.6 Wahrheitstafel für Register
/OE L L H
2.4
Eingänge Clock
X
Daten Dn H L X
Ausgänge Qn H L Z
H ≡ hoher Spannungspegel L ≡ niederer Spannungspegel X ≡ beliebig- don't care Z ≡ hochohmiger Ausgang ≡ L zu H Flanke
Latch
Im Gegensatz zum Register speichert das Latch nicht mit der steigenden Flanke, sondern die Übernahme der am Dateneingang stehenden Daten erfolgt mit H-Pegel am LE-Signal (Latch enable). Ist der Ausgang auf /OE = L (Output Enable = niedriger Spannungspegel) und LE = H, werden die anstehenden Daten unmittelbar durchgeschaltet. Ist LE = L werden die bisher angestandenen Daten im Latch zwischengespeichert.
Abb. 2.10 Logisches Symbol für das 3-State-Register und Fotografie
2 Die Peripherie des µ-Controllers
19
Tabelle 2.7 Wahrheitstafel Latch /OE L L L H
Eingänge LE H H L X
Daten Dn H L X X
Ausgänge Qn H L NO CHANGE Z
H = hoher Spannungspegel L = niederer Spgs.- pegel X = beliebig - don't care Z = hochohmiger Ausgang NO CHANGE = keine Änderung
Das Latch 74573 und das Latch 74373 sind funktionell identisch, lediglich die Pin-Belegung unterscheidet sich. Der Unterschied zwischen Latch und Register liegt in der Datenübernahme: • Beim Latch erfolgt eine pegelabhängige Datenübernahme • Beim Register erfolgt eine flankenabhängige Datenübernahme 2.5
Empfehlungen für digitale Schaltungen
0. Timing, Timing, Timing 1. Gleiche Familie Beim Aufbau von µ-Computer Hardware wird dringend angeraten, innerhalb eines Systems immer die gleiche Familie - Bausteinsorte (F, TTL, CMOS) - zu verwenden. 2. FAN-Out Der FAN-Out, d.h. die Anzahl der steuerbaren Eingänge pro Ausgang, ist zu beachten. 3. Kein unbeschalteter Eingang Es darf kein offener Eingang in der Schaltung vorhanden sein. 4. Diagnose Für die Überwachung sollten einfache Diagnosepunkte vorhanden sein, z.B. Ausgänge von Flip-Flops, LED für Versorgung. Mit diesen Empfehlungen und den wenigen Bausteinen, die bisher aufgeführt wurden, können wir bereits eine kleine Hardware aufbauen, mit der Daten von System 1 zu System 2 übergeben werden.
20
Vcc
System 1 Schreibe1
1010 0101
/OE
Vcc /OE_L1
Register
CP_L1
Vcc /OE_S2 CP_S2
Register
Vcc Lese2
/RD
xxxx xxxx
System 2
Abb. 2.11 Blockbild für einfache Datenübergabe von System 1 zu System 2
Die Beschreibung des Ablaufs der Datenübergabe erfolgt in einer SchrittTabelle. Hierin bedeutet: ein = Schalter betätigt aus = Schalter nicht betätigt Tabelle 2.8 Datenübergabe Schritt Nr. 1 2 3 4 5 6 7 8 9 10 11 12
Schreibe1 aus ein ein ein aus aus aus aus aus aus aus aus
CP_L1 aus aus ein aus aus aus aus aus aus aus aus aus
/OE_L1 aus aus aus aus aus ein ein ein aus aus aus aus
CP_S2 aus aus aus aus aus aus ein aus aus aus aus aus
/OE_S2 aus aus aus aus aus aus aus aus aus ein ein aus
Lese2 aus aus aus aus aus aus aus aus aus aus ein aus
Daten-Ort System 1 vor Register 1 vor Register 1 Übernahme in Register 1 auf Bus vor Register 2 Übernahme vor System2 vor System2 in System 2
2 Die Peripherie des µ-Controllers
21
Natürlich muss die Datenübergabe auch in die andere Richtung funktionieren. Das System wird auf ein bidirektionales System erweitert (= Datenflüsse in beide Richtungen möglich). Vcc
System 1 Lese1
/RD
Schreibe1
1010 0101
/WR
Vcc
Vcc
/OE_L1
Register
CP_L1
/OE_S1
Register
CP_S1
Vcc
Vcc
/OE_L2
Register
CP_L2
/OE_S2 CP_S2
Register
Vcc
Lese2 Schreibe2
/RD /WR
0011 1100
System 2
Abb. 2.12 Blockbild für bidirektionale Datenübergabe von System 1 zu System 2
Die Schritte in der Tabelle für die Datenübergabe von Register 1 nach Register 2 vollzieht später das Steuerwerk im µ-Prozessor nach, so dass der Programmierer diese einzelnen Schritte nicht immer wieder selbst programmieren muss. Aufgabe Erstellen Sie die Tabelle bei Übergabe von System 2 nach System 1. 2.6
Adress-Decoder
Die Bestimmung, welcher Systemteil angesprochen wird, kann natürlich nicht mit einem Schalter erfolgen. Um verschiedenste Bausteine anzusprechen, werden die einzelnen Signale mit einem Schaltnetz, dem Decoder, erzeugt.
22
Abb. 2.13 Logisches Symbol eines 1 aus 4 Decoders und Fotografie Tabelle 2.9 Pin Namen Pin A0,A1 /E /O0,/O1,/O2,/O3
Bedeutung Adress Inputs Enable Inputs Outputs
Die Bezeichnungen im Bild und die Pin-Namen in der Tabelle stimmen nicht überein. Falls Sie praktisch arbeiten, verwenden Sie Datenbücher verschiedener Hersteller und verschiedene Computerprogramme für das Layout, mit unterschiedlichen Pin-Bezeichnungen. In dem vorliegenden Fall wurde das logische Symbol dem CAD-Programm "Eagle" entnommen und die PinNamen einem Datenbuch von Motorola. Sie erkennen, dass die Eingänge A, B des logischen Symbols den Pin-Namen A0, A1, der Steuereingang G dem PinNamen /E Enable Inputs und die Ausgänge Y0, Y1, Y2, Y3 den Ausgängen A0, A1, A2, A3 zuzuordnen sind. Tabelle 2.10 Wahrheitstabelle für einen Adressdecoder (Baustein 74LS139) /E H L L L L
Inputs A1 X L L H H
A0 X L H L H
/O0 H L H H H
Outputs /O1 H H L H H
/O2 H H H L H
/O3 H H H H L
Wichtig ist die gegenseitige Verriegelung der Ausgänge, um zu gewährleisten, dass verschiedene Treiberbausteine nicht zeitgleich Daten auf den Datenbus legen. Dies würde dann einen Kurzschluss verursachen, wenn die Ausgänge der beiden Treiber unterschiedliches Potential hätten. Für eine Adressdecodierung können auch andere Bausteine programmiert werden. Beispielsweise ein PROM (Programmable Read Only Memory/Nur-LeseSpeicher), ein PAL (Program Array Logic) oder GAL (Wiederbeschreibbare Array Logic).
2 Die Peripherie des µ-Controllers
23
Ein Adressdecoder hat die Aufgabe, aus der anliegenden Bitkombination der Adressleitungen den entsprechenden Baustein zu wählen. Liegen vier Adressleitungen vor, können 16 Bausteine ausgewählt werden. Sind 10 Adressleitungen dekodiert, können folglich 1024 Bausteine angewählt werden. Dies ist beispielsweise beim alten AT-Bus im I/O-Bereich ~ Input-Output-Bereich der Fall. 2.7
Bus
In den bisherigen Ausführungen wurden die acht Datenleitungen zu einem dicken Pfeil zusammengefasst dargestellt. Dies ist der Datenbus. Bei einem 8Bit-Rechner handelt es sich um einen Datenbus mit 8 Leitungen entsprechend bei einem 16-Bit-Rechner um 16 Leitungen usw. Bei unserem einfachen System haben wir nur eine Speicheradresse pro System. Haben wir aber mehrere Speicheradressen, müssen wir diese ebenfalls adressieren. Dazu dienen die Adressleitungen. Die Anzahl der Adressleitungen ergibt den Adressbus. Ein 8Bit-Rechner kann beispielsweise 16 Adressleitungen haben. Hiermit lassen sich 216 = 65 536 Bytes ansprechen. Mit den Schaltern werden in unserem einfachen System zur Datenübergabe zwei Aufgaben realisiert: 1. Betätigen des Schalters gibt den Befehl zum Schreiben oder Lesen. 2. Bei Drücken des entsprechenden Schalters wird der Schalter selbst "adressiert", d.h. ausgewählt. Man kann auch sagen, der Ort bzw. die Adresse wählt den Schalter aus, bzw. die Betätigung des Schalters führt zu der entsprechenden Funktion. Trennen wir diese beiden Aufgaben in zwei Leitungen auf, so erhalten wir eine Adressleitung und eine Steuerleitung. Die Adressleitungen werden zu einem Adressbus zusammengefasst. Entsprechend fassen wir die Steuerleitungen Read/Write zu einem Steuerbus bzw. Controlbus zusammen. Zusätzlich kann ein solches System über den Speicher hinaus auch noch I/O-Leitungen, den I/O-Bus zum Ansprechen von Peripherie haben. Prinzipiell funktioniert die Adressierung wie bei den Speichern. Der Unterschied, ob ein Speicherzugriff oder ein I/O-Zugriff erfolgt, ist am Zustand der I/O-Leitung erkennbar. Das Wort Bus bedeutet im weitesten Sinne eine beliebige Anzahl von Leitungen. Aufgrund der Datenart auf dieser Leitung gibt es weitere Unterscheidungen zwischen Adressbus, Datenbus, Controlbus, I/O-Bus. Zusätzlich können die Leitungen zu unterschiedlicher Zeit durch verschiedene Datenarten belegt sein. Dann spricht man von einem Bus mit MultiplexVerfahren oder einem multiplexten Bus.
24
Warum diese unübersichtliche Doppelverwendung von Leitungen? Ein Grund besteht in der Ersparnis von Leitungen und Pins an den Chips. Diese Technik reduziert die Anzahl der Beinchen und ermöglicht so eine einfachere Produktion der Chips. Im nachfolgenden Blockschaltbild sehen Sie die verschiedenen Busse eines µ-Controllersystems. Es handelt sich dabei um die Euro_535-Karte. Diese Karte umfasst ein sehr flexibles Grundsystem auf Basis eines Controllers aus der 8051-Familie.
Port 0
Low-Byte-Adresse / Datum
AdressLatch
Low-Byte-Adresse
Eprom
ALE
80535
Port 2
J2 J3,8
High-Byte-Adresse
Microcontroller VAGND VAREF AN Port 6
CE
OE
Port 1 PSEN
RAM Port 5
Port 4
Port 3
J1 WR / P3.6
WE
CS OE
A15 RD / P3.7
AdressLogik J4,5,6,7
RxD / P3.0
Steckerleiste
TxD / P3.1
P1.1 P1.3 P3.3 P1.2 P3.2 P3.4 T1 T2 T3
R2OUT / P1.4
L1 L2 L3
Tasten / Leuchten
T2IN / P4.7
V24Treiber
PC
V24Treiber
PC
Abb. 2.14 Blockschaltbild - Bussysteme für 80535-System
Der hier vorgestellte Baustein 80535 ist ein Derivat (= Erweiterung) eines 8051-Controllers. Auf den 80535-Controller wird in den nachfolgenden Ausführungen immer wieder verwiesen. Am µ-Controllerbaustein sind die verschiedenen Busse, bestehend aus Leitungen, angeschlossen. An den Ports 1,3,4,5 sind allgemeine I/O-Datenbusse angeschlossen. Es handelt sich um bidirektionale Ports. An Port 2 können die oberen 8 Bit des Adressbusses angeschlossen werden. Ist kein externer Speicher am µ-Controller angeschlossen, können diese Leitungen als allgemeine I/O-Ports verwendet werden.
2 Die Peripherie des µ-Controllers VG-Leiste Quarz
Prozessor
Latch
RAM
DIP-Switches
ROM
Taster
25
+5V Anschluß
RESET Serielle Schnittstelle
Abb. 2.15 Aufbau der EURO_535-Platine
Sie erkennen an Port 0 den gemultiplexten Adress-Datenbus. Dieser AdressDatenbus ist 8 Bit breit und führt zu den Einheiten: • Speicher: ♦ EPROM (Erasable Programmable Read Only Memory) = Löschbarer Nur-Lese-Speicher. ♦ RAM (Random Access Memory) = Speicher mit wahlfreiem Zugriff, d.h. Lesen und Beschreiben des Speichers ist möglich. • Steckerleiste • Adresslatch Das Adresslatch hat die Adressen während der Zeit, in der Daten auf dem gemeinsamen Bus liegen, zwischenzuspeichern. Dieser Vorgang ist im nächsten Bild nochmals veranschaulicht. Zum Zeitpunkt t1 legt der Prozessor beispielsweise die Bitkombination 1010 0101 an Port 0 auf den Datenbus. Gleichzeitig erscheint an ALE ein HighPegel. Zum Zeitpunkt t2 nimmt ALE den Zustand Low an und speichert somit die Adresse im Latch. Anschließend legt der Prozessor zum Zeitpunkt t3 die Daten auf den Bus.
26
1010 0101
t1
Port 0
1010 0101
Adress-
1010 0101 1010 0101
ALE
1
latch
xxxx xxxx Adress-
t2
Port 0
xxxx xxxx
1010 0101 1010 0101
ALE
0
latch
1011 1101 Adress-
t3
Port 0
1011 1101
1010 0101 1010 0101
ALE
0
latch
Abb. 2.16 Ablauf der zeitgemultiplexten Adress-Daten-Zustände
Der Unterschied zwischen Multiplexen und zeitlichem Demultiplexen mit einem Latch wird deutlich, wenn man einen 2 x 4 Multiplexer mit 3-StateAusgang untersucht. Als Beispiel sei der Baustein 74HCT257 gewählt. Nibble A Nibble B
Select
A A A A 0 1 2 3
B B B B 0 1 2 3 74F257
OE
Y Y Y Y 0 1 2 3
Abb. 2.17 2x4 Multiplexer und Fotografie
Bei diesem Baustein können die Eingangsdaten gleichzeitig anliegen. Jeweils ein Nibble (1 Nibble = 4Bit = 1/2 Byte) wird auf den Ausgang durchgeschaltet. Ein in der Funktion des Multiplexers identischer Teil muss folglich im µ-Controller vorhanden sein.
2 Die Peripherie des µ-Controllers
27
Tabelle 2.11 Wahrheitstabelle Multiplexer Eingänge /OE H L L
Select X L H
Ausgänge Qn Z A0-A3 B0-B3
Im µ-Controller muss für das Umschalten zwischen Adressen und Daten ein 2x8 Multiplexer enthalten sein. Der Ausgang des Multiplexers wird an Port 0 anliegen. Bei der EURO_535-Karte ist ein Teil des Adressbusses auf eine besondere Adresslogik geführt. Diese Logik wird im Kapitel 3.7. "Timingberechnungen für 80535-Speicher" im Detail besprochen. 2.8
Schaltplan EURO_535 Karte
Falls Sie zum ersten Mal einen solchen Schaltplan sehen, mag dieser sehr unübersichtlich erscheinen. Sie erkennen aber sicherlich den Controller 80C535, den Latch 74573, das EPROM 27256, das RAM 56256, den Baustein für die seriellen Schnittstellen MAX232 und die drei Steckerleisten ST3A, ST3B, ST3C. Die kleineren Kästchen in der Bildmitte 7402, 7474, 7486 und 7402 gehören alle zur Adresslogik. Im zweiten Teil des Schaltplanes sind die Taster und die Leuchtdioden aufgeführt. Eine zweite serielle Schnittstelle kann mit den zwei Signalen R2OUT und T2IN, angeschlossen an Port 1.4 und Port 4.7, erzeugt werden. Alle Zusatzbeschaltungen der Ports auf der Platine können durch die DIPSwitches (Dual Inline Packages Switches) abgeschaltet werden. Hierdurch können auf der Steckerleiste alle Portanschlüsse für beliebige Schaltungen zugänglich gemacht werden. Beachten Sie deshalb beim Anschluss von Zusatzkarten an der Steckerleiste immer die Einstellungen der DIP-Switches. Die Schalter in einem Gehäuse werden lustiger weise auch oft "Mäuseklavier" genannt. Die Verwendung solcher Schalter sollte möglichst vermieden werden, um Fehlbedienungen zu vermeiden.
28
2 Die Peripherie des µ-Controllers
29
3 Aufbau von µ-Controllern der 8051-Familie
In den nachfolgenden Ausführungen tasten Sie sich von außen an die „Geheimnisse“ der Bausteine heran. Sie laufen gewissermaßen um den Baustein herum und studieren jeden Anschluss. Danach gehen Sie eine Schicht tiefer in den Baustein hinein und befassen sich mit der Funktionsweise des Anschlusses. Die nachfolgende Architekturbetrachtung ist sicherlich der interessanteste Teil. Hier werden wieder die einzelnen Teile von außen studiert, um danach wiederum eine Schicht tiefer vorzudringen. Diese Vorgehensweise lässt sich mit der Reise in eine Stadt vergleichen. Zuerst wählen Sie eine der verschiedenen Anreisemöglichkeiten wie Bahn, Bus, Auto, Schiff oder Flugzeug aus. In einem Übersichtsbild finden Sie die "Eingänge" und "Ausgänge" der Stadt . Reisen Sie mit dem Flugzeug an, müssen Sie sich zuerst im Flughafen zurechtfinden. Haben Sie dort Ihr Gepäck und den Ausgang gefunden, schauen Sie sich den Übersichtsplan an, um den groben Aufbau der Stadt genauer kennenzulernen. Das Blockbild entspricht also dem Übersichtsplan. V SS
V CC
XTAL1 XTAL2 RST/V
RxD TxD /INT0 /INT1 T0 T1 /WR /RD
→ ← → → → → ← ←
PD
→
/EA
→
/PSEN
←
ALE
←
Port 3
8051
↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔
Abb. 3.1 Logisches Symbol des 8051
↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔
Port 0
↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔
Port 1
↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔
Port 2
↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔
Adress- und Datenbus
→ → → → → → → →
Adressbus
3 Aufbau von µ-Controllern der 8051-Familie
31
Für die Anschlüsse ist die Darstellung in Form des logischen Symbols vorteilhaft. Es gibt zwei Arten von Anschlussleitungen, erkennbar an der zweiten, aus Pfeilen bestehenden Reihe. An Port 0 sehen Sie zusätzlich einen Adress- und einen Datenbus. Diese Darstellung zeigt bereits die Flexibilität der Bausteine. Je nach Einsatzgebiet können diese Leitungen als einfache I/O-Leitungen oder als Adress- und Datenbus verwendet werden. Das "oder" ist als Exklusiv-Oder zu verstehen. Die Signalbeschreibung erfolgt nach dem logischen Symbol in Gruppen. Es wird eine allgemeine Beschreibung der Pin-Anschlüsse gegeben und in Form einer Tabelle dargestellt. Die genaue Bezeichnung und die Anschlussbelegung der DIL-Version sind ebenfalls in der Tabelle enthalten. 3.1
Pin-Definitionen und Funktionstabelle
Tabelle 3.1 Pin-Definitionen und Funktionen der 8051 DIL-Version Symbol Vss Vcc XTAL1
Pin In Out 20 40 19
XTAL2
18
RST/VPD 9
I
/EA
31
I
/PSEN
29
O
ALE
30
O
P0.0-P0.7 3932 P1.0-P1.7 1-8 P2.0-P2.7 2128 P3.0-P3.7 1017
I/O I/O I/O I/O
Funktionen - Beschreibung 0-Potential - Digitale Masse +5V Spannungsversorgung Eingang zum Oszillatorverstärker. Wird gebraucht, wenn ein Quarz benutzt wird. Wird mit Vss verbunden, wenn eine externe Quelle an XTAL2 benutzt wird. Ausgang vom Oszillatorverstärker. Eingang zum internen TimingTeil. Ein Quarz oder eine externe Quelle kann benutzt werden. Reset - Ein 1-Pegel setzt den Baustein zurück. Ein kleiner, interner Pull down-Widerstand erlaubt beim Einschalten ein Reset nur durch Zuschalten eines einfachen Kondensators. Weiterhin kann der VVPD zum Steuern von Stand-by-Power verwendet werden. Bei 0-Pegel holt der 8051 alle Instruktionen vom externen Programmspeicher. Bei 1-Pegel bis zu den Adressen 4096, d.h. die unteren 2KByte vom internen Speicher. Program Storage Enable. Ist ein zum Controlbus gehöriges Signal für den externen Programmspeicherzugriff. Es wird alle 6 Oszillatorperioden aktiviert. Es bleibt auf 1-Pegel, wenn interner Programmspeicherzugriff erfolgt. Dient zur Steuerung des externen Adresslatch für das zeitliche Demultiplexen der Daten und Adressen. Es wird alle 6 Oszillatorperioden bei externem Speicherzugriff aktiviert. Port 0 ist ein bidirektionaler open drain I/O Port. Wird auch für die Adressen und Daten verwendet bei der zweiten Betriebsart. Ist ein 8-Bit quasibidirektionaler Ein-, Ausgangsport. Ist ein 8-Bit quasibidirektionaler Ein-, Ausgangsport. In der zweiten Betriebsart stellt er die oberen acht Bit der Adressen zur Verfügung. Ist ein 8-Bit quasibidirektionaler Ein-, Ausgangsport. In der zweiten Betriebsart stellt er wichtige alternative Funktionen zur Verfügung.
32
3.2
Prinzipieller Aufbau eines 8051-Ports.
Gehen Sie vom Port-Pin eine Schicht tiefer in den Baustein hinein, erkennen Sie die Portstruktur. Port 0 wird nach den anderen Ports betrachtet. Der Grundaufbau der Ports 1 bis 3 ist im Bild dargestellt. Read Latch
gesperrt
interner Bus Write Latch
Q
D CLK
Port Latch
/Q
Read Pin freigegeben
Port Treiber
im Baustein
Port Pin
außerhalb
Abb. 3.2 Prinzipieller Aufbau eines 8051-Ports
Die Basis-Struktur des Anschlusses erfüllt folgende Aufgaben: • Zustand des Pins lesen • Pin beschreiben und Speichern des Zustandes • Zustand des Port-Latches lesen Alle Aufgaben der Ports veranschaulichen die hervorgehobenen Datenpfade in den folgenden Bildern. Port lesen Wird der Read-Pin freigegeben, gelangt der Zustand des Port-Pins auf den internen Bus. Die graue Linie zeigt den Datenweg über das durchgeschaltete Tri-State-Gatter, angesteuert mit Hilfe des Read-Pin-Signals. Die gestrichelte Linie deutet die Bausteingrenzen an. Der Zustand des ReadLatches ist gesperrt, da sonst zwei Ausgänge gegeneinander geschaltet wären. Read Latch
gesperrt
interner Bus Write Latch
Read Pin
D Port CLK Latch
Q /Q
freigegeben
Abb. 3.3 Datenweg: Zustand des Port-Pins lesen
Port Treiber
im Baustein
Port Pin
außerhalb
3 Aufbau von µ-Controllern der 8051-Familie
33
Port schreiben Wird der Port-Pin mit Daten vom internen Bus beschrieben, muss das Datum am D-Eingang des Port-Latches anliegen und gleichzeitig eine steigende Flanke am Signal Write-Latch erfolgen. In vielen Dokumentationen wird immer von einem Latch gesprochen, dann aber ein Clock eingezeichnet. Es geht aus keiner Dokumentation hervor, ob es sich um ein Latch oder ein D-Flip-Flop handelt. Read Latch
gesperrt
interner Bus
D Port CLK Latch
Write Latch
Read Pin
Q /Q
gesperrt
Port Treiber
im Baustein
Port Pin
außerhalb
Abb. 3.4 Datenweg: Pin beschreiben mit Speichern
Port-Latch lesen Will man den Zustand des Port-Latches herausfinden, kann dieser durch Freigabe des Datenpfades vom Ausgang des Latches auf den internen Bus gelegt werden. Deshalb muss der Latch-Treiber durchgeschaltet werden. Infolge des allgemeinen Aufbaus der Ports mit einem D-Flip-Flop und den Tri-State-Gattern können alle Grundfunktionen realisiert werden. Dieser allgemeine Aufbau der Ports ergibt die große Anzahl von Nutzungsmöglichkeiten des µ-Controllers. Bei µ-Prozessoren gibt es keine solchen allgemein verwendbaren Ports. Für die Anbindung von Prozessoren an den Systembus müssen normalerweise zusätzliche Treiberbausteine mit entsprechend hohen Ausgangsströmen verwendet werden. Read Latch
freigegeben
interner Bus
D Port CLK Latch
Write Latch
Read Pin
gesperrt
Abb. 3.5 Zustand des Port-Latches lesen
Q /Q
Port Treiber
im Baustein
Port Pin
außerhalb
34
Port-Treiber Ports sind sowohl Eingänge als auch Ausgänge. Diese beiden Funktionen können hervorragend mit einem FET gelöst werden. Der Port-Pin liegt einerseits am FET und andererseits über einem Tri-State-Gatter - Read-Pin - am internen Bus. Die Steuerung des FET's erfolgt durch den /Q Ausgang des Port-Latches. Der eingezeichnete Widerstand von ca. 50kΩ ist als FET realisiert und variiert sehr stark. Je nach Zustand des Ports schwankt der Wert erheblich. Je nach verwendetem µ-Controller-Typ, beispielsweise NMOS oder C-MOS, unterscheiden sich die Werte ebenfalls. Ein exaktes Vorgehen setzt den Blick ins Datenblatt voraus. V CC
Read Latch
ca. 50kΩ interner Bus
Q
D
Write Latch
CLK
Port Latch
Port Pin
/Q
n 1
VDD Read Pin
außerhalb
im Baustein
Abb. 3.6 Aufbau des Treiberbausteins Port 1 bis 5
Die Funktion der FET's im Controller FET ist die Abkürzung für Feldeffekttransistor. Wie der Name sagt, wird dieser Transistor mit dem elektrischen Feld, d.h. leistungslos gesteuert. Das Gate (= Gatter) ist die Steuerelektrode. Mit ihm lässt sich der Widerstand zwischen Drain (= Senke) und Source (= Quelle) steuern (Fall A). Liegt am Gate ein HIGH=1 (Transistor leitend, Widerstand klein), so erhält der Ausgang ein LOW=0 (Fall B). Entsprechend umgekehrt im Fall C. +5V
0
Ausgang Eingang
D
G
S 0V
A
+5V
+5V
1 0
1 0V
0V
B
C
Abb. 3.7 Funktionsweise der FET's im Controller
3 Aufbau von µ-Controllern der 8051-Familie
3.2.1
35
Port 0
Fan-Out bedeutet, dass der Baustein bis zu 8 LS-Eingänge ansteuert. Port O ist ein bidirektionaler 8-Bit Open-Drain-Ein-, Ausgang. 1. Fall: Datum 0 am Adressenausgang MUX ist auf die Address-Data-Leitung geschaltet. Es liegt als AdressDatum ein 0 vor. Control liegt auf 1. Am Ausgang des Und-Gliedes liegt daher eine 0. Der obere FET sperrt und die 5V-Spannung wird nicht durchgeschaltet. Infolge der Verneinung vor dem MUX erscheint eine 1 am unteren FET. Dieser leitet und schaltet den 0-Pegel auf den Ausgang. Address Data
0
Read Latch
VCC
Control
1 0 sperrt
&
interner Bus Write Latch
Q
D CLK
Port
1
Latch /Q
1
P0.x Pin
leitend
0
n 1
MUX
V DD Read Pin
im Baustein
außerhalb
Abb. 3.8 Port 0 als Adressausgang mit 0-Pegel am Ausgang
2. Fall: Datum 1 am Adressenausgang MUX ist auf die Address-Data-Leitung geschaltet. Als Adress-Datum liegt eine 1 vor. Control liegt auf 1. Am Ausgang des Und-Gliedes liegt daher eine 1. Folglich leitet der obere FET und die 5V-Spannung wird durchgeschaltet. Infolge der Verneinung vor dem MUX erscheint eine 0 am unteren FET. Hierdurch wird dieser sperren. Der Pegel 1 erscheint am Ausgang. Das "x" bei P0.x Pin steht für die Zahlen 0 bis 7. Address Data Control
1
Read Latch
interner Bus Write Latch
VCC
1 &
Q
D
CLK
1 leitend
Port Latch /Q
0
0 sperrt MUX
P0.x Pin
1
n 1 V DD
Read Pin
im Baustein
Abb. 3.9 Port 0 als Adressausgang mit 1-Pegel am Ausgang
außerhalb
36
3. Fall: Datum 0 am Datenausgang MUX ist auf den Ausgang des Port- Latches geschaltet. Es liege auf dem internen Bus eine 0 vor. Control liegt auf 0. Am Ausgang des UndGliedes liegt daher eine 0. Somit sperrt der obere FET. Die 0 vom internen Bus gelangt über den /Q-Ausgang als 1 zum Gate des unteren FET's. Dieser wird leitend. Der 0-Pegel erscheint am Ausgang des P0.x Pins. Address Data
X
Read Latch
interner Bus
V CC
Control
0 &
0
0
Write Latch
Q
D CLK
0 sperrt
X
Port Latch
/Q
1
P0.x Pin
leitend
0
n1
MUX
VDD Read Pin
im Baustein
außerhalb
Abb. 3.10 Port 0 als Datenausgang mit 0-Pegel
4. Fall: Datum 1 am Datenausgang MUX ist auf den Ausgang des Port- Latches geschaltet. Es liegt auf dem internen Bus eine 1 vor. Control liegt auf 0. Am Ausgang des Und-Gliedes liegt daher eine 0. Folglich sperrt der obere FET. Die 1 vom internen Bus gelangt über den /Q-Ausgang des Port Latch als 0 zum Gate des unteren FET. Dieser sperrt ebenfalls. Hierdurch floatet das Ausgangssignal an Port 0. Also muss man zwei Betriebsarten unterscheiden. Wird der Port nicht als generelles I/O-Port verwendet, reicht infolge der internen Pull-upWiderstände das "Float“-Signal für den Anschluss von 8 LS TTLBausteinen aus. Für den Betrieb als allgemeiner I/O Ausgang müssen externe Pull-upWiderstände verwendet werden. Address Data
x
Read Latch
interner Bus Write Latch
VCC
Control
0 &
1
1
D Port CLK Latch
0 sperrt
Q
x /Q
0 sperrt MUX
P0.x Pin n1
1
float
V DD
Read Pin
im Baustein
Abb. 3.11 Port 0 als Datenausgang mit 1-Pegel am Ausgang
außerhalb
3 Aufbau von µ-Controllern der 8051-Familie
3.2.2 •
37
Port 1 Fan-Out 4 LS TTL
Port 1 ist ein bidirektionaler 8-Bit Ein-, Ausgangsport mit internem Pull-up-Widerstand. Dieser Port ist allgemein verwendbar zum Ansteuern oder Einlesen von Schaltern bzw. anderen Baugruppen. VCC
Read Latch
ca. 50 K Ω interner Bus Write Latch
Q
D CLK
Port Latch
P1.x Pin
/Q
n
1
V DD Read Pin
im Baustein
außerhalb
Abb. 3.12 Port 1 als bidirektionaler Port mit internem Pull-up Widerstand
3.2.3 •
Port 2
Fan-Out 4 LS TTL
Port 2 ist ein bidirektionaler 8-Bit Ein-, Ausgangsport mit internem Pull-up-Widerstand. In der anderen Betriebsart werden die oberen 8-Bit für die Adressierung von externen Speicherbausteinen ausgegeben. VCC
Address Data Control
Read Latch
MUX interner Bus Write Latch
Q
D CLK
P2.x Pin
Port Latch /Q
n1 V DD
Read Pin
im Baustein
außerhalb
Abb. 3.13 Port 2 als bidirektionaler Port mit internem Pull-up-Widerstand
38
3.2.4 •
Port 3 Fan-Out 4 LS TTL Alternate Output Function
Read Latch
1
VCC Control
MUX
interner Bus Write Latch
D
Port CLK Latch
P3.x Pin
Q &
/Q
VDD
Read Pin
im Baustein
Alternate Input Function
außerhalb
Abb. 3.14 Port 3 als bidirektionaler Port mit Alternate Functions
Port 3 ist ein bidirektionaler 8-Bit Ein-, Ausgangsport mit internem Pull-up Widerstand. In der zweiten Betriebsart können verschiedene spezielle Funktionen mit den Ausgängen realisiert werden. Diese werden auch als Alternate Functions bezeichnet. Hierzu können Sie nochmals Bild 3.1 ansehen. Dort erkennen Sie die zusätzlichen Funktionen. Diese werden in der Tabelle für alternative Funktionen an Port 3 aufgeführt. Tabelle 3.2 Alternative Funktionen an Port 3 Port Pin P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
Bezeichnung RxD TxD /INT0 /INT1 T0 T1 /WR /RD
Ein-, Ausgang Eingang Ausgang Eingang Eingang Eingang Eingang Ausgang Ausgang
Alternative Funktionen serieller Empfang serielles Senden Interrupt 0 Interrupt 1 Timer 0 Timer 1 externes Schreibsignal externes Lesesignal
Der interne Aufbau von Port 3 unterscheidet sich vom prinzipiellen Aufbau der anderen Ports durch seine zusätzlichen alternativen Funktionen. Um die alternative Funktion zu aktivieren, muss das Gate zwischen dem Latch und dem Treiberteil geöffnet sein. Dies bedeutet, dass das korrespondierende Bit im SFR Special Function Register eine 1 enthalten muss. Ist Alternate Function = 0, können auch die Daten vom Port-Latch nicht durchgeschaltet werden. Nach dem verfeinerten Blockschaltbild kommt das Signal über den Alternate Function-Anschluss.
3 Aufbau von µ-Controllern der 8051-Familie
3.3
39
Blockdiagramm 8051 - 8051A Counters
Frequency Reference
Oscillator & Timing
4096 Byte Program Memory 8051A only
128 Byte Data Memory
Two 16-Bit Timer/Event Counters
8051 CPU
64 KByte Bus Expander
Programmable I/O
Control
Programmable Serial port Full duplex UART Synchronous Shifter
Interrupts
Interrupts
Parallel Ports Adress Data Bus
Serial IN
Serial OUT
and I/O Pins
Abb. 3.15 Blockdiagramm des 8051 - 8051 A
Oscillator & Timing In diesem Teil wird der Grundtakt, von dem alle anderen Signale abgeleitet werden, erzeugt. Die interne Clock-Frequenz beträgt die Hälfte der Oszillatorfrequenz. Diese internen Signale definieren die Phasen, die internen Zustände und die Maschinenzyklen. 4096 Byte Program Memory 8051A only 4096 Byte Programmspeicher sind nur im 8051A enthalten. Die Programmierung dieser Speicher erfolgt beim Hersteller. 128 Byte Data Memory 128 Byte Datenspeicher sind im 8051 enthalten. Dieser Speicher wird durch den internen Datenbus angesprochen. Two 16-Bit Timer/Event Counters Zwei 16-Bit breite Zeitzähler oder Ereigniszähler sind in diesem Teil realisiert. Die beiden Zähler werden durch die Eingänge T0 und T1 angesteuert.
40
Programmable Serial Port Full Duplex UART Synchronous Shifter Dieser Teil ist ein programmierbarer, serieller Port mit vollduplex Universal Asynchronous Receiver Transmitter. Der universelle, vollduplex asynchron arbeitende Empfänger und Sender hat auch einen synchron arbeitenden Shifter. Programmable I/O - Parallel Ports - Adress Data Bus and I/O Pins Die programmierbaren, parallelen Ports stellen die bereits besprochenen Schnittstellen zur Umgebung des Bausteins dar. 64 KByte Bus Expander Control Dieser Teil erzeugt die für das Ansprechen von externem Speicher notwendigen Kontrollsignale. 8051 CPU Der wichtigste Teil des Controllers ist die CPU Central Processing Unit, die Zentraleinheit. Hier werden die Instruktionen ausgeführt. Die Interrupts (= Unterbrechungen) in der Programmabarbeitung können von internen Systemteilen oder von externer Peripherie erzeugt werden. Bestandteil der CPU ist in dieser Darstellung auch das Leitwerk, wie es im klassischen Digitalrechner bezeichnet wird. Das Leitwerk übernimmt die Schaltabfolge, wie sie im Blockbild für einfache Datenübergabe von System 1 zu System 2 in Kapitel 2 gezeigt wurde. Befehle werden im Befehlsdecoder interpretiert. Weitere wichtige Bestandteile der CPU sind der Akkumulator, die arithmetische logische Einheit, das Programm Statuswort und die zusätzlichen Hilfsregister. Das verfeinerte Blockschaltbild für den 8051-Kern zeigt Abbildung 3.16. Die im Bild verwendeten Abkürzungen finden Sie in der Tabelle 3.3. Drei zusätzliche periphere Einheiten - Unterbrechungs-Steuerung, Serielles Port, Zähler/Zeitgebersteuerung - sind im Kern des 8051-Controllers integriert. Die einzelnen Register dieser Einheiten sind jeweils 8 Bit breit. Bei einer Breite von 16 Bit in der Timer-Einheit werden jeweils zwei 8-BitRegister zusammengefasst. Hervorgehoben mit etwas dickeren Strichen ist rechts oben im verfeinerten Blockdiagramm des 8051 - 8051A der Adressbus. Die oberen 8 Bit des Adressbusses gehen zu Port 2 und die unteren 8 Bit zu Port 0. An beiden Ports ist gleichzeitig der Datenbus angeschlossen. Zwischen diesen beiden Bussen muss multiplext werden. Wie dies realisiert wird, ist bereits in Bild 3.11 und 3.13 gezeigt, wo der innere Teil der Ports untersucht wird.
3 Aufbau von µ-Controllern der 8051-Familie
41
4Kx8 RAM Adressen Dekodierer
Akkumulator
128x8
RAM-Adressen Dekodierer
ROM
RAM
Temporäres
Programm
Register
Statuswort
PCH
DPH
PCL
DPL
Befehlsdecoder
B-Register
Stack Pointer
Port 2
IE IP Unterbrechungs-
Port 0
Steuerung Arithmetisch SCON
logische
SBUF(Senden) Temporäres
Einheit
SBUF(Empfang)
Register
Serielles Port Port 1 Steuersignale TCON TMOD TL0 Oszillator
Steuerlogik
TH0 TL1 TH1
XTAL1
XTAL2
/EA
ALE
/PSEN
RST
Zähler/Zeitgeb.
VPD
Steuerung Statuswort
Port 3
Abb. 3.16 Verfeinertes Blockdiagramm des 8051 - 8051 A Tabelle 3.3 Verwendete Abkürzungen im verfeinerten Blockbild des 8051 Abkürzung Bedeutung engl. RAM Random Access Memory ROM Read Only Memory PCH Program Counter High Byte PCL Program Counter Low Byte DPH Data Pointer High Byte DPL
Data Pointer Low Byte
IE IP SCON
Interrupt Enable Interrupt Priority Serial Control
SBUF SBUF TCON TMOD TL0, TH0
Serial Buffer Serial Buffer Timer Control Timer Mode Timer 0 Low Byte, Timer 0 High Byte TL1, TH1 Timer 1 Low Byte, Timer 1 High Byte
Erklärung Schreib- und Lesespeicher Nur-Lesespeicher Programmzähler höherwertiges Byte Programmzähler niederwertiges Byte Adresszeiger auf externen Datenspeicher höherwertiges Byte Adresszeiger auf externen Datenspeicher niederwertiges Byte Register für Unterbrechungsfreigabe Register für Unterbrechungspriorität Register für Einstellungen des seriellen Interface Speicher für Senden Speicher für Empfangen Zeitgeber Kontrolle Register für Zeitgebereinstellungen Low Byte, High Byte von Zeitgeber 0 Low Byte, High Byte von Zeitgeber 1
42 Abkürzung Bedeutung engl. /EA External Address ALE
Address Latch Enable
/PSEN Program Storage Enable RST / VPD Reset / Stand By Power
Erklärung Bei Low-Pegel wird auf die externen Adressen zugegriffen Übernahme der zeitgemultiplexten Adressen Zugriff auf externen Programmspeicher Rücksetzen des Prozessors / Sparbetrieb
An Port 3 sind der interne Datenbus und 4 x 2 Leitungen der internen Zusatzeinheiten mit alternativen Funktionen angeschlossen. Es ist nicht ganz korrekt, bei dem internen Bus nur vom Datenbus zu sprechen, da in diesem Bus auch Kontrollsignale wie Schreiben und Lesen in die Ports vorhanden sind. Wir können daher auch vom Systembus sprechen. Zum Systembus gehören aber ebenso die Adressleitungen, die in diesem Blockbild extra gezeichnet sind. Am Port 3 befinden sich die Leitungen für die alternativen Funktionen. Jede Leitung stellt eigentlich zwei Leitungen dar. Die Tabelle der alternativen Anschlüsse an Port 3 sei nochmals aufgeführt. Von Port 3 führen zwei Leitungen RxD und TxD zum seriellen Port. Zwei Leitungen /INT0 und /INT1 führen zur Unterbrechungssteuerung. Zwei Leitungen T0 und T1 sind mit den beiden Zeitgebern verbunden, und die beiden Low-aktiven Lese- und Schreibsignale /RD, /WR sind mit der Steuerlogik verbunden. Tabelle 3.4 Port 3 Alternative Funktionen Pin RxD TxD /INT0 /INT1
Bedeutung serieller Empfang serielles Senden Interrupt 0 Interrupt 1
Pin T0 T1 /WR /RD
Bedeutung Timer 0 Timer 1 externes Schreibsignal externes Lesesignal
3.4
Aufbau des klassischen Digitalrechners
Ein Digitalrechner lässt sich in die folgenden Blöcke unterteilen: Speicher Für die Speicherung von Daten und Befehlen bzw. Befehlsfolgen. Leitwerk Die Steuerung des Datenverkehrs zwischen Registern und Speichern. Rechenwerk Für die Ausführung von logischen und arithmetischen Operationen. Eingabeeinheit Für die Eingabe von externen Daten und auch Befehlen. Ausgabeeinheit
3 Aufbau von µ-Controllern der 8051-Familie
Für die Ausgabe von Daten und Befehlen. Eingabeeinheit
-
-
-
-
-
-
43
-
Ausgabeeinheit
Rechenwerk
Leitwerk
Speicher
Abb. 3.17 Klassischer Aufbau eines Digitalrechners
4Kx8 RAM Adressen Dekodierer
Akkumulator
Temporäres Register
128x8 RAM
ROM
RAM-Adres. Dekodierer PCH DPH PCL DPL
Programm Statuswort
B-Register
Befehlsdecoder
Stack Pointer
Port 2
IE IP Unterbrech.Steuerung
Port 0
Arithmet. SCON
logische
SBUF(Senden)
Temporäres Register
Einheit
SBUF(Empfang)
Serielles Port
Port 1
Steuersignale TCON TMOD TL0 TH0
Steuerlogik
Oszillator
TL1 TH1 XTAL1
XTAL2
Leitwerk
/EA
ALE
/PSEN RST VPD
Eingabeeinheit /
Zähler/ Zeitgeber Statuswort
Port 3
Ausgabeeinheit
Rechenwerk Speicher
Peripherie
Abb. 3.18 Verfeinertes Blockdiagramm des 8051 mit Zuordnungen zu den Einheiten eines Digitalrechners
44
Die Ports sind als Eingabe- und Ausgabeeinheiten realisiert. Die Peripherieeinheiten sind bei µ-Prozessoren nicht Bestandteil des Chips. Genau hier liegt der Unterschied zwischen einem µ-Prozessor und einem µController. Bestimmte periphere Bausteine wie Interruptcontroller, serielle Schnittstelle und Zähler/Zeitgeber sind bereits im Chip des µ-Controllers integriert. Beim klassischen IBM-AT Rechner mit 80x86 µ-Prozessoren sind diese Bausteine jeweils als einzelner Chip aufgebaut. Diese Integration von Peripherie in einen Chip wird aber in Zukunft nicht nur bei µ-Controllern vorkommen, sondern ist in der gesamten Chipentwicklung zu beobachten. So gibt es bereits vollständige IBM-ATRechner auf einem Chip. Lediglich die Speichereinheiten sind noch als einzelne Chips realisiert. Mehrere Speicherbausteine werden auch auf einem SIMM-Modul (Single Inline Memory Modul) zusammengefasst. Das Modul besteht meistens aus acht oder neun Speicherbausteinen auf einer kleinen Platine. Diese Platine hat auf der einen Seite Anschlüsse, die bei der Montage in einem Schnappverschluss mit Stiften kontaktiert werden. Übliche Speichergrößen sind als sogenannte Streifen in den Größen 1,2,4,8,16 bis zu 8 GByte erhältlich. Einen weiteren Unterschied zwischen µ-Prozessor und µ-Controller bilden die Ports. Die flexible Struktur der Ports, nämlich die Nutzung sowohl als Ausgänge als auch als Eingänge, ist nur beim µ-Controller vorhanden. Beim Vergleich mit dem klassischen Aufbau eines Digitalrechners könnte man die Ports als Bestandteil des Chips ansehen und damit nicht zu den Eingabe- und Ausgabeeinheiten zählen. Diese Zuordnung ist abhängig davon, wo die Systemgrenzen definiert werden. Beim klassischen Digitalrechner waren die Eingabeeinheiten meist Lochkartenleser oder auch Lochstreifenleser. Die Ausgabeeinheit war ähnlich einer elektrischen Schreibmaschine oder wie ein Terminal aufgebaut. Die Zeit des klassischen Digitalrechners dauerte bis 1974. Zu dieser Zeit kamen die ersten µComputer auf den Markt. Die 8080 µ-Prozessoren wurden im Dezember 1973 erstmalig bemustert. Die ersten 8051 µ-Controller kamen als Nachfolger des 8048 (1976) 1980 auf den Markt. Dieser µ-Controller besteht also in seiner Grundstruktur vierzehn Jahre. Die weite Verbreitung und die in neuerer Zeit hinzugekommenen Anwendungen bieten somit die Sicherheit, durch Auswahl dieses Controllers eine solide Grundlagenausbildung zu gewährleisten. Die hierbei aufgezeigten Grundprinzipien werden bei allen zukünftigen µ-Computern ebenfalls zutreffen. Die Beschränkung auf einen 8-Bit-Controller gewährleistet eine bessere Übersicht und geringere Komplexität des Stoffes im Vergleich zu 16-Bit- oder 32-Bit-Prozessoren mit der entsprechenden Peripherie. Alle Grundprinzipien der µComputertechnik lassen sich ohne zu starke Vereinfachung anhand der µController studieren.
3 Aufbau von µ-Controllern der 8051-Familie
3.5
45
Blockdiagramm 80C515/C535
Der 80C515 enthält einen 8-KByte großen, programmierbaren ROMSpeicher. Die Version ohne internen ROM-Speicher wurde mit dem 80C535 µ-Controller realisiert. Der Kern der beiden Controller entspricht dem 8051 µ-Controller. Die wesentlichen Erweiterungen sind: Interrupt System Sieben Ports
ROM RAM 80C51 Kern Watchdog Timer
Timer 2 mit PWM A/D Wandler
Abb. 3.19 80C515 Erweiterungen
• • • • •
8 KByte On-Chip ROM (nur 80C515) und 256 Byte On-Chip RAM 16-Bit Timer 2 mit PWM (Pulsweitenmodulation) 8-Bit A/D-Wandler 16-Bit Watchdog Timer Interrupts 7 externe / 5 interne mit 4 Prioritätsebenen Die Oszillatorfrequenz kann von 0,5 bis 16 MHz variieren. Alle Befehle des 8051- Kerns werden im 80515 µ-Controller ausgeführt. 64 von 111 Befehlen benötigen lediglich einen Zyklus. Ein auf dem Chip integrierter A/D-Wandler. Ein Multiplexer für 8 Kanäle und ein Sample & Hold (Abtast-, Halteglied) ermöglichen Abtastraten von 15 µs. Die unterschiedlichen Interruptebenen ermöglichen eine große Flexibilität.
Bild 3.20 80C515 / 80C535 Blockdiagramm (weis – 8051)
46
3.6
Adressbereiche 8051
Nachdem die wesentlichen Blöcke des 8051 und 80535 behandelt wurden, können Sie jetzt zu der Platine EURO_535 zurückkehren. Lassen Sie sich nicht verwirren, wenn ein Derivat des 8051 auf dieser Platine zum Einsatz kommt. Alle Bestandteile des 8051 sind in diesem Derivat enthalten. Bisher wurde der interne Adressbereich des 8051 studiert. Da Programm und Datenumfang von der Anwendung abhängig sind, kann der Speicherbedarf für µ-Controller sehr groß werden. Deshalb hat die Firma Intel einen externen Speicher vorgesehen. Der gesamte, einem 8051 Prozessor zur Verfügung stehende Adressbereich, kann in folgende Adressbereiche aufgeteilt werden: Adressbereiche
Datenspeicher
Programmspeicher intern /EA=1 und Adresse tACC TLLIV > tCE TPLIV > tOE TPXIZ > tDF
Speicherzugriffszeit Chipauswahl Daten auf Datenbus Datenbus freigeben
Die erste Bedingung legt fest, dass die Speicherzugriffszeit tACC ( time access ) kleiner sein muss als die Zeit, die zwischen Adressausgabe vom Prozessor und Einlesen der Instruktion vom Prozessor TAVIV (Adress valid to instruction in) vergeht. Bei einem 16K-Eprom werden 14 Adressleitungen benötigt. Durch die gemultiplexten Adress- und Datenleitungen wird ein zusätzlicher Baustein für zeitliches Demultiplexen benötigt. Dieser geht dann in die Timingberechnung ein. Die Durchlaufzeit bei Baustein 74HCT573 muss also noch von der TAVIV-Zeit subtrahiert werden. Verwendet man den Motorola-Baustein 74HC573 beträgt die maximale Zeit bei tACC 302ns − 44ns > 250ns
3 Aufbau von µ-Controllern der 8051-Familie
53
Es besteht also eine Reserve von 8 ns bei der Karte für diese Bedingung. Die zweite Bedingung für die Zeit tCE legt fest: Die Daten müssen nach der Zeit TLLIV auf dem Datenbus gültig sein. Das EPROM muss nach dieser Zeit die Daten auf den Bus gelegt haben.
TLLIV > tCE 233ns > 250ns Hier erkennen Sie, dass diese Zeit bei der obigen Schaltung nicht eingehalten wird! Trotzdem funktioniert ein Board mit solchen Bausteinen oft zuverlässig in normaler Umgebungstemperatur bzw. bei einem Los bestimmter Chips. Bei entsprechenden Umgebungsbedingungen ist aber dieses Board nicht zuverlässig. Ist ein solcher Fehler bei einer Produkthaftungsfrage nachweisbar, kann dies empfindliche Folgen nach sich ziehen. Bitte führen Sie immer Timingberechnungen durch! Spezifizieren Sie die Einsatz-Temperatur! Spezifizieren Sie den Prozessor-Takt! Die nächste Bedingung ist: Maximale Zeitdauer von der /PSEN-Ausgabe bis zur gültigen Instruktion auf dem Bus.
TPLIV > TOE
150ns > 100ns Die letzte Bedingung lautet: Die Instruktion aus dem EPROM muss nach einer maximalen Zeitdauer vom Bus genommen werden und in einen undefinierten Zustand DF (Data float) übergehen.
TPXIZ > tDF 63ns > 30 ns
Jetzt werden die Zeiten der EURO_535-Karte beim Zugriff auf das EPROM untersucht. Hierzu muss der Pfad beziehungsweise die Zeitbedingungen für das tCE-Signal des EPROMs genauer studiert werden. Zuvor sei jedoch eine Besonderheit der EURO_535-Karte erklärt. Infolge dieses Schaltungsteils kann diese Karte sehr universell eingesetzt werden. Durch Vertauschen der beiden Speicherbausteine EPROM und RAM können beliebige Programme auf die Karte heruntergeladen werden.
54 Vor Adreßspiegelung 0000H
Nach Adreßspiegelung 0000H RAM
ROM bzw. EPROM 7FFFH 8000H
7FFFH 8000H ROM bzw. EPROM
RAM
FFFFH
FFFFH
Abb. 3.32 Vor und nach der Adressspiegelung
Wenn Sie einen µ-Controller einschalten, beginnt der Programmzähler immer bei 0. Hier muss also der erste auszuführende Befehl stehen. Bei der EURO_ 80535-Karte steht im EPROM als erste Anweisung ein Befehl, der auf die Adresse 8000h zugreift. Hierdurch wird eine besondere Adressumschaltung ausgelöst. Nach dem Einschalten oder nach einem Reset ist folgender schaltungstechnischer Zustand auf der Karte gegeben:
Abb. 3.33 Zustand nach dem Einschalten oder Reset
Nach einem Reset wird das Flip-Flop am Q-Ausgang eine "0" zeigen. Die Adressleitung A15 besitzt ebenfalls einen Low-Pegel. Damit liegt an /CE des EPROMs eine "0". Wird das EPROM auch mit einem 0-Pegel an /OE beschaltet, werden Daten auf den Datenbus gelegt. Auf der Speicherstelle 0 wird der erste Befehl vom Prozessor gelesen. Bei unserem EPROM steht dort ein Sprung nach Speicherstelle 8000h. Damit wird A15 auf High-Pegel gesetzt. Es gilt das nächste Bild.
3 Aufbau von µ-Controllern der 8051-Familie
55
Abb. 3.34 Zustand bei Zugriff auf Adresse > 8000H
Am /PSEN-Signal wird durch den Prozessor ein 0-Pegel bei externem Programmspeicherzugriff erzeugt. Damit entsteht eine steigende Flanke am NOR-Glied. Da am Dateneingang des Flip-Flops eine "1" ansteht, wird Q auf "1" geschaltet. Der 1-Pegel erscheint somit auch am Eingang des NOR-Gatters und bewirkt am Ausgang einen 0-Pegel. Deshalb entsteht ein Impuls am Clock-Eingang des Flip-Flops und verriegelt damit das /PSENSignal am NOR-Eingang. Die Breite des Impulses errechnet sich aus den Durchlaufzeiten des Flip-Flops und des NOR-Gatters. Am /CE des EPROMs liegt wiederum ein 0-Pegel an. Dies ist eine sehr umständliche Beschreibungsform. Am Timing erkennen Sie den Vorgang besser. D=A15 /PSEN Q=NORE CLK=NORA /Q /CE ROM /CE RAM
Abb. 3.35 Funktionsweise - Timing für Adressumschaltung (nicht zeitgetreu)
Was ist das Ergebnis dieser Adress-Spiegelung? Beim Einschalten des Prozessorboards wird das EPROM im unteren Adressbereich 0h-7FFFh angesprochen. Nach dem Umschalten wird das EPROM im oberen Adressbereich 8000h-FFFFh angesprochen. Der RAM-
56
Speicher liegt danach von 0000H bis 7FFFH. Programme und Daten können in diesen Speicherbereich der EURO_535 vom PC geladen werden. Jetzt muss das Timing für den Fall der Adressumschaltung überprüft werden. Daraus ergeben sich die Werte für das EPROM. Die kritische Zeit ist sicherlich das /CE ( Chip enable ) für das EPROM. Das /PSEN-Signal gelangt durch das NOR-Gatter U5A, das Flip-Flop U4A und das ExklusivOder an den /CE-Eingang des EPROMs. Es gilt:
TPLIV − TNOR − TCLKQ − TEXCL > TCE 150ns − 10ns − 10ns − 10ns > 250ns
Bemerkung: Die Durchlaufzeiten durch die Gatter müssen unbedingt für den eingesetzten Baustein im Datenbuch überprüft werden. Ebenso müssen die Einsatzbedingungen, z.B. der Temperaturbereich, geklärt sein. Bei einem Prozessortakt von 12 MHz wird die Schaltung, mit einer Zugriffszeit von tACC=250ns auf das EPROM, nicht zuverlässig funktionieren. Im Datenbuch zum 80C535-Prozessor ist für TPLIV bei variablem Takt noch die Angabe TPLIV=3*tCLCL-100 ns gegeben. Hierbei beträgt der Prozessortakt 1/tCLCL. Sie können also den Takt bei der Schaltung entsprechend herabsetzen, um trotzdem das EPROM verwenden zu können. Es gilt die Gleichung:
TPLIV − TNOR − TCLKQ − TEXCL > TCE
(3 * tCLCL − 100ns) − 10ns − 10ns − 10ns > 250ns 3 * tCLCL > 380ns 380ns tCLCL > 3 7,8MHz > Takt Dies ist ein sehr unbefriedigendes Ergebnis, das aber aus Kostengründen in Kauf genommen wird. Das /PSEN Signal wird bei der Schaltung auch auf den /OE-Eingang des EPROMs geführt. Damit gilt bei 12 MHz Takt und somit auch bei 7,8 MHz Takt:
TPLIV > TOE
150ns > 100ns
Die letzte Bedingung lautet: Die Datenleitungen für die Instruktion müssen nach einer maximalen Zeitdauer in undefinierten Zustand DF (Data float) übergehen.
TPXIZ > tDF 63ns > 30ns
3 Aufbau von µ-Controllern der 8051-Familie
3.7.2
57
Timingberechnung 32K-RAM am 80C535 Port 0
74HCT573
Low-Byte-Adresse / Datum ALE
50
AdressLatch 11
Low-Byte-Adresse
RAM
LE
Port 2 High-Byte-Adresse
62256A-10L 20
80535
27 22
Port 3 /WR /RD
/CS /WE /OE
27 28
Abb. 3.36 Blockbild für Timingberechnungen am RAM
Die Signalbezeichnung /WE (Write Enable) am RAM-Baustein ist gleichbedeutend mit R/W (Read/Write). Das Write-Signal spricht bei LowPegel an. Bei einem 32K-RAM werden 15 Adressleitungen benötigt. Durch die gemultiplexten Adress- und Datenleitungen wird ein zusätzlicher Baustein zum Demultiplexen gebraucht. Dieser geht dann in die Timingberechnung mit ein. t WHLH ALE
PSEN t t LLWL
LLDV
t
RLRH
RD t RLDV t
AVLL t
Port 0
t RHDZ
LLAX2
A0-A7 from Ri or DPL t
t RHDX
t RLAZ Data IN
A0-A7 from PCL
Instr. IN
AVWL AVDV
Port2
P2.0-P2.7 or A8-A15 from DPH
A8 - A15 from PCH
Abb. 3.37 Signal-Zeit Diagramm für Datenspeicher lesen am 80C535
Die wichtigsten Zeiten für den Controller hierbei sind in Tabelle 3.7.
58 Tabelle 3.7 Wichtigste Timing-Werte für Controller 80C535 externer Datenspeicher lesen (Datenbuch Siemens 80C535) Symbol
Parameter
TAVDV TLLDV TRLDV TRHDZ
Adress to valid data in ALE to valid data in /RD to valid data in DATA float after /RD
min 12MHz
max 12MHz 585 517 252 97
Einheit ns ns ns ns
Die wichtigsten Zeiten für den RAM-Speicher hierbei sind: Tabelle 3.8 Wichtigste Timing-Werte für den RAM-Speicher 55257 AFL-10 (Baugleich mit 62256A-10L) sind (Datenbuch Toshiba MOS Memory) Symbol
Parameter
(tACC) (tCE) (tOE) (tOD)
Access time RAM /CE to Output Valid /OE To Output Valid Output in High-Z
min
max 62256A 100 100 50 50
Einheit ns ns ns ns
TAVDV - TPROP > tACC Speicherzugriffszeit Chipauswahl TLLDV > tCE >tOE Daten auf Datenbus TRLDV > tCE >tOE Datenbus freigeben´ TRHDZ > tDF Die jeweils längste Zeit der beiden Signale zur Chipauswahl und Freigabe des Ausgangs vom Speicher muss in diesem Fall angesetzt werden: 585ns - 44ns > 100ns Speicherzugriffszeit Chipauswahl 517ns > 100ns >50ns Daten auf Datenbus 252ns > 100ns>50ns 97 > 50ns Datenbus freigeben Die verwendeten Speicherbausteine sind beim Lesevorgang völlig unkritisch im Timing. 3.7.3
RAM-Berechnung für die EURO_535-Karte
Bei den folgenden Berechnungen wird von einer bereits erfolgten Adress-Spiegelung ausgegangen, da nach dem Einschalten der Karte als erstes ein Sprung auf eine Adresse oberhalb von 8000H durchgeführt wird. Eine Von-Neumann-Architektur wird, wie bereits gezeigt, durch ein logisches Und der beiden Signale /PSEN und /RD erzeugt. Das logische Und lässt sich mit drei NOR-Gattern realisieren.
3 Aufbau von µ-Controllern der 8051-Familie
59
Vcc J4 PSEN
3 > =
2 1
1 > =
RD
> =
1
OE RAM
1
Abb. 3.38 Schaltungsteil zur Erzeugung der Von-Neumann-Architektur
Die Schaltung arbeitet wie folgt: Der µ-Controller kann mit beiden Signalen auf das RAM zugreifen. Wenn das PSEN-Signal low wird, so werden gleichzeitig das RAM und das ROM angesprochen. Das höchste Bit A15 der Speicheradresse entscheidet, welcher Baustein angesprochen wird; es wird das Chip-SelectSignal verwendet. RD PSEN OE RAM
Fall 1
Fall 2
Abb. 3.39 Zustand bei Zugriff auf Adresse > 8000h
Für die Timingberechnung müssen wir die Durchlaufzeiten für /OE des RAM-Speichers durch die beiden Oder-Bausteine des 74LS02 Chips beachten. Weiterhin muss für das /CS des RAM-Speichers die Durchlaufzeit für A15 durch das Exklusiv-Oder berücksichtigt werden. Aufgabe Führen Sie die Timingberechnungen zum Lesen und Schreiben auf den RAM-Speicher der EURO_535 zur Übung durch. Das Timing für den Lesezugriff auf den Datenspeicher sieht folgendermaßen aus:
60 t WHLH ALE
PSEN t t LLWL
LLDV
t
RLRH
RD t RLDV t
AVLL t
Port 0
t RHDZ
LLAX2
A0-A7 from Ri or DPL t
t RHDX
t RLAZ
A0-A7 from PCL
Data IN
Instr. IN
AVWL AVDV
Port2
A8 - A15 from PCH
P2.0-P2.7 or A8-A15 from DPH
Abb. 3.40 Signal-Zeit-Diagramm für Datenspeicher lesen am 80C535 Tabelle 3.9 Wichtigste Timing-Werte für Controller 80C535 externer Datenspeicher schreiben ( Datenbuch Siemens 80C535 ) Symbol
Parameter
TAVWL TLLWL TQVWH TWHQX
Adress valid to /WR ALE to /WR or /RD Data setup before /WR Data hold after /WR
min 12MHz 200 288 13
max 12MHz 203 300
Einheit ns ns
Die wichtigsten Zeiten für den RAM-Speicher bei dieser Schaltung sind: Tabelle 3.10 Wichtigste Timing-Werte für den RAM-Speicher 55257 AFL-10 schreiben (Baugleich mit 62256A-10L) sind (Datenbuch Toshiba MOS Memory): Symbol
Parameter
min
(Tbc) (tCW) (tDS) (tDH)
Write Cycle Time Chip Selection to End of Write Data Set up Time Data Hold Time
100 90 40 0
max
Einheit
0
ns ns ns ns
4
Assembler für die 8051-Controller-Familie
Für die Ausführung eines Programms auf einem µ-Controller der 8051Familie muss das Programm in einer für den Prozessor ausführbaren Form vorliegen. Diese Form besteht aus einer Kombination von "1" und "0", welche mit dem Zustand "EIN" und "AUS" oder "HIGH" und "LOW" gleichgesetzt werden kann. Als gut handhabbar hat sich die Darstellung in Bytes gleichbedeutend mit 8 Bit herausgestellt. Diese 8 Bit lassen sich als Hexadezimalzahl mit je zwei Nibble darstellen.
Abb. 4.1 Zahlendarstellung Der Mensch denkt aber selten in Hexadezimalzahlen. Hier prallen also zwei Sprachen aufeinander. Eine Ausdrucksweise wie "Lade das Register mit dem Namen Akkumulator mit der Zahl 89" fördert das Verständnis für die Aktionen, die im µ-Controller durchgeführt werden. Würde man eine solche Ausdrucksweise wählen, ergäben sich sehr umfangreiche und damit unübersichtliche Programme. Deshalb haben die Ingenieure bei Intel einen leicht zu merkenden mnemotechnischen Code entwickelt. "Lade das Register mit dem Namen Akkumulator mit der Zahl 89" heißt verkürzt: mov A,#89
Abb. 4.2 Befehl für 8051
62
Mit ein bisschen Übung und der nebenstehenden Erklärung im Bild lässt sich dieser Befehl einfach anwenden und schnell schreiben. Der Prozessor im µ-Controller kann diesen Befehl jedoch noch nicht bearbeiten, da dieser nur eine 1-0-Kombination als Befehl ausführen kann. Folglich muss der erwähnte Befehl in eine 1-0-Kombination übersetzt werden. Bei der 8051Familie stehen hierfür die beiden Bitkombinationen in der Tabelle: Tabelle 4.1 Übersetzung des Codes in eine Hexadezimal
Bitkombination 0111 0100B 0101 1001B
Als Hexadezimalzahl 74H 59H
Mnemotechnischer Code mov A, #89
Die erste Bitkombination übersetzt den Befehl mov A. Die zweite Bitkombination - dezimal geschrieben "89" - ergibt in hexadezimaler Darstellung 59H. Genau diese Übersetzungsarbeit - vom mnemotechnischen Code in die hexadezimale Darstellungsart - leistet der Assembler. Andererseits bezeichnet man die einfach zu merkende Kurzschreibweise ebenfalls als Assembler. "To assemble" heißt übersetzt "zusammenfügen". Sie fügen ein Programm in Kurzschreibweise zusammen und übersetzen diese Kurzschreibweise mit Hilfe eines Programms in 1-0-Kombinationen. Sowohl die Kurzschreibweise der Befehle als auch das Programm zum Übersetzen bezeichnet man als Assembler. Für das Übersetzen können Sie den beiliegenden Intel Evaluation Assembler verwenden. Für die Erstellung von 8051-Software verwenden Sie am besten einen PC mit dem Betriebssystem MS-DOS 5.0 oder höher. Die beiliegende Software HISIM51 erlaubt das Austesten der Programme mit dem Simulator. Falls Sie die Hardware in Form der EURO_535 V2.0 erstanden haben, empfiehlt sich die Ausführung der Programme direkt auf der Hardware. Die nachfolgenden Ausführungen beziehen sich auf den 8051Prozessor. Wie bereits erwähnt, gibt es von diesem Prozessor bereits mehr als tausend Derivate. Werden Besonderheiten dieser Derivate programmiert, so wird dies ausdrücklich erwähnt. Aufgabe Eine Leuchtdiode soll mit einem Taster eingeschaltet und mit einem anderen Taster ausgeschaltet werden.
4 Assembler für die 8051-Controller-Familie 63
Lösung Für das erste, einfache Programm sind die Portausgänge P1.1, P1.2, P1.3, P3.2, P3.3 und P3.4 der EURO_535 V2.0 wie folgt beschaltet. Sind die DIP-Schalter, aufgrund ihrer Größe auch "Mäuseklavier" genannt, S2.1-S2.6 auf ON geschaltet, werden die Leuchtdioden und Taster mit den entsprechenden Ports verbunden. An Port 1.1, 1.2, 1.3 liegen die Taster 1 bis 3. An Port 3.2, 3.3, 3.4 sind Leuchtdioden angeschlossen. Alle Ports sind zusätzlich auf die VG-Leiste - eine 96-polige Anschlussleiste - geführt.
+5V 1,8k Ω
1,8k Ω
1,8k Ω
L1
L2
L3
VGC19
S2.1
VGA19
P3.3
P3.2 P1.1 VGC13
S2.2
VGC18
S2.3
P3.4
Prozessoranschlüsse P1.2 P1.3
S2.4 VGA14
S2.5
T1
T2
VGC14
S2.6
T3
Abb. 4.3 Beschaltung der Ports
Die gesamte Beschaltung der Ports mit Leuchtdioden und Schalter kann auf der Karte durch die DIP-Switches S2.1 - S2.6 abgeschaltet werden. Hierdurch stehen für Ihre eigenen Entwicklungen alle Ports zur Verfügung. Der Unterschied zur üblichen Softwareerstellung wird hier sehr deutlich. Eine Softwareerstellung für µ-Controller setzt ein intensives Studium der entsprechenden Hardware voraus. Andererseits ist von der Hardware eine entsprechende Dokumentation zu liefern.
64 Tabelle 4. 2 Dokumentation der Beschaltung
Port
Anschluss
Bemerkung
P1.1 P1.2
T1 T2
Taster 1 Taster 2
P1.3
T3
Taster 3
P3.2
L1
Leuchtdiode 1
P3.3
L2
Leuchtdiode 2
P3.4
L3
Leuchtdiode 3
Wenn Sie selbst Hardware und Software für eine Aufgabenstellung entwickeln, sollten Sie eine künstliche Schnittstelle zwischen Hardware und Software mit Hilfe der Dokumentation erzeugen. Sie arbeiten also in einem Fall für die Hardwareabteilung und im anderen Fall für die Softwareabteilung. Die Beschaltung kann für die Softwareabteilung beispielsweise von der Hardwareabteilung in Form einer Tabelle dokumentiert sein. Das Struktogramm, auch Ablaufdiagramm genannt, ist zu erstellen. Hiermit setzen Sie die formulierte Aufgabenstellung in eine für die Software geeignete Beschreibungsform um. Dieser Schritt ist besonders wichtig. Er entspricht beim Klavier spielen dem Eintrag des Fingersatzes in das Notensystem. Einfache Stücke können Sie ohne Fingersatzeintrag spielen, aber spätestens beim „Hummelflug“ von Rimski Korssakow haben Sie Knoten in den Fingern. Bitte nehmen Sie diesen Tipp sehr ernst. Insbesondere wenn Sie größere Softwareprojekte bearbeiten müssen, sollten Sie die Dokumentation der wesentlichen Programmteile und damit die Struktur für andere Nutzer verständlich machen. Das bedeutet in der Konsequenz, dass Sie für die Dokumentation eine allgemein anerkannte Form wählen. Diese Form kann beispielsweise das Struktogramm nach DIN 66261 sein. Für objektorientierte Programmkonzepte sind Struktogramme dagegen ungeeignet. Eine Form der Programm-Entwicklung und Programm-Dokumentation ist die PDL – Program Design Language. In Worten beschreiben Sie zunächst: „WAS wird gemacht“. Dies entspricht praktisch den Kommentaren in den nachfolgenden Assembler-Programmen. Darauf folgt die Umsetzung in einer beliebigen Sprache. So können Sie beispielsweise als Ziel-
4 Assembler für die 8051-Controller-Familie 65
sprache Assembler oder auch C verwenden. Für ein erstes Programm wählen wir zur Veranschaulichung das Struktogramm. Falls Sie die Symbole für Programmablaufpläne nicht parat haben, finden Sie diese auf der nächsten Seite.
Abb. 4.4 Struktogramm für das erste, einfache Programm EIN_AUS.ASM
Nachfolgend sehen Sie das Programm. Es ist ausführlich dokumentiert. Die Wichtigkeit der Kommentare erkennen Sie leider erst, wenn Sie ein von Ihnen selbst geschriebenes Programm nach einem Jahr hervorholen und Änderungen durchführen sollen. Ersparen Sie sich diese Bloßstellung vor sich selbst! $ title (EIN_AUS) $debug ;Einfaches Programm zum Ein- Ausschalten einer Leuchte ;Taster 1 Einschalten, Taster 2 Ausschalten ;Taster 3 Programm beenden CSEG AT 0H ljmp ANFANG ORG 100H
;Legt absolute Codesegmentadresse auf 0h ;Sprung auf Programmanfang ;Programmstart bei 100H
ANFANG: jnb P1.1,LICHT_EIN jnb P1.2,LICHT_AUS jnb P1.3,PROGRAMM_ENDE ajmp ANFANG
;Schalter 1 betaetigt ? ;Schalter 2 betaetigt ? ;Programmende ;Springe zur Adresse Anfang
LICHT_EIN: clr P3.2 ajmp Anfang
;Licht einschalten ;Springe zur Adresse Anfang
LICHT_AUS: setb P3.2 ajmp ANFANG
;Licht ausschalten ;Springe zur Adresse Anfang
PROGRAMM_ENDE: ljmp 8000H end
;Monitoreinsprung
66
Symbole für Programm-Ablaufpläne Strukturelement
Klassische Darstellung
Struktogramme
Anfang
Ende
Schnittstelle
Sequenz
ja
?
nein
?
ja
nein
Verzweigung b1
?
? b2
bn
für
?
ja
?
nein
Schleife für
Wiederholung
ja
?
nein
ja
?
Abb. 4.5 Symbole für Programm-Ablaufpläne
Schleife
nein
Sprung aus Schleife
4 Assembler für die 8051-Controller-Familie 67
4.1
Erstellen eines einfachen Assemblerprogramms
Die Entwicklung des Programmes Ein_aus.asm wird in den nachfolgenden Schritten beschrieben. 1. Installieren Sie die Keil Entwicklungsumgebung durch Starten der beiliegenden CD. Wählen Sie die Evaluationssoftware „Install Evaluation Software“ und anschließend im Inhaltverzeichnis den Punkt „ C51 Compiler“ (Eval Tools). Folgen Sie den Anweisungen der CD. 2. Rufen Sie den Dateimanager auf. 3. Kopieren Sie von der 8051-CD das Verzeichnis 8051 auf Ihre Festplatte. Bei einer neueren Umgebung spielt es keine Rolle, welchen Laufwerksbuchstaben Sie wählen. 4. Entfernen Sie den Schreibschutz für alle Dateien im 8051Verzeichnis. Rufen Sie den Dateimanager auf und suchen Sie in Verzeichnis 8051 nach allen Dateien mit *.*. Danach klicken Sie mit der rechten Maustaste auf die markierten Dateien. Im erscheinenden Fenster können Sie den Schreibschutz für alle aktivierten Dateien entfernen. 5. Das Programm „µVision“ rufen Sie unter Start\Programme\µVision auf. 6. Unter dem Menüpunkt: Project -> New Project legen Sie ein neues Projekt an. Bemerkung: Nach Abschluss vieler Projekte in den unterschiedlichsten Medien ziehe ich es inzwischen vor, für jedes Projekt einen separaten Ordner anzulegen und alle für das Projekt benötigten Dateien in diesem Ordner oder dessen Unterordner abzulegen. Das führt oft zu mehrfachem Ablegen derselben Dateien. Wird aber ein Projekt verschoben oder an einen anderen Mitarbeiter weitergegeben, so ist dadurch gewährleistet, dass alle notwendigen Dateien im Projektordner vorhanden sind. Besonders hilfreich ist dabei, eine Versionsnummer zusätzlich zur Projektnummer zu vergeben. Eine Sicherung des Projektstandes inklusive der Versionsnummer erweist sich ebenfalls als sehr vorteilhaft.
68
Abb. 4.6 Erstellen eines neuen Projektes
Damit Sie alle bisherigen Beispielprogramme für die 8051-Familie von den älteren Auflagen verwenden können, müssen Sie ein neues Projekt im Ordner: 8051\entw_asm\Ein_aus anlegen.
Abb. 4.7 Speichern der Projektdatei: Ein_aus.uv2
Legen Sie einen Ordner EIN_AUS und darin das Projekt Ein_aus.Uv3 an.Danach erscheint ein neues Fenster mit der Überschrift: Select Device for Target 'Target 1'. Hier wählen Sie das Zielsystem, also den Mikrocontroller aus.
4 Assembler für die 8051-Controller-Familie 69
Abb. 4.8 Auswahl des Controllers
Im vorliegenden Beispiel befindet sich der 80C535-Chip im Verzeichnis von Infineon unter der Bezeichnung SAB80C535. Dieser Controller wird inzwischen nicht mehr gefertigt. Stattdessen können Sie den 80C515 einsetzen, dessen zusätzlicher ROM durch die Hardware ausgeblendet wird.
Abb. 4.9 Auswahl des Derivates SAB 80C535 für die EURO-535-Karte
Die Zielumgebung ist die EURO_535-Karte. Die wesentlichen Eckdaten dieser Umgebung müssen zuerst dem Assembler und Linker unter dem Menüpunkt: Project/Options for Target 'Target1' bekannt gegeben wer-
70
den. Legen Sie den Takt auf 12.0 MHz fest und tragen Sie die Startadresse: 0x0000 und die Größe: 0x8000 für das EPROM und den RAM ein. Bedenken Sie, dass das Remote-Debugsystem der EURO_535 nur in einer von-Neumann-Architektur funktionsfähig ist. Verwenden Sie eine andere Hardware können völlig andere Techniken zum Einsatz kommen.
Abb. 4.10 Einstellungen für die gewählte Hardwareumgebung
Zur Konfiguration der Entwicklungsumgebung müssen die Programme für das Zielsystem bekannt gemacht werden. Im linken Fenster befindet sich unter dem Ordner: Target ein weiterer Ordner mit dem Namen: Source Group 1. Klicken Sie auf diesen Ordner mit der rechten Maustaste und es öffnet sich der folgende Dialog:
Abb. 4.11 Hinzufügen der Datei
Klicken Sie auf: Add Files to Group 'Source Group1' und es öffnet sich ein Datei-Dialog. Damit Sie das Programm nicht neu editieren müssen, öffnen Sie das Verzeichnis: 8051\entw_asm\Ein_aus\Ein_aus.asm. Der
4 Assembler für die 8051-Controller-Familie 71
Datei-Suffix ist normalerweise auf *.C eingestellt und sollte auf *.asm umgestellt werden.
Abb. 4.12 Das editierte Programm EIN_AUS.asm
Das hier vorgestellte Programm Ein_aus.asm wurde auf die wesentlichen Teile begrenzt. Insbesondere wurden alle üblichen Informationen zugunsten der Übersichtlichkeit weggelassen. Die Anweisungen von der bisher verwendeten Umgebung -Intel Assembler- wurden für den Assembler beibehalten. 4.2
Debuggen – Test und Fehlerbeseitigung
Mit Hilfe von Software wird der Controller auf dem PC simuliert. Die Leistungsfähigkeit eines PCs liegt oftmals weit über der Leistungsfähigkeit eines Controllers. Deshalb kann die Simulation schneller ablaufen als auf dem Zielsystem. Eine weitere sehr gute Testmöglichkeit ist der Test auf der Zielhardware. Hierfür muss die Zielhardware bestimmte Voraussetzungen erfüllen.
72
4.3
Test des EIN_AUS-Programms mit dem Simulator
Unter µVision2 können Sie auf zwei Arten das Programm testen. Als reine Simulation per Software oder in der realen Hardwareumgebung mit Hilfe des frei verfügbaren Monitorprogramms MON51 für die EURO_535-Karte.Durch einen Klick auf das "Lupensymbol mit rotem d" lösen Sie den Debug-Vorgang aus.
Abb. 4.13 Das editierte Programm Ein_aus.asm mit Start/Stop Debug Session
Ein neues Fenster mit den einzelnen Registern des 8051-Controllers erscheint. Mit dem Button Disassembly Window können Sie zwischen den verschiedenen Darstellungsarten umschalten. Im Menüpunkt Debug sind sämtliche Möglichkeiten für den Test des Programms aufgeführt. Durchlaufen Sie einmal das Programm in Einzelschritten mit dem Befehl Step oder mit der Funktionstaste F11.
4 Assembler für die 8051-Controller-Familie 73
Abb. 4.14 Das editierte Programm Ein_aus.asm im Debug-Modus
Unter dem Menüpunkt Peripherals können Sie die einzelnen Bits des Port 1 setzen und zurücksetzen. Somit lassen sich die Taster auf der EURO_535 per Software simulieren. Beachten Sie, dass Sie, um im Einzelschritt fortzufahren, das Fenster mit dem Sourcecode wieder aktivieren müssen.
74
Abb. 4.15 Das editierte Programm Ein_aus.asm mit abgearbeiteten Befehlen
4.4
Test des EIN_AUS-Programms mit EURO_535
Mit Remote-Debug testen Sie Ihre Software in der Hardwareumgebung. Durch die reale Umgebung sind die Testbedingungen besser als bei SoftDebug. Die Voraussetzungen für einen solchen Test gestalten sich jedoch umfangreicher: Euro-535 Hardware mit MON51 Eprom Verbindung der beiden Systeme über V24-Schnittstelle (RS232) Einstellungen in µVision2 In der integrierten Entwicklungsumgebung µVision2 rufen Sie im Menüpunkt Project/Options for 'Target1' die Registerkarte Debug auf. Wählen Sie die Check Box Use: Keil Monitor-51 Driver und Load Application at Startup. Dies bewirkt, dass beim Start des Debuggers die Datei Ein_aus sofort in die EURO-535-Karte geladen wird.
4 Assembler für die 8051-Controller-Familie 75
Abb. 4.16 Einstellungen in der Registerkarte Debug
Sehr vorteilhaft ist es, sämtliche Check-Boxen im Feld „Restore Debug Session Settings“ zu aktivieren. Hierdurch werden alle geöffneten Fenster im Debugbetrieb wieder aktiviert. Im Schalter „Settings“ können Sie die Einstellungen der Kommunikationsschnittstellen überprüfen. Falsche Einstellungen sind sehr häufig die Ursache für eine Fehlermeldung bei der Kommunikation zwischen EURO_535 und dem PC. Achten Sie bitte darauf, dass auch in der Registerkarte Target die Einstellungen korrekt sind. Bestätigen Sie die Eingaben mit OK. Bei neueren Notebooks muss ein USB-Seriell Umsetzer eingesetzt werden. Dazu muss unter Windows die richtige COM-Schnittstelle im Gerätemanager eingestellt werden. Wählen Sie COM1 oder COM2. Das Fenster „Project Workspace“ können Sie schließen und erhalten dann das folgende Fenster mit dem gesamten Programm. Sollte die Verbindungsaufnahme zwischen den beiden Systemen nicht funktionieren, können Sie unter Settings die verwendete COMSchnittstelle Ihres PCs auswählen.
76
Abb. 4.17 Das editierte Programm Ein_aus.asm nach Auslösen des Ladevorganges zur EURO_535
Die Registerinhalte des Controllers können Sie über den Button ein- und ausschalten. Der Programmcounter steht nach dem Start auf 0000H. Sie erkennen dies auch am gelben Pfeil am rechten Rand. Betätigen Sie den Button wird ein Einzelschritt ausgeführt und der Programmcounter springt auf 0100H. Wählen Sie unter dem Menüpunkt Debug den Punkt Breakpoints aus, so erscheint das folgende Fenster:
4 Assembler für die 8051-Controller-Familie 77
Abb. 4.18 Debug-Fenster nach Verbindungsaufnahme mit der EURO_535-Karte mit MON51 und das Setzen von Breakpoints
Im Feld Expression werden die gewünschten Breakpoints editiert und durch Define in die Breakpointliste eingetragen. Sinnvollerweise verwendet man hierzu die symbolischen Namen der Labels - Sprungmarken.. In diesem Fall wurde beispielsweise 'LICHT_EIN' gewählt. Sobald Sie Close
78
anklicken, erscheint eine rote Markierung an den gewählten Labels im Source Code. Sie können einen Breakpoint auch mit einem Doppelklick an der gewünschten Stelle auslösen. Im Programm EIN_AUS können die einfachen Techniken zum Austesten eines Programmes im Zusammenspiel mit der Hardware sehr gut geübt werden. Dies ist das einfachste Beispiel für EVA. E steht für Eingabe, V für Verarbeitung, A für Ausgabe. Die Eingabe erfolgt mit einem Taster, die Verarbeitung mit dem Controller und die Ausgabe mit einer LED. Das EVA-Prinzip ist das Grundschema für die elektronische Datenverarbeitung. Es gilt für Software und Hardware.
Abb. 4.19 Breakpoint LICHT_AUS
Mit dem Button lassen Sie das Programm ablaufen. Sobald der Taster T1 am Port 1.1 betätigt wird, hält das Programm am Breakpoint LICHT_EIN: an. Beobachten Sie beim Einzelschrittbetrieb mit der Taste „F11“ den Program Counter. Durchlaufen Sie die Warteschleife zu Beginn mehrmals und beobachten Sie die Befehlsausführungszeit für die Warteschleife. Bei 12 MHz-Betrieb können Sie die Warteschleife 125 000 Mal pro Sekunde durchlaufen.
4 Assembler für die 8051-Controller-Familie 79
4.5
Entwicklungsprozess für ein µ-Controller-Programm
An unserem einfachen Beispiel EIN_AUS lernen wir die typischen Schritte zur Lösung einer Aufgabe mit dem µ-Controller kennen. Diese Schritte sind im nachfolgenden Schaubild nochmals dargestellt. Produktvorstellung und Produktspezifikation sind durch die Aufgabenstellung von EIN_AUS vorgegeben. Aufgrund der simplen Anforderungen fällt dieser Teil hier sehr einfach aus. Normalerweise muss eine Anforderungsliste für das Produkt erstellt werden. Diese Anforderungsliste muss vom Vertrieb, der Geschäftsleitung, der Hardware- als auch der Softwareabteilung gegengezeichnet werden. Ich kann dieses "muss" nur jedem Entwickler empfehlen, selbst wenn einer der Beteiligten sich herausredet; bestehen Sie darauf! Die weitere Entwicklung verläuft meist parallel, da eine lineare Entwicklung zu viel Zeit beansprucht. Vorteilhaft erweist sich zu diesem Zeitpunkt der Einsatz eines Simulators zur Entwicklung der Software. Die Festlegung der Portbenutzung bzw. der Adressen und Speicherbelegung muss in Absprache zwischen Hardware und Software erfolgen. Diese Festlegung setzt einige Erfahrung voraus. Behalten Sie sich deshalb immer eine Reserve für spätere Aufgabenerweiterungen vor. Eine kontinuierliche Überprüfung ihrer Arbeit erreichen Sie durch wöchentliche Absprachen zwischen Hardware und Software. Die Wichtigkeit der ersten Schritte, insbesondere der Produktspezifikation, sei nochmals betont. Auch hier gilt, dass sich ein Fehler beim nächsten Entwicklungsschritt mit dem Kostenfaktor 10 auswirkt. Sind die Phasen Design, Konstruktion und Endtest abgeschlossen und der Endtest nicht erfolgreich, so müssen diese drei Phasen erneut durchlaufen werden. Insbesondere bei Embedded Systems bedingt die Systemintegration häufig einen weiteren Durchlauf von Design, Konstruktion und Endtest. Die Produktion beginnt meist mit einer kleinen Vorserie. Diese Vorserie muss ebenfalls ausgiebig getestet werden, damit keine Rücklaufaktionen notwendig werden. Wechseln Sie unter keinen Umständen ausgetestete Bauteile zugunsten billigerer Angebote aus. Bei der Entwicklung der EURO_535 wurde der Treiber für die serielle Schnittstelle im Prototyp getestet. Die Serie wurde mit einem angeblich kompatiblen Baustein gefertigt. Dennoch gab es zahlreiche Rückläufer wegen der mangelhaften Schnittstelle. Aus dem Gewinn wurde schlagartig ein Verlust!
80
Produkt Vorstellung
Produkt Spezifikation
Prototyp Hardware Design Prototyp Hardware Konstruktion Prototyp Hardware Endtest
⇔ ⇔ ⇔
Ü B E R P R Ü F U N G
⇔
Prototyp Software Design
⇔
Prototyp Software Codierung
⇔
Prototyp Software Endtest
System Integration
Beginn der Produktion
Abb. 4.20 Entwicklungsablauf
4 Assembler für die 8051-Controller-Familie 81
4.6
Prototyp Software Design Start
Turbo-Pascal 6.0 Editor Word in TXT-Format
ASCII-Editor
BSP_2.ASM
BSP_1.ASM
BSP_4.C
BSP_3.ASM
Assembler
C-51 Compiler PL/M-51
ASM51
verschiebbarer Objektcode
Anwender Bibliothek Library Manager
C-Libraries
L51 Linker/Locator BL51 Banking Linker
Absolute Programme CSEG, ORG BSP_GES.
Symbolpräprozessor SP8051KE
Symbolpräprozessor SP8051KE
Symbolpräprozessor SP8051KE
OH Objekt-HexCode-Wandler
PC
PC
PC
80535 EPROM
HITOP Simulator
Simulator
80535 Monitor EPROM
Remote Debug
Abb. 4.21 Ablauf Programmentwicklung
Hardware ohne µ-Controller
Emulator
Emulator
EPROM
82
Der Ablauf einer Programmentwicklung für µ-Controller beginnt im vorherigen Bild mit „Start“. Das Ende der Programmentwicklung wird meist in Form eines lauffähigen Programms im EPROM vorliegen. Die Testumgebung kann ein Simulator, ein Remote-Debug-System oder ein Emulator sein. Der "Start" im Bild beinhaltet bereits Modularisierung und Erstellung von Struktogrammen. Diese Aufgaben sind aufgrund der Vereinfachung nicht im Bild gezeigt. Sie können mit einem ASCII-Editor sowohl Assembler-Programme als auch C Programme editieren. Je nach Art der Programme wird ein Compiler oder Assembler zum Übersetzen der Programme verwendet. Durch Verwenden des Linkers können Sie verschiedene Module, die bereits auch in Form einer Bibliothek vorliegen, zusammenbinden. Je nach Zielumgebung, d.h. auf welcher Hardware die Software abläuft, erzeugen Sie aus der Linker-Datei entsprechende Dateien. Im Falle des vorgestellten Systems können *.HTX-Dateien sowohl vom Simulator, Remote-Debug-System als auch vom Emulator bearbeitet werden. Der Simulator zeigt sehr schön die Vorgänge im Prozessor auf. Die Umgebung kann in einer Vollversion des Simulators ebenfalls simuliert werden. Das einzige Werkzeug zur Programmentwicklung ist ein PC. Das Remote-Debug-System bietet alle Möglichkeiten, die Programme in Echtzeit auf der Zielhardware ablaufen zu lassen. Diese kann zum Beispiel die EURO_535 sein. Von Nachteil ist die Nicht-Echtzeitfähigkeit beim Austesten des Programms. Ein weiterer Nachteil besteht im erhöhten Speicherbedarf für das Monitorprogramm. Bei Echtzeitaufgaben und großen Entwicklungen empfiehlt sich dringend der Einsatz eines Emulators. Auch beim Test der HardwareUmgebung des Controllers ist dessen Einsatz sinnvoll. 4.7
Die Speicherbereiche des 8051 / 80535
Über den Assembler lässt sich steuern, welche Speicherbereiche des 8051 / 80535 angesprochen werden. Dafür werden zum Quellcode sogenannte Pseudobefehle wie z.B. CSEG -hier beginnt das Codesegement- als Anweisung für den Assembler vorgegeben. Der Unterschied zwischen einem 8051- und einem 80535-Controller liegt in der Erweiterung des internen RAM-Speicherbereiches. Weitere 128 Byte stehen beim 80535 durch indirekte Adressierung zur Verfügung. Vorteilhaft wirkt sich dies insbesondere durch den jetzt genügend großen Speicherplatz für den Stack aus.
4 Assembler für die 8051-Controller-Familie 83
Abb. 4.22 Speicherbereiche 8051 / 80535
4.8
ASM 51 Macro Assembler
Für Assembler-Anweisungen wie Speicherinitialisierung und Reservierung gilt nachfolgende Liste: Tabelle 4.3 und Tabelle 4.4 Assembler Anweisungen Symboli- Anwei- Operant Funktion sche Ad- sung resse Speicher Initialisierung und Reservierung [:]
DB
[:]
DW
Funktionsbeschreibung
Define byte in prog- Definiere Byte (8 Bit) im Programmspeiram memory cher Define word in prog- Definiere Wort (16 Bit) im Programmspeiram memory cher
84 Symboli- Anweis- Operant sche Ad- ung resse [:]
DBIT
Funktion
Funktionsbeschreibung
Advance bit location Reserviere Byte im bitadrescounter sierbaren Bereich
Symbol Definitionen
EQU
Create new symbol
SET
USING
CODE
- 0,1,2,3
DATA
IDATA
XDATA
BIT
Definition eines neuen Symbols (nicht redefinierbar) Set symbol value Definition eines neuen Symbols temporarily (redefinierbar) Select register bank Wahl der aktuellen Registerbank mit R0, R1, R2, R3, R4, R5, R6, R7 Define code address Definition eines Symbols im Programmsymbol speicher Define data adress Definition eines neuen Symbols im symbol internen Datenspeicher Define indirect data Definition eines neuen Symbols im indirekt adress symbol adressierbaren internen Datenspeicher Define an off chip da-Definition eines neuen Symbols im ta adress symbol externen Datenspeicher Define a bit adress Definition eines Symbols im symbol bitadressierbaren Bereich
Relative Segmente
SEGMEN {CODE|XDATA Declare relocatable |DATA|IDATA| segment. T BIT} [Assign attributes]
Definition eines Segmentnamens mit einer Typangabe sowie ggf. Speichergrenzen
RSEG
Aktivieren des vorher definierten relativen Segments
[ _{PAGE|INPAG E|INBLOCK| BITADRESSAB LE|UNIT}]
Select relocatable segment
Absolute Segmente CSEG
[AT]
select code segment
DSEG
[AT]
select internal data segment
ISEG
[AT]
XSEG
[AT]
Select indirect internal segment select external data segment
BSEG
[AT]
select bit adress segment
Die folgenden Befehle und Definitionen werden auf absolute Adressen im CODE-Segment bezogen Die folgenden Definitionen werden auf absolute Adressen im internen Datenspeicher-Segment bezogen Die folgenden Definitionen werden auf absolute Adressen im indirekt adressierbaren Datenspeicher-Segment bezogen Die folgenden Definitionen werden auf absolute Adressen im externen Datenspeicher-Segment bezogen Die folgenden Definitionen werden auf absolute Adressen im bitadressierbaren Segment bezogen
Assembler Kontrolle für Zustände ORG END
Set location Setzt den Adresszähler auf counter value End of program Ende des Programms
4 Assembler für die 8051-Controller-Familie 85
4.9 4.9.1
Die Assembler-Anweisungen im Detail Vereinbarungen für Symbole und Syntax
Symboldefinitionen - Symbol Definitions Ein Symbol repräsentiert Segmente, Register, Adressen und Zahlen. Syntax von Symbolnamen • Beginn mit Buchstaben oder Sonderzeichen (z.B. ? oder _) • erste 31 signifikante Zeichen; Länge max. 255 Zeichen • Keine Unterscheidung zwischen Groß- und Kleinbuchstaben, aber möglich Beispiel: Programm_ENDE Syntax von Zahlenwerten • erstes Zeichen muss Ziffer sein. Nicht FFH - sondern 0FFH Marken - Labels • Symbolnamen mit Doppelpunkt [:] am Schluss • Zuordnung von Befehlsadressen zu Symbolen Es kann Speicher als WORD (16Bit), BYTE (8 Bit) und BIT reserviert werden. 4.9.2
Speicherbereich Initialisierung und Reservierung
DB Das Format einer DB Anweisung ist: [label:] DB expression list Diese Anweisung initialisiert Programmspeicher mit Byte-Werten. Deshalb muss ein CODE-Typ-Segment aktiv sein. PRIMZAHLEN: DB 1,2,3,5,7,11,13 halt 1
; Das Label "Primzahlen" hat den In-
DW Das Format einer DW-Anweisung ist: [label:]DW expression list Diese Anweisung reserviert und initialisiert Worte innerhalb des Programmspeichers.
86 Sprung_Verteiler: DW GO_PROC,BREAK_PROC,DISPLAY_PROC ; eine Sprungverteiler Tabelle wird erstellt ; durch Aufzählung der Adressen für die ; Prozeduren.
DS Das Format ist: [label:]DS expression Diese Anweisung reserviert Speicher in Byte-Schritten. Es dürfen weder Vorwärtsreferenzen noch verschiebbare oder externe Bezüge vorhanden sein. DBIT Das Format ist: [label:]DBIT expression Die Anweisung reserviert Speicher in BIT Einheiten. Die Basiseinheit ist damit Bit und nicht Byte. EQU EQU weist den Wert zu. Nicht redefinierbar innerhalb Modul Bsp.: TRUE EQU OFFH
SET SET weist den Wert zu. Zeitliche Zuweisung - Redefinierbar innerhalb Modul Bsp.: TRUE SET OFFH 4.9.3
Die Registerbänke 0 bis 3
Die Registerbänke befinden sich im internen RAM; Adresse 00H - 1FH Sie können durch Verwenden des Befehls "USING" ausgewählt werden. USING USING 0 ≤ ausdruck ≤ 3 Ausdruck wählt die aktive Registerbank aus. Bsp.: Using 1
; Registerbank 1 wird ausgewählt
4 Assembler für die 8051-Controller-Familie 87
Nach dem Einschalten wird automatisch die Registerbank 0 gewählt. Symbol R0 bis R7 werden der jeweilig aktiven Registerbank zugewiesen. Es kann jeweils nur eine Registerbank aktiv sein. 1FH 18H 17H 10H 0FH 08H 07H
Registerbank 3 Registerbank 2 Registerbank 1 Registerbank 0
00H
R7 R6 R5 R4 R3 R2 R1 R0
@R1 @R0
kann Adresse von Speicher enthalten
Abb. 4.23 Registerbänke
4.9.4
Der Programmspeicherbereich
CODE CODE Definition eines Symbols für ein Byte im Programmspeicherbereich CODE weist den Wert zu. Nicht redefinierbar innerhalb Modul Bsp.: INT_VEKT_0 CODE 03H ; Interruptvektor 0 für externe Interrupts ; hat Adresse 03 Der Programmspeicher umfasst 64 KByte. Hiervon können 4 KByte im Prozessor sein. Je nach /EA-Signal wird dann interner oder externer Programmspeicher angesprochen. Welche Adresse des Programmspeichers angesprochen wird, steht im PC (Program Counter). Weiterhin liegen in diesem Adressbereich die Interrupt Vector Adresses (InterruptvektorAdressen). Beim 8051-Controller sind dies: Tabelle 4.5 Interrupt Vektoren im Programmspeicherbereich des 8051 PC 0000H 0003H 000BH 0013H 001BH 0023H
Interrupt Name RESET EXTIO TIMER 0 EXTI1 TIMER1 SINT
Erklärung Start Address after Reset External Interrupt 0 Timer 0 Overflow Interrupt External Interrupt 1 Timer 1 Overflow Interrupt Serial Channel 0 Interrupt
88
FFFFH
Für ErweiterungenSoftware-Portierbarkeit freihalten
0FFH
OFF-CHIP ROM
0FFFH 0000H
4 K IN-Chip ROM /EA=1
23H
SINT
1BH
TIMER 1 Timer 1 Überlauf Interrupt
13H
EXTI1
0BH
TIMER 0 Timer 0 Überlauf Interrupt
03H
EXTI0
externer Interrupt 0
00H
RESET
Startadresse nach Reset
Interrupt serielle Schnittstelle
externer Interrupt 1
Abb. 4.24 Programmspeicher
4.9.5
Der interne Datenspeicher
Der interne Datenspeicher ermöglicht eine sehr schnelle Programmbearbeitung. Die Adressierung des internen Datenspeichers kann direkt oder indirekt erfolgen. Für die Effizienz eines Programms ist die richtige Verwendung des internen Speichers wichtig. Der nachfolgende Befehl reserviert internen Speicher. DATA DATA Definition eines Symbols für ein Byte im internen RAM oder SFR DATA weist den Wert zu. Nicht redefinierbar innerhalb Modul Bsp.: TABELLE
DATA 70H
; Tabelle erhält die Adresse 70H
IDATA IDATA Definition eines Symbols für ein Byte im indirekt adressierbaren internen RAM (00H-7FH). IDATA weist den Wert zu. Nicht redefinierbar innerhalb Modul Bsp.: BUFFER
IDATA 60H
4 Assembler für die 8051-Controller-Familie 89 FFH
21 SFR Special Function
nur direkt adressierbar
Registers 80H 7FH
RAM 2FH
indirekt @Ri i=0,1
RAM BIT ADRESS RAUM
1FH 00H
direkt adressierbar
Registerbänke
Abb. 4.25 Interner Datenspeicher
4.9.6
Der externe Datenspeicher
Der externe Datenspeicher ist nur über indirekte Adressierung ansprechbar. Die Adresse steht entweder in den Registerbänken oder im Datenpointerregister. XDATA XDATA Definition eines Symbols für ein Byte im externen RAM XDATA weist den Wert zu. Nicht redefinierbar innerhalb Modul Bsp.: WERT1 XDATA 3890H
; WERT1 erhält die Adresse 3890H
FFFFH
RAM
nur indirekt adressierbar
über
@DPTR - @Ri
0000H
Abb. 4.26 Externer Datenspeicher
90
4.9.7
Die Bit-Adressen
Im internen direkt und indirekt adressierbaren RAM-Bereich gibt es 16 bitadressierbare Register. Jedes einzelne Bit in diesem Bereich kann direkt adressiert werden. BIT BIT Bit weist den Wert zu. (20H-2FH / 32-47) Nicht redefinierbar innerhalb Programm. Bsp.: ALARM BIT P1.3 ; Alarm-Taste an Pin Port 1.3 angeschlossen OPEN_DOOR BIT ALARM+1; entspricht P1.4 FFH
Special Function 80H 7FH
RAM 2FH 20H 1FH 00H
RAM BIT ADRESS RAUM Registerbänke
2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H
7F
09 08 02 01 00 20H.0
Abb. 4.27 Bitadressierbarer Bereich
Die Zuweisungen in Form von werden in den Register-Deklarationsdateien durchgeführt. 4.10 Segmente Segmente sind Speicherbereiche. Da es beim 8051-Prozessor fünf verschiedene Speicherbereiche gibt, sind auch fünf Segmente verfügbar. Innerhalb der einzelnen Segmente muss ein Adresszähler vorhanden sein. Dieser "Location Counter" ist der Adresszähler des jeweils aktiven Segments. Aktiviert man ein Segment, so wird der „Location Counter“ auf die Basisadresse 0 gesetzt. Ist eine andere Basisadresse angegeben, wird diese verwendet.
4 Assembler für die 8051-Controller-Familie 91
interner / externer Programmspeicher
FFFFH
externer Daten speicher
interner Daten speicher
FFFFH FFH
nur direkt
CSEG
XSEG
adressierbar
80H 7FH
DSEG RAM
2FH
0000H
0000H
1FH 00H
BSEG Registerbänke
ISEG indirekt
@Ri i=0,1
direkt
adressierbar
Abb. 4.28 Speicherbereiche - Segmente
CSEG XSEG DSEG ISEG BSEG
Externer oder interner Programmspeicher Externer Datenspeicher Interner direkt adressierbarer Datenspeicher Interner indirekt adressierbarer Datenspeicher Interner bitadressierbarer Datenspeicher
4.10.1 Relative Segmente Relative Segmente definieren einen verschiebbaren Speicherbereich für den Assembler. Zum Beispiel mit der Anweisung:
SEGMENT DATA Erzeugung eines verschiebbaren Datensegments Der Location Counter wird innerhalb des internen Datenspeicherbereiches auf 0 gesetzt und ein entsprechendes Segment definiert. Entsprechend sieht die Anweisung für die anderen Speicherbereiche aus. Die weiteren Angaben sind: PAGE Gibt die Seite in einem Vielfachen von 256 für Programmspeicher oder externes Datenspeichersegment an. Gültig ist die Anweisung für Programmspeicher und externen Datenspeicher.
92
INPAGE Das Segment liegt innerhalb eines 256 Byte großen Blocks. Gültig für Programmspeicher und externen Datenspeicher. INBLOCK Das Segment liegt innerhalb eines 2048 Byte großen Blocks. Gültig nur für Programmspeicher. RSEG Diese Anweisung aktiviert das vorher definierte relative Segment. 4.10.2 Absolute Segmente Die Anweisung muss ohne Label erfolgen. Die Anweisung wird durch Angabe der entsprechenden Adresse für den „Location Counter“ gegeben. Default ist 0. Wird innerhalb eines Programms das Segment gewechselt, wird dieses Segment mit der Adresse des vorher verlassenen Segmentes fortgesetzt. 4.10.3 Assembler-Anweisungen ORG - END ORG Durch die ORG Anweisung kann der Programmierer die Programme und Daten in bestimmte Speicherbereiche legen. Auf diese Weise kann der Programmierer gewissermaßen einen Linker simulieren. Vorteilhaft wird diese Anweisung, wenn bestimmte Adressen beschrieben werden sollen, beispielsweise Interruptadressen. Diese können aber auch durch EQUAnweisung und den symbolischen Namen beschrieben werden. END Diese Anweisung muss die letzte Programmzeile sein. 4.10.4 Quellcode-Anweisungen für den Linker Falls mehrere Module durch einen Linker zusammengebunden werden, müssen besondere Anweisungen zur Verfügung stehen. PUBLIC Durch diese Anweisung an den Assembler werden die nachfolgenden Namen für andere Module verfügbar. Die Namen sind normalerweise nur in einem Modul lokal bekannt. Durch diese Anweisung wird der Name global bekannt. (Nicht anwendbar bei Evaluation Assembler von Intel)
4 Assembler für die 8051-Controller-Familie 93
EXTERN Durch diese Anweisung an den Assembler werden dem Linker externe, d.h. außerhalb des Moduls stehende Symbole, bekannt gemacht. Diese Symbole können somit als Ansprungadressen von jump- oder callBefehlen für externe Codesymbole dienen. NAME Die Anweisung legt den Namen eines Moduls für den Linker fest. Voreinstellung ist der Dateiname. Es gelten folgende Bedingungen: • Keine Ziffer am Anfang • Muss am Anfang eines Moduls stehen • Kein Label Beispiel: NAME MATH_32_MODUL
4.11
Assembler-Steueranweisungen (Assembler Controls )
[] {} | [,.... ]
eckige Klammern bedeuten optionale Argumente Es darf nur eins der geklammerten Argumente gewählt werden. Einfache Trennung Die vorhergehende Bezeichnung kann wiederholt werden; muss jedoch durch Kommata getrennt werden.
Tabelle 4.6 Assembler Controls. Control
Default
[ { _ MOD51 } ] * MOD51 [ { _ NOMOD51 } ] *
Abkür- Funktion zung -
[ { _ DATE () } DATE () DA ]* [ { _ DEBUG } ] * NODEBU DB / NODB [ { _ NODEBUG } ] * G [ { _ EJECT } ] [ { _ GEN } ]
no EJECT EJ GE
[ { _ GENONLY } ]
GENONL GO Y
[ { _ NOGEN } ]
NOGE
Mit MOD51 benutzt der Assembler die SFRund Bitsymbole des SAB8051. NOMOD51 unterdrückt die Standardsymbole des 8051. Text aus max. 9 Zeichen wird im Seitenkopf als Überschrift ausgegeben Aufnahme bzw. Unterdrückung der Symboltabelle in die Objektcodedatei für das symbolische Testen mit dem ETA Papiervorschub auf Formularanfang Generieren der Makro-Definition, der Makroaufrufe und der Makroexpansionen in der ListDatei Generieren von ausschließlich Makroexpansionen in der List-Datei, als ob die Expansion Teil des Quellenprogramms wäre. Generieren der Makro-Definitionen, der Makroaufrufe.
94 Control
Default
Abkür- Funktion zung
[ { _ LIST } ] LIST LI / [ { _ NOLIST } ] NOLI MACRO MR / [ { _ MACRO NOMR [ () (50) }]* [ { _ NOMACRO } ] * [ { _ OBJECT () OBJECT OJ / () [ { _ PAGELENGTH PAGELEN PL () } ] * GTH (60) [ { _ PAGEWIDTH PAGEWID PW () } ] * TH (120) PAGING PI / [ { _ PAGING } ] * NOPI [ { _ NOPAGING } ] * [ { _ PRINT () } PRINT PR / ]* () [{_ REGISTE RB / REGISTERBANK RBANK NORB ( [...]) } ] * (0) [{_ NOREGISTERBANK }]* [ { _ RESTORE } ] no RS RESTORE [ { _ SAVE } ] no SAVE SA [ { _ SYMBOLS } ] * SYMBOLSSB / NOSB [ { _ NOSYMBOLS } ]* [ { _ TITLE no TITLE TT ('') } ] [ { _ WORKFILES (ddd[, ddd]) } ] * [ { _ XREF } ] * [ { _ NOXREF } ] *
same drive WF as source file NOXREF XR / NOXR
Erstellen bzw. Unterdrücken einer Übersetzungsliste Auswerten und Expandieren von MakroAufrufen (bzw. keine Auswertung und Expansion bei NOMACRO). Prozentuale Zuweisung des verfügbaren Speichers Erstellung bzw. Unterdrückung einer Objektcodedatei Einstellung der Anzahl der Zeilen pro Seite (minimal 10, maximal 65535) Einstellung der Anzahl der Zeichen pro Zeile (72 8000H 55 Funktionsweise - Timing für Adressumschaltung (nicht zeitgetreu) 55 Blockbild für Timingberechnungen am RAM 57 Signal-Zeit Diagramm für Datenspeicher lesen am 80C535 57 Schaltungsteil zur Erzeugung der Von-Neumann-Architektur 59 Zustand bei Zugriff auf Adresse > 8000h 59 Signal-Zeit-Diagramm für Datenspeicher schreiben am 80C535 59 Zahlendarstellung 61 Befehl für 8051 61 Beschaltung der Ports 63 Struktogramm für das erste, einfache Programm EIN_AUS.ASM 65 Symbole für Programm-Ablaufpläne 66 Erstellen eines neuen Projektes 68 Speichern der Projektdatei: Ein_aus.uv2 68 Auswahl des Controllers 69 Auswahl des Derivates SAB 80C535 für die EURO-535-Karte 69 Einstellungen für die gewählte Hardwareumgebung 70 Hinzufügen der Datei 70 Das editierte Programm EIN_AUS.asm 71 Das editierte Programm EIN_AUS.asm mit Start/Stop Debug Session 72 Das editierte Programm EIN_AUS.asm im Debug-Modus 73 Das editierte Programm EIN_AUS.asm mit abgearbeiteten Befehlen 74 Einstellungen in der Registerkarte Debug 75 Das editierte Programm nach Auslösen des Ladevorganges zur EURO_535 76 Debug-Fenster nach Verbindungsaufnahme mit der EURO_535-Karte 77 Brechpoint LICHT_AUS 78 Entwicklungsablauf 80 Ablauf Programmentwicklung 81 Speicherbereiche 8051 / 80535 83 Registerbänke 87 Programmspeicher 88 Interner Datenspeicher 89 Externer Datenspeicher 89 Bitadressierbarer Bereich 90 Speicherbereiche Segmente 91 Blockbild von Timer 0 und 1 im 16-Bit Modus 112 Mode 2, Zähler / Zeitgeber 0 und 1 mit automatischem ...... 113 Mode 3, Timer 1 Interrupt wird von Timer 0 mitbenutzt 113
11 Bildverzeichnis Abb. 5.4 Abb. 5.5 Abb. 5.6 Abb. 5.7 Abb. 5.8 Abb. 5.9 Abb. 5.10 Abb. 5.11 Abb. 5.12 Abb. 5.13 Abb. 5.14 Abb. 5.15 Abb. 5.16 Abb. 5.17 Abb. 5.18 Abb. 5.19 Abb. 5.20 Abb. 5.21 Abb. 5.22 Abb. 5.23 Abb. 5.24 Abb. 5.25 Abb. 5.26 Abb. 5.27 Abb. 5.28 Abb. 5.29 Abb. 6.1 Abb. 6.2 Abb. 6.3 Abb. 7.1 Abb. 7.2 Abb. 7.3 Abb. 7.4 Abb. 7.5 Abb. 8.1 Abb. 8.2 Abb. 8.3 Abb. 8.4 Abb. 8.5 Abb. 8.6 Abb. 8.7 Abb. 9.1 Abb. 9.2 Abb. 9.3 Abb. 9.4 Abb. 10.1 Abb. 10.2 Abb. 10.3 Abb. 10.4
Erzeugen von Interrupts Zu viele Interrupts Prioritäten / Anforderungen von Interrupts Struktogramm für Blink-Programm Debug-Programm Zeitgeber-Anzeige Debug-Programm Zeitgeber-Anzeige Debug-Programm: Interrupt Blockbild A/D-Wandler Anschluss eines Potentiometers an EURO_535 Schaltbild ADDA535-Karte Anzeige des ADDAT-Inhalts im Debug-Programm Umsetzung von parallel in seriell Einstellungen der seriellen Schnittstelle Einstellungen im Terminalprogramm Wechselspiel zwischen PC und Controller Erzeugen der Baudrate Blockschaltbild für Effektivwertmesser Abgetasteter Sinus Blockschaltbild Zeitgeber 2 Struktogramm für AD_40T2 Struktogramm für AD_40T2O A/D-Wandlung ohne Interrupts. Abgetasteter Sinus mit Offset Speicherinhalt nach A/D-Wandlung von 40 Werten, AD_40 Speicherinhalt nach Quadrieren Speicherinhalt nach Addition Speicherinhalt nach Addition Compilieren eines C-Programmes Simulator mit geladener EIN_AUS-Datei EIN_AUS in symbolischer Debug-Umgebung Struktogramm des Programmes BLIN_INT.C Debug-Oberfläche beim Programm BLIN_INT.C Verändern des Zählregisters Struktogramm AN0_COD.C Ausschnitt einer Debug-Sitzung von AN0_COD.C Anzeige des Hauptspeichers im Programm DEBUG.EXE Blockbild des Signalprozessors 218x Analog Devices ADSP-2106x Blockbild Einheiten des C515C-Controllers Blockbildschaltbild FullCAN Controller Blockschaltbild C8051F340 Prototyp mit C8051F340 auf der EURO_535 Einfache Aufgabendarstellung für CPU - Datenflussabschätzung Blockschaltbild als Unterlage für die Dokumentation Schaltplan für Dokumentationsunterlagen Layout - Bestückungsplan Schaltung zwischen Prozessor und EPROM Zeitdiagramm beim Umschaltvorgang (nicht zeitgetreu) Anschluss des RAM - Speichers Eprom über Decoder an 80535
307 116 118 119 121 124 125 125 127 127 128 132 133 134 135 135 139 143 143 146 148 151 153 157 158 158 159 179 180 181 188 191 192 193 195 205 208 211 213 213 215 216 221 224 225 230 249 249 261 273
Tabellenverzeichnis Tabelle 1.1 Tabelle 2.1 Tabelle 2.2 Tabelle 2.3 Tabelle 2.4 Tabelle 2.5 Tabelle 2.6 Tabelle 2.7 Tabelle 2.8 Tabelle 2.9 Tabelle 2.10 Tabelle 2.11 Tabelle 3.1 Tabelle 3.2 Tabelle 3.3 Tabelle 3.4 Tabelle 3.5 Tabelle 3.6 Tabelle 3.7 Tabelle 3.8 Tabelle 3.9 Tabelle 3.10 Tabelle 4.1 Tabelle 4.2 Tabelle 4.3 Tabelle 4.4 Tabelle 4.5 Tabelle 4.6 Tabelle 4.7 Tabelle 4.8 Tabelle 4.9 Tabelle 4.10 Tabelle 4.11 Tabelle 4.12 Tabelle 4.13 Tabelle 5.1 Tabelle 5.2 Tabelle 5.3 Tabelle 5.4 Tabelle 5.5 Tabelle 5.6 Tabelle 5.7 Tabelle 5.8 Tabelle 5.9 Tabelle 5.10
Die Ebenen in vereinfachter Darstellung Wahrheitstabelle D-Flip-Flop Erklärung der Abkürzungen für Timing D-Flip-Flop FACT Logikbausteine ( aus Datenbuch für FACT-Bausteine ) Wahrheitstabelle für 3-State-Register 74125 Wahrheitstabelle für 3-State-Register 74126 Wahrheitstafel für Register Wahrheitstafel Latch Datenübergabe Pin Namen Wahrheitstabelle für einen Adressdecoder(Baustein 74LS139) Wahrheitstabelle Multiplexer Pin-Definitionen und Funktionen der 8051 DIL-Version Alternative Funktionen an Port 3 Verwendete Abkürzungen im verfeinerten Blockbild des 8051 Port 3 Alternative Funktionen /PSEN und /RD verknüpft Timing-Werte für Controller 80C535 und EPROM Wichtigste Timing-Werte für Controller 80C535 … Wichtigste Timing-Werte für den RAM-Speicher 55257 AFL-10... Wichtigste Timing-Werte für Controller 80C535 … Wichtigste Timing-Werte für den RAM-Speicher … Übersetzung des Codes in eine Hexadezimal Dokumentation der Beschaltung Endungen der verwendeten Dateien Werkzeuge für die µ-Controller-Programmentwicklung Interrupt Vectoren im Programmspeicherbereich des 8051 Assembler Controls Program Status Word - Programm-Status-Wort Special Function Register nach funktionellen Gruppen Wichtige Schreibweisen und Bedeutungen für die Befehle Registerinhalte nach RESET mit Übersetzung PCON BITS Power Control Bits IEN0 Interrupt 0 Control Bits IEN1 Interrupt 0 Control Bits Die verwendeten Einheiten in den Projekten Vorschlag für Registerverwendung TMOD BYTE TCON BITS Timer 0 - Timer 1 Control Bits Interrupt-Vektor-Adressen IEN0 Interrupt 0 Control Bits Interrupt Control Bits TCON Interrupt Control Bits IP0 Interrupt Priority Bits IP0 Interrupt Priority Bits
2 12 14 15 16 16 18 19 20 22 22 27 31 38 41 42 47 52 58 58 60 60 62 64 83 83 87 93 96 97 99 105 106 107 107 108 109 112 114 115 117 117 118 120 120
309 Tabelle 5.11 Tabelle 5.12 Tabelle 5.13 Tabelle 5.14 Tabelle 5.15 Tabelle 5.16 Tabelle 5.17 Tabelle 5.18 Tabelle 5.19 Tabelle 5.20 Tabelle 5.21 Tabelle 6.1 Tabelle 6.2 Tabelle 6.3 Tabelle 6.4 Tabelle 8.1 Tabelle 8.2 Tabelle 8.3 Tabelle 9.1 Tabelle 9.2 Tabelle 9.3 Tabelle 9.4 Tabelle 9.5 Tabelle 9.6 Tabelle 9.7 Tabelle 9.8 Tabelle 9.9 Tabelle 9.10 Tabelle 10.1 Tabelle 10.2 Tabelle 11.1 Tabelle 11.2
Codierung Wert - Spannung ADCON REGISTER Erhöhung der Auflösung durch Einschränkung des Messbereiches SCON Bits ADCON REGISTER Allgemein verwendete Baudraten Verwendetet Abkürzungen Timer 2 Control-Bits Lösung der Aufgabe mit Interrupts Zahlendarstellung: Die vorderste "Eins" bedeutet "Negativ" Beispiele für Programmiersprachen und Hinweise ... Datentypen des C-51-Compilers Speichertypen bei C-51 ( nach C-51-Bedienungsanleitung ) Speichermodelle bei C-51 ( nach C-51 Bedienungsanleitung ) Entwicklung einer Prozessorfamilie Prozessoren - Namen und Aufgabengebiet Unterscheidungskriterien für Prozessoren Anforderungsliste für EURO_535 Karte Leitlinien zum Aufstellen einer Anforderungsliste Verschiedene Prozessoren - CPU's Stückliste für EURO_535 Kabelbelegung EURO_535 - PC Steckerbelegung VG-Leiste EURO_535 Pinbelegung des VG-Steckers mit Funktionsbeschreibung Fertigungsunterlagen Ausschnitt aus CD: Technical Product Information for .... Beispiel für kontinuierliche Verbesserung durch Anforderungslisten Codierung mit Leuchten Wahrheitstabelle 74LS138 TMOD BYTE TCON BITS Timer 0 - Timer 1 Control Bits
126 128 129 130 138 140 140 146 147 148 155 175 183 184 185 200 202 203 218 220 224 226 227 228 229 231 233 234 259 273 293 294
Stichwortverzeichnis µ-Computer 5 µ-Controller 30 16K-EPROM 50 32K-RAM 57 74F374 17 8051 30 8051 Befehle 99 A/D-Wandler 127; 129; 138; 140 ACC 105 ADCON 129; 138; 140 ADDA535-Karte 128 ADDAT-Register 129 ADD Files 70 Adressbus 23 ALE-Signal 49 AN0_COD.ASM 126 AN0_COD.C 193 Anforderungsliste 218 ASM 51 83 AT-Bus 23 Ausgabeeinheit 42 Auslösen des Ladevorganges 76 B 105 Baudrate 139 Befehle 99 Bit 10 Bit-Adressen 90 Bitadressierbar 90 BLIN_INT.ASM 111; 122 BLIN_INT.C 188 Blinklicht 111 BSEG 91 BUS 23 Controlbus 23 Counter 111 CPU 40 CSEG 91
Data Memory 39 Datenbus 23 Datenspeicher lesen 50; 57 Datenspeicher schreiben 50 DB 85 DBIT 86 D-Flip-Flop 11; 12 Digitalrechners 42 DPTR 105 DS 86 DSEG 91 DW 85 Ebenen-Problem 3 EFF_WERT.C 198 Effektivwert 141 Effektivwertmesser 141; 143 EIN_AUS.ASM 65 EIN_AUS-Programm 71 Eingabeeinheit 42 Emulator 81 END 92 Event Counters 39 Externer Datenspeicher 89 EXTRN 93 Feldeffekttransistor 34 FET 34 Funktionstabelle 11 GAL 22 I/O-Bereich 23 I/O-Bus 23 IEN0 105; 107; 117 IEN1 105; 107; 117 Impulsdiagramm 12 Interrupt 125 Interrupt 0 enable bits 292 Interrupt 1 enable bits 292 Interrupt Control Bits 293 Interrupt Priorität 120 Interrupt System 114 Interrupt Vector Adressen 115 Interruptcontroller 44
11 Stichwortverzeichnis Interrupt-Prioritäten 119 Interrupts 119 IP0 105; 120 IP1 105; 106; 115; 116; ISEG 91 Jumper 230 Latch 18 Leitwerk 42 Leuchte_x 183 Lichtgeschwindigkeit 13 Macro Assembler 84 NAME 93 ORG 92 Oscillator 39 PAL 22 PCON 106; 139 Pegel 9 Pin-Definitionen 31 Port 0 35 Program Memory 39 Program Status WORD 96 Programm Status Wort 292 Programmspeicher lesen 49; 50 Programmspeicher Lesezugriff 51 Projekte 108 PROM 22 PSW 96 PUBLIC 92 Rechenwerk 42 Recovery Time 13 Regel 1 109 Regel 2 109 Regel 3 109 Register 17 Remote Debug System 74 Remote-Debug 76 RESET 105 SBUF 139
Schaltnetz 8 Schaltwerk 7 SCON 138 Segmente 90; 91; 92 Serial port 40 SERIEL_1.ASM 133 SERIEL_1.C 196 Ser. Schnittst. 44; 134; 138; 139 Serielles Kabel 227 Simulator 72 SMx 295 Special Function Register 96 Speicher 42 Stack 96 Steuerbus 23 Steuerlogik 42 Synchrone Übertragung 138 T2CON 147; 296 Taster_x 183 TCON 106; 114; 118; 120; 294 Theorie des µ-Controller Chips 9 Theorie des Klavierspiels 4 Three-State-Ausgang 16 Timer 111 Timer 2 146 TMOD 112; 293 Truth Table 11 TTL Pegel 10 Turingmaschine 6 UART 40 verfeinertes Impulsdiagramm 13 VG-Leiste 228 Vollduplex-Betrieb 138 Wahrheitstabelle 11 Watchdog 107 Watch-Point 132 XSEG 91 Zähler 111 Zeitdiagramm 12
311