Mikrocomputertechnik mit dem Controller C167 Programmierung in Assembler undc Schaltungen und Anwendungen von Prof. Dipl.-Ing. Günter Schmitt Oldenbourg Verlag München Wien
Inhaltsverzeichnis Vorwort 9 1. Einführung 11 2. Die Hardware des C167 17 2.1 Die Funktionseinheiten des C167 17 2.2 Die Takt- und Resetsteuerung 19 2.3 Die Programmierung der Systemkonfiguration 21 2.4 Die Programmierung der Buskonfiguration 23 2.5 Ein Kleinsystem mit dem C167 29 Monitorprogramm für das Kleinsystem (Assembler) 30 2.6 Die parallelen Ports 35 3. Speicherorganisation 39 SFR-Bereich und interner RAM 40 Die General Purpose Register (GPR) 41 Der Aufbau des Stapels 42 Die Speicheradressierung 44 Die Bitadressierung 44 Die Befehlsadressierung 45 Befehle zum Umschalten der zugeordneten Adressen 46 4. Programmierung 47 4.1 Assemblerprogrammierung 48 Direktiven und Datenvereinbarungen 51 Die Adressierungsarten 52 4.2 C-Programmierung 54 Vordefinierte ganzzahlige Datentypen 56 Kennwörter für Vereinbarungen 57 4.3 Operationen 59 Zahlendarstellung und arithmetische Operationen 61 Logische Operationen und Schiebeoperationen 62 4.3.1 Operationen in Assembler 64 Transferbefehle 65 Additions- und Subtraktionsbefehle 66 Die logischen Befehle 67 Die Multiplikations- und Divisionsbefehle 68 Die Schiebeoperationen und Bitbefehle 70 4.3.2 Operationen in C 72 Datentransfer und arithmetische Operatoren 72 Logische Operatoren und Schiebeoperatoren 75 Bitvariablen und Bitoperationen 78
6 Inhaltsverzeichnis 4.4 Schleifen und Verzweigungen 80 4.4.1 Schleifen und Verzweigungen in Assembler 82 Vergleichsbefehle 82 Sprungbefehle 83 Leseschleifen 85 Zählschleifen 85 Warteschleifen 85 Verzweigungen 87 4.4.2 Schleifen und Verzweigungen in C 89 Vergleichs- und Verknüpfungsoperatoren 89 Die f or-schleifenanweisung 90 Die bedingte while-schleifenanweisung 90 Die wiederholende do-while-schleifenanweisung 91 Die Kontrollanweisungen break continue goto return 91 Die bedingten Anweisungen if und if-eise 92 Die Fallunterscheidung switch-case 93 Leseschleifen 94 Zählschleifen 94 Warteschleifen 95 4.5 Speicherbereiche 97 4.5.1 Die Bereichsadressierung in Assembler 98 Die indirekte Adressierung 98 Speichertest und Aufzeichnung von Prellungen 100 Die Arbeit mit Tabellen 104 4.5.2 Eindimensionale Felder in C 105 Dimensionierung und Adressierung von Feldern 105 Speichertest und Aufzeichnung von Prellungen 106 Die Arbeit mit Tabellen 107 4.5.3 Mehrdimensionale Felder, Strukturen und Zeiger 109 Zweidimensionale Felder 109 Strukturen 110 Zeiger und dynamische Felder 112 Die verkettete Liste 112 4.6 Unterprogrammtechnik 114 4.6.1 Assembler-Unterprogramme 115 Die CALL- und RET- Befehle 115 Die Stapeloperationen 116 Die Parameterübergabe und lokale Variablen 117 Der Einbau von Makros und von Unterprogrammen (include)... 120 4.6.1 C-Funktionen 122 Definition und Aufruf von Funktionen 122 Die Übergabe von Parametern 124 Der Einbau von Makros und von Funktionen (include) 125 Funktionsbibliotheken 126
Inhaltsverzeichnis 7 5. Interrupt-Technik 127 5.1 Einführendes Beispiel 129 5.2 Nichtsperrbare Interrupts (Traps) 131 5.3 Die Freigabe- und Prioritäts-Steuerung 133 5.4 Die externen Interrupts 138 Der schnelle (fast) externe Interrupt 140 5.5 Der PEC-Datentransfer 141 5.6 Software-Interrupts 144 5.7 Die Antwortzeiten 146 6. Die Timereinheiten 147 Timer als Frequenzteiler 148 6.1 Die Mehrzweck-Timer GPT 149 Timer mit Interruptauslösung 150 6.1.1 Die Timereinheit GPT1 151 Die Betriebsart Timer 153 Der Start-Stop-Betrieb 153 Die Betriebsart Ereigniszähler (Count) 154 Die Betriebsart Nachladen (Reload) 155 Die Ausgabe eines PWM-Signals 156 Die Betriebsart Speichern (Capture) 157 Die Betriebsart Zusammenschaltung (Concatenation) 159 6.1.2 Die Timereinheit GPT2 162 Die Betriebsarten Timer, Count, Kette, Reload und Capture... 164 Die Frequenzvervielfachung 165 6.2 Die Capture/Compare-Einheiten CAPCOM 166 Die Timerkette 168 Der Capture-Betrieb zur Periodendauermessung 172 Der Compare-Betrieb 175 Der Doppelregister-Compare-Betrieb 176 6.3 Die Pulsweiten-Einheit PWM 179 6.4 Der Watchdog Timer 184 7. Die seriellen Schnittstellen 185 7.1 Die asynchrone Betriebsart 186 7.2 Die synchrone Betriebsart 191 7.3 Die schnelle synchrone serielle Schnittstelle (SSC) 193 8. Die analogen Schnittstellen 199 8.1 Digital/Analogwandler am C167 200 8.2 Die Analog/Digitalwandler-Einheit 202 8.3 Serielle analoge Bausteine 206
8 Inhaltsverzeichnis 9. Die CAN-Schnittstelle 211 10. Anwendungsbeispiele 215 10.1 Die Konsol-Ein/Ausgabe 215 Konsolunterprogramme in Assembler 217 Konsolfunktionen in C 221 10.2 Die Beschaltung der parallelen Ports 224 10.3 Anzeige-Einheiten 228 Die Ansteuerung von 7-Segment-Anzeigen mit Decodern 228 Direkte 7-Segment-Ansteuerung 229 Die 7-Segment-Anzeige im Multiplexbetrieb 232 Multiplexanzeige einer LED-Matrix 233 Die Ansteuerung einer LCD-Anzeigeeinheit 235 10.4 Eingabe-Einheiten 239 Die Eingabe mit Schaltern und Tastern 239 Die Abfrage einer Tastaturmatrix 240 Die Abtastung einer Tastatur im Multiplexbetrieb 243 Die Ausgabe von Fehlermeldungen durch Blinken und Hupen 245 10.5 Sensoren 248 Reedkontakte 248 Temperatursensoren 251 Optische Sensoren 260 Akustische Sensoren 264 11. Befehlslisten 265 12. Anhang Codetabellen 319 Ergänzende und weiterfuhrende Literatur 321 Bezugsquellen 322 Verzeichnis der Beispielprogramme 323 Verzeichnis der Abbildungen 325 13. Register 327