Cover | 1 |
Vorwort | 6 |
Inhalt | 8 |
1 Einleitung | 12 |
2 Mega32 | 16 |
3 Application-Board Mega32 | 17 |
4 Mega128 | 19 |
5 Application-Board Mega128 | 20 |
6 Hardware-Einstellung | 22 |
6.1 Application-Board MEGA32 | 22 |
6.1.1 Programmierung über USB | 22 |
6.1.2 Programmierung über RS232 | 23 |
6.2 Application-Board M128 | 24 |
6.2.1 Programmierung über USB | 25 |
6.2.2 Programmierung über RS232 | 26 |
7 Software-Installation | 29 |
7.1 Entwicklungsumgebung | 29 |
7.2 USB-Treiber | 34 |
8 Software-Einstellungen | 38 |
8.1 IDE-Update | 38 |
8.2 Compiler | 39 |
8.3 Editor | 40 |
9 Das erste Programm | 42 |
Programmierung | 42 |
9.2 Fehlersuche | 47 |
9.2.1 Software | 49 |
9.2.2 Hardware | 59 |
10 C und Basic in einem Projekt | 61 |
11 Schutz der Programme (PIN) | 64 |
12 Anschluss externer Komponenten | 68 |
12.1 DCF-Modul | 68 |
LCD-Display 4 × 20 | 71 |
12.3 Sensoren | 75 |
12.3.1 Digitale Sensoren | 75 |
12.3.2 Analoge Sensoren | 77 |
12.4 CCI Relais-Modul | 80 |
12.5 I2C-Bus-Thermometer-Modul | 84 |
12.6 I2C-Bus-Tastatur | 88 |
13 Stringverarbeitung | 92 |
13.1 Strings in der C-Control-Pro-Umgebung | 92 |
13.2 Strings sind Arrays | 92 |
13.3 Stringfunktionen in der Bibliothek | 93 |
13.4 Stringbearbeitung – selbst gemacht | 94 |
13.5 Steuerzeichen | 99 |
13.6 Formatierung numerischer Werte | 100 |
14 Optimierung von CompactC | 102 |
14.1 Optimierung ist Programmierersache | 102 |
14.2 Optimierung Schritt für Schritt | 103 |
14.3 Switch-Anweisungen sind effizient | 105 |
14.4 Arithmetische Ausdrücke vereinfachen | 106 |
14.5 Eingliedern von Funktionen | 107 |
14.6 Einsparen von Programmcode | 109 |
14.7 Projektoptionen prüfen | 111 |
15 Optimierung von BASIC | 114 |
15.1 Optimierung ist Programmierersache | 114 |
15.2 Optimierung Schritt für Schritt | 114 |
15.3 Select-Case-Anweisungen sind effizient | 117 |
15.4 For-Schleifen benutzen | 118 |
15.5 Arithmetische Ausdrücke vereinfachen | 118 |
15.6 Eingliedern von Funktionen | 119 |
15.7 Einsparen von Programmcode | 121 |
15.8 Projektoptionen prüfen | 123 |
16 Der Preprozessor | 125 |
16.1 Definitionen | 125 |
16.2 Bedingte Kompilierung | 127 |
16.3 Einfügen von Dateien | 129 |
16.4 Preprozessor-Makros | 130 |
16.5 Vordefinierte Symbole | 132 |
16.6 Compiler-Anweisungen | 134 |
16.7 Mischen von BASIC und CompactC | 134 |
17 Interruptbehandlung | 136 |
17.1 C-Control-Pro-Interrupts | 136 |
17.2 Externe Interrupts | 139 |
17.3 Interpreter-Interrupts im Detail | 140 |
18 Multithreading | 140 |
18.1 Starten von Threads | 141 |
18.2 Konfiguration des Multithreadings | 143 |
18.3 Warten in Threads | 146 |
18.4 Threads synchronisieren | 149 |
18.5 Multithreading im Detail | 150 |
19 Anwendungen | 152 |
19.1 Voltmeter | 152 |
19.2 Heizungssteuerung mit NTC-Sensoren | 155 |
19.3 Heizungssteuerung mit Raumtemperaturregler | 164 |
19.4 Temperaturschalter mit Sensorüberwachung | 169 |
19.5 Zwei-Kanal-Thermometer | 172 |
19.6 Temperaturdifferenzschalter | 175 |
19.7 Acht-Kanal-Lauflicht | 178 |
19.8 Digital-Timer | 182 |
19.9 Stoppuhr | 189 |
19.10 Gewächshausreglung | 194 |
19.11 3-Kanal-DCF-Zeitschaltuhr | 202 |
19.12 Ein-/Ausschaltverzögerung | 212 |
20 Der Bytecode-Interpreter | 216 |
20.1 Die Speicherbereiche im Interpreter | 216 |
20.2 Die Arbeitsweise des Arithmetik-Stacks | 217 |
20.3 Beispiel: Zuweisung | 218 |
20.4 Beispiel: Funktionsaufruf | 220 |
20.5 Beispiel: if-Anweisung | 222 |
20.6 Beispiel: For-Schleife und Array-Zugriff | 223 |
20.7 Beispiel: Switch-Anweisung | 225 |
21 Anhang – Bytecode-Übersicht | 227 |
21.1 Bytecode-Übersicht | 227 |
Sachverzeichnis | 242 |