Inhalt | 6 |
1 Überblick über die Mikrocontroller | 11 |
1.1 Feature-Vergleich der Mikrocontroller | 13 |
1.2 Aufbau und Funktionsweise des PIC 16F876A | 13 |
1.2.1 Blockschaltbild | 13 |
1.2.2 Der Flash-Programmspeicher | 14 |
1.2.3 Datenverarbeitung in der ALU | 16 |
1.2.4 Das Statusregister | 16 |
1.2.5 Adressierung des RAM oder des File-Registers | 17 |
1.2.6 Aufruf von Unterprogrammen | 17 |
1.2.7 Die indirekte Adressierung | 19 |
1.2.8 Lesen und Schreiben vom internen EEPROM | 21 |
2 Die Assemblerbefehle desPIC16F876A | 24 |
2.1 Befehlsübersicht | 25 |
2.2 Detailierte Beschreibung der Assemblerbefehle | 26 |
2.2.1 Allgemeines | 27 |
2.2.2 Zahlenformate | 28 |
2.2.2.1 Binärformat | 28 |
2.2.2.2 Oktalformat | 28 |
2.2.2.3 Hexadezimalformat | 29 |
2.2.2.4 Dezimalformat | 29 |
2.2.2.5 ASCII-Format | 29 |
2.2.2.6 Zusammenfassung | 30 |
2.2.3 Logische Verknüpfungen | 31 |
2.2.4 Schiebebefehle | 37 |
2.2.5 Arithmetische Befehle | 41 |
2.2.6 Sprungbefehle | 44 |
2.2.7 Sonstige Befehle | 53 |
3 Die Programmierung MPLAB | 56 |
3.1 Installation von MPLAB | 56 |
3.2 Anpassung des Projektverzeichnisses | 57 |
3.3 Anlegen eines Projekts | 58 |
3.4 Die Arbeitsoberfläche | 61 |
3.5 Das Menü View | 65 |
3.5.1 Hardware Stack | 66 |
3.5.2 Watches | 66 |
3.5.3 Disassembly Listing | 67 |
3.5.4 EEPROM | 67 |
3.6 Breakpoints | 68 |
3.7 Simulator | 69 |
3.7.1 Grundeinstellungen | 69 |
3.7.2 Asynchroner Stimulus | 70 |
3.7.3 Zyklischer Stimulus | 71 |
3.7.4 Sonstige Stimulus Tabs | 71 |
3.8 Logicanalyser | 72 |
3.9 In-Circuit-Debugger ICD2 | 73 |
3.10 Programmieren | 80 |
3.11 Texteditor | 81 |
4 DieProgrammierschnittstelle | 82 |
4.1 Programmierung mit dem ICD2 | 82 |
4.2 Ablauf der Programmierung | 84 |
4.3 Die Konfigurationsbits | 85 |
4.3.1 Oszillator | 86 |
4.3.2 Watchdog-Timer | 87 |
4.3.3 Power-Up-Timer | 87 |
4.3.4 Brown-Out Detect | 88 |
4.3.5 Low Voltage Program | 88 |
4.3.6 Data EE Read Protect | 88 |
4.3.7 Flash Program Write | 89 |
4.3.8 Code Protect | 89 |
4.3.9 Konfigurationsbits im Überblick | 90 |
4.4 OTP-Typ | 90 |
5 Das Entwicklungs-Board | 91 |
5.1 Schaltungsbeschreibung der Hardware | 91 |
5.1.1 Netzteil | 91 |
5.1.2 Programmierschnittstelle | 92 |
5.1.3 Taktgenerierung | 92 |
5.1.4 Analoge Spannungen | 93 |
5.1.5 Taster | 93 |
5.1.6 Ausgangstreiber mit Leuchtdioden | 94 |
5.1.7 Infrarotempfänger | 94 |
5.1.8 I²C-EEPROM | 95 |
5.1.9 RS-232-Schnittstelle | 96 |
5.1.10 Display | 96 |
5.1.11 Stiftleiste für Erweiterungen | 98 |
5.2 Software | 98 |
5.2.1 Eingebundene Dateien | 98 |
5.2.2 Konfigurationsbits | 99 |
5.2.3 Definitionen | 99 |
5.2.4 Variablen | 100 |
5.2.5 Makros | 100 |
5.2.6 Programmstart | 101 |
5.2.7 Initialisierung | 102 |
6 Die Ein- und Ausgänge | 103 |
6.1 Pinbelegung PIC16F876A | 103 |
6.2 Pinfunktionen im Überblick | 104 |
6.3 Digitale Ein- und Ausgänge | 107 |
6.4 Beispielprogramm: LED-Muster | 111 |
7 Die Timer | 112 |
7.1 Der 8-Bit-Timer (Timer0) | 112 |
7.2 Der 16-Bit-Timer (Timer1) | 114 |
7.3 Das Timer2-Modul | 118 |
8 Verarbeitung analogerSignale | 121 |
8.1 Die Analog-Digital-Wandlung | 121 |
8.1.1 A/D-Wandlung nach der sukzessiven Approximation (Wägeverfahren) | 122 |
8.1.2 Übertragungsfunktion des A/D-Wandlers | 124 |
8.1.3 Berechnung des Spannungswerts | 126 |
8.1.4 Aufteilung des digitalisierten Werts | 127 |
8.2 Beispielprogramm: Voltmeter | 127 |
8.3 Die 16-Bit-Addition | 130 |
8.4 Die 16-Bit-Subtraktion | 131 |
8.5 Analyse des digitalisierten Werts | 131 |
9 Anzeige von Daten aufeinem Display | 136 |
9.1 Der Displaycontroller | 136 |
9.1.1 Zeichensatz | 137 |
9.1.2 Display Ansteuervarianten | 138 |
9.2 Display-Initialisierung | 140 |
9.3 Die Hardwareschnittstelle | 142 |
9.3.1 Unterprogramm für das Schreiben eines Kommandos | 143 |
9.3.2 Unterprogramm für das Schreiben eines Zeichens | 144 |
9.3.3 Makro für die Initialisierung des Displays | 145 |
9.4 Beispielprogramm: Hello World | 146 |
10 Anzeigen einer analogenSpannung | 149 |
10.1 Berechnung der Spannung | 149 |
10.2 Unterprogramm AD_konvertieren | 151 |
10.3 Umwandlung der Binärzahl in eine Dezimalzahl | 153 |
10.4 Das Hauptprogramm | 155 |
11 Messung des Widerstandsund der Leistung | 159 |
11.1 Die Strommessung | 159 |
11.2 Die binäre Multiplikation | 160 |
11.3 Die binäre Division | 163 |
11.4 Anzeige der berechneten Leistung | 168 |
11.5 Anzeige des berechneten Widerstands | 171 |
12 Datenübertragung über die serielle Schnittstelle (RS-232) | 177 |
12.1 Die serielle Schnittstelle RS-232 | 178 |
12.1.1 Anschluss der seriellen Schnittstelle | 178 |
12.1.2 Protokoll der RS-232-Schnittstelle | 179 |
12.2 Software zur Datenübertragung | 180 |
12.3 Verwendung der USART-Schnittstelle | 181 |
12.3.1 Einstellen der Baudrate | 182 |
12.3.2 Einstellung der Register TXSTA und RCSTA | 182 |
12.4 Beispielprogramm: PC-Steuerung | 184 |
13 Datenübertragung überden I²C-Bus | 189 |
13.1 Funktionsweise der I²C-Schnittstelle | 189 |
13.2 Ansteuerung eines EEPROM | 191 |
13.3 Beispielprogramm: Messwertspeicherung | 193 |
13.3.1 Das Unterprogramm Schreibe_EEPROM | 196 |
13.3.2 Das Unterprogramm Lese_EEPROM | 199 |
14 Schalten über eineInfrarot-Fernbedienung | 203 |
14.1 Das RC5-Protokoll | 203 |
14.2 Beispielprogramm: IR-Schalter | 208 |
15 Anhang | 215 |
Sachverzeichnis | 239 |