MC
20.04.2017
Mikrocomputertechnik (MC)
Bitte nehmen Sie sich ein Exemplar der bereitliegenden Kopien
MC
20.04.2017
Mikrocomputertechnik (MCT) Lehrkräfte: 1.)
Prof. Dr.-Ing. Martin Pollakowski Raum B2.1.04, Tel.: - 226, E-Mail:
[email protected]
2.)
Dipl.-Ing. Peter Mroczek Raum: B2.1.16, Tel.: - 228 E-Mail: peter.mroczek@ w-hs.de
Vorlesung/Praktikum/Übung: Raum B3.1.09 (PC-Pool) E-Mail-Liste:
falls noch nicht auf der Liste… bitte per E-Mail anmelden, Stichwort "Mikrocomputertechnik"
MC
20.04.2017
Unterlagen zur Vorlesung - Befehlssatz der 8051-Familie
Befehlssatz8051.pdf Kopie, E-Mail, Server
- Datenblatt des AT89C5131
www.atmel.com ggf. herunterladen
- Development Tools
www.keil.com/c51/pk51kit.asp ggf. herunterladen
- Praktikumsbeschreibung
AnleitungEntwicklungsumgebung.pdf Kopie, E-Mail, Server
- Beschreibung des AT89C5131 Experimentalsystems
Kurzbeschreibung.pdf auf dem Server, ggf. herunterladen
MC
20.04.2017
Lernziele Inhalte: - Assembler-Programmierung - Mikrocontrollertechnik - C-Programmierung
Prüfung Form: Dauer: Hilfsmittel:
Klausur (schriftlich) 90 Minuten Taschenrechner (Befehlssatz wird mit der Klausur ausgeteilt)
Zulassungsvoraussetzung:
erfolgreich absolviertes Praktikum
Methoden Vorlesung, Praktikum und Übung (4 h pro Woche, seminaristischer Unterricht) Pflicht: aktive Teilnahme an mindestens 6 Terminen Prüfung (schriftlich, 2 h) mit Zulassungsvoraussetzung „Praktikum bestanden“
MC
20.04.2017
Literatur zum Thema Mikrocontroller Norbert Heesel , Werner Reichstein: „Mikrocontroller Praxis - Ein praxisorientierter Leitfaden für die Hard- und Softwareentwicklung auf der Basis der 80(C)51xFamilie“, Vieweg Verlag, 1993 (Bibliothek: TWJ 26) Jürgen Walter: „Mikrocomputertechnik mit der 8051-Controller Familie - Hardware, Assembler, C“, Springer Verlag, 1996 (Bibliothek: TWJ 46) WWW-Seite der Fa. Atmel: www.atmel.com WWW-Seite der Fa. Keil: www.keil.com Von den Firmen. Atmel und Keil sind die in den Übungen verwendeten Systeme und Programme. Über die Web-Seite können kostenlose Programme kopiert werden.
MC
20.04.2017
Mikrocontroller = ein vollständiger Universalrechner auf einem Chip
am Beispiel des AT89C5131-Controller
→ Einsatzgebiete: Programmierbare Steuerungen aller Art
MC
20.04.2017
Mikroprozessor - Mikrocontroller Mikroprozessor: Integrierte Schaltung zur programmgesteuerten Abarbeitung von arithmetischen und logischen Rechenoperationen = CPU (central processing unit) Beispiel: Intel Pentium Prozessor PC = Prozessor + diverse zusätzliche Bausteine (RAM, ROM, ...) optimiert auf hohe Rechenleistung Mikrocontroller: Mikroprozessor + zusätzliche Bausteine auf einem Chip optimiert auf minimalen Schaltungsaufwand kleinster Computer= 1 Mikrocontroller + 1 Quarz + Batterie für “single chip“-Lösungen Beispiel: Intel 8051 und Varianten
MC
20.04.2017
Warum sind Mikrocontroller so weit verbreitet ? - Mikrocontrollerschaltungen sind preiswert und flexibel durch Massenproduktion niedriger Stückpreis statt festverdrahteter Logik Programm Programme können bei Bedarf geändert werden meist geringer Programmieraufwand (kleine Programme) Programmierung in Assembler oder Hochsprache ( C ) - Aufbau intelligenter Peripherie entlastet den Hauptprozessor
MC
20.04.2017
Mikrocontroller-Familien Mikrocontrollerfamilie = Mikrocontroller mit gleicher Assembler-Programmiersprache = gleiche Zentraleinheit (CPU = Central Processing Unit) hier: “8051 Familie” → abgeleitet vom Intel 8051 → Siemens SAB80535 (zuletzt im Praktikum eingesetzt) → Atmel AT89C5131 (aktuell im Praktikum eingesetzt) und viele weitere Varianten... Besonderheiten des AT89C5131:
weitere Familien:
integrierte USB-Schnittstelle 8051-kompatibel interne Flash-Speicher (dauerhaft programmierbar)
Atmel AVR, PIC-Mikrocontroller usw...
MC
20.04.2017
vereinfachtes Blockdiagramm des AT89C5131 ... für die ersten Programmierversuche ... Port 0 = Acht Eingänge, an denen im Praktikum einige Tasten ange-schlossen sind
Port 1 = Acht Ausgänge, an denen im Praktikum einige LEDs angeschlossen sind Port 0
CPU
Port 1
CPU = Zentraleinheit, verarbeitet die Befehle des Mikrocontrollerprogramms
MC
20.04.2017
Wie programmiert man Mikrocontroller ? a) in Assemblersprache:
Das Programm beginnt an der Sprungmarke start mov = Datentransport (move = bewege)
start:
mov p1,#00011111B jmp start
b) in Hochsprache, meist „C“: while(1) { P1 = 0x1F; }
p1 = Port 1 = Ziel des Transports #00011111B = eine konstante binäre Zahl jmp = Spung (jump) zur Marke start
Der „Variablen“ P1 wird immer wieder die Hexadezimalzahl 1F zugewiesen while(1) = Endlosschleife 0x... → Hexadezimalzahl 1F hexadezimal = 0001 1111 binär
MC
20.04.2017
Mikrocomputertechnik-Praktikum Simulator Entwicklungsumgebung
Kommunikationsprogramm Programm senden und starten
„Betriebssystem“ Bootloader
Serielle Verbindung über USB
Personalcomputer Hardware und Software des MC-Praktikums
Mikrocomputer Experimentalsystem
MC
20.04.2017
Begriffe - Entwicklungsumgebung = ein Programm zum Erstellen und Übersetzen von Mikrocontroller-Programmen Keil Vision
- Experimentalsystem = eine Mikrocomputerschaltung für Experimentierzwecke AT89C5131 Experimentalsystem
- Simulator = ein Programm, um Mikrocontrollerprogramme am PC zu testen SIM80535
- Betriebssystem des Experimentalsystems = ein Programm, mit dem man Programme über die serielle Schnittstelle laden und starten kann Bootloader
MC
20.04.2017
Hausaufgabe Eigene Mikrocontroller-Programmierumgebung zuhause einrichten Diese Aufgaben sollen zuhause bearbeitet werden (Hausaufgabe). In dieser Aufgabe sollen Sie sich eine eigene Programmierumgebung zuhause einrichten, ein erstes Assemblerprogramm schreiben und das Programm in einem Simulator testen. Eine „Installations- und Bedienungsanleitung“ steht zum Download bereit: http://www3.w-hs.de/fb01/02-Informatik/
Die Aufgabe ist für das von Ihnen benutzte Betriebssystem zu lösen (freie Auswahl). Für die am häufigsten benutzten Betriebssysteme finden Sie anbei einige Hinweise: Windows Die im Praktikum verwendete Entwicklungsumgebung „Keil uVision“ (Keil C51 Evaluation Kit) kann beim Hersteller heruntergeladen werden (http://www.keil.com/c51/pk51kit.asp). Der Simulator für den 80535 Mikrocontroller (teilweise baugleich mit dem AT89C5131) ist im Internet auf der folgenden Web-Seite zu finden: http://personales.mundivia.es/hvasquez/sim535/ LINUX / MAC OS (Apple) Informationen zu 8051-Entwicklungsumgebungen für Linux bzw. für MAC OS liegen derzeit nicht vor. Für Hinweise bin ich aber dankbar. Evtl. funktioniert eine Windows-Emulation. Umfang der Hausarbeit: -
Installieren Sie die Entwicklungsumgebung und den Simulator auf Ihrem PC. Geben Sie das in der Installationsanleitung („AnleitungEntwicklungsumgebung.pdf“) angegebene Beispielprogramm ein, übersetzen Sie es und testen Sie es im Simulator.
MC
20.04.2017
Erstellung von Mikrocontrollerprogrammen 1. Schritt:
Programmtext editieren:
ergibt: prog.a51
= Textdatei 2. Schritt:
„Build Target“
in der Keil-Entwicklungsumgebung
a) Übersetzen mit Assembler: = Binärdatei, Fehlermeldungen in prog.lst (Listing)
ergibt: prog.obj und prog.lst
b) Linken, mit Linker: ergibt: prog.abs = Zusammenbinden von Teilprogrammen, Info in prog.map und prog.map c) Umwandlung in Intel Hex-File: = Textdatei im Spezialformat für Programmiergeräte 3. Schritt: oder
ergibt: prog.hex
Listing in den Simulator laden, um Programm zu simulieren Hex-File in das Experimentalsystem laden, um Programm zu testen
MC
20.04.2017
Assembler-Befehle Beispiele: 1)
Register = Speicherplatz („Variable“) im Mikrocontroller mit spezieller Funktion. Beispiele: A, B. P0, P1, PC ...
DEC
;Inhalt des Registers A dekrementieren
Befehlscode = 14H (1 Byte, Dauer: 1 Zyklus) (Register A = Akkumulator, Speicher für Rechenoperationen) 2)
MUL AB
;Register A und Reg. B multiplizieren
Befehlscode = A4H (1 Byte, Dauer: 4 Zyklen) (Register B: Hilfsregister für Rechenoperationen) 3)
ADD A,#05H
; 5 zum Inhalt von A addieren
Befehlscodes = 24H, 05H
(2 Byte, Dauer: 1 Zyklus)
siehe auch: Befehlssatz8051.doc = Liste aller Assemblerbefehle = Klausurhilfsmittel
MC
20.04.2017
Aufbau eines Assemblerprogramms $..
= Anweisungen für den Assembliervorgang
→$NOMOD51 = nicht die im Assembler eingebauten Namen der 8051 Familie nehmen →$INCLUDE (reg515.inc) = Namen des 80515 aus Datei lesen (für AT89C5131) ;
= Kommentare: auch hinter Anweisungen möglich, jedoch nicht davor
org
= legt Adresse im Programmspeicher fest z.B.: org 0 = Programm startet bei Adresse 0
mov
= Assemblerbefehl
: end
vor einem Assemblerbefehl =
Name einer Sprungmarke als Ziel für Sprungbefehle
= Ende des Quellcodes, kein ausführbarer Befehl (unbedingt nötig !)
MC
20.04.2017
Ein vollständiges Assembler-Programm org start: mov mov mov mov jmp end
# bedeutet „Konstante“
0 a, #55H p1, a a, #0AAH p1, a start
; Konstante Zahl 55Hex in Register A laden ; Register A nach Port 1 schreiben ; Konstante Zahl AAHex in Register A laden ; siehe oben ; Sprung zu start
= endlose Schleife, in der abwechselnd 55H und AAH in das Port 1 geschrieben wird Hinweis:
mov... = move = Datentransport, Ziel steht links !!! jmp... = jump = Sprung Groß- und Kleinschreibung möglich Konstanten müssen mit Zahl beginnen: #0AAH statt #AAH
MC
20.04.2017
Übung Einführung in die Entwicklungsumgebung In diesem Versuch lernen Sie, Assemblerprogramme für den Mikrocontroller AT89C5131 zu schreiben. Sie finden an Ihrem Versuchsplatz einen PC, an dessen USB-Schnittstelle ein Mikrocontroller-Experimentalsystem angeschlossen ist. Sollte das Experimentalsystem noch nicht angeschlossen sein, dann lassen Sie sich bitte ein System (blauer Koffer) aushändigen und schließen Sie das beiliegende USB-Kabel am rechten USB-Anschluß der Front des PCs an. Das Experimentalsystem wird über die USB-Schnittstelle mit Energie versorgt. Falls die rote Leuchtdiode D9 nicht leuchtet, bitte Schiebeschalter S5 (Ein/Aus) betätigen. Beispielprogramm: $NOMOD51 $INCLUDE (reg515.inc) org 0 start:
mov p1,#01111011B jmp start end
Aufgabe: Speichern Sie das Programm in einer Datei (z.B.: v1a1.a51), übersetzen Sie es und testen Sie es danach im Simulator und im Experimentalsystem. Welche Wirkung hat dieses Programm im Experimentalsystem? In der „Installations- und Bedienungsanleitung für die Mikrocontroller-Entwicklungsumgebung, das Mikrocontroller-Experimentalsystem und den Mikrocontroller-Simulator“ finden Sie eine schrittweise Anleitung für diese Aufgabe.
MC
20.04.2017
Funktionsprinzip der Leuchtdioden mit Schalter:
+5V
+5V
aus 0V
ein
mit Mikrocontroller:
Leuchtdiode (LED) Widerstand zur Strombegrenzung
0V
+5V
Spannungsversorgung mit + 5 Volt
+5V
aus
ein
Merke: Bit = 1 → Led aus
P1.0 = 1
Port-Bit = 1 (high) LED = leuchtet nicht
P1.0 = 0
Port-Bit = 0 (low) LED leuchtet
Bit = 0 → Led ein
MC
20.04.2017
Portregister Jedes Bit stellt den Zustand eines Port-Pins dar P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
a) Port als Eingang benutzt: Register nur lesen 0 = es liegt 0 Volt an P0.0 1 = es liegen 5 Volt an
P0
80H
b) Port als Ausgang benutzt: Schreiben möglich (auch bitweise) 0 = 0 Volt ausgeben P0.0 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 1 = 5 Volt ausgeben nach erstmaligem Schreiben: Lesen bringt zurück was geschrieben wurde nicht den tatsächlichen Zustand (z.B. bei Kurzschluß) (siehe: Read-Modify-Write Befehle)
P1 alle Port-Register haben diesen Aufbau, d.h. Port P0 bis P6
90H
MC
20.04.2017
Leuchtdiodenschaltung an Port 1
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
MC
20.04.2017
Hinweise zur Assemblerprogrammierung - Groß- und Kleinschreibung der Assembler-Befehle wird nicht unterschieden d.h.
mov = MOV
- Vor den Präprozessor-Anweisungen sind keine Kommentare erlaubt d.h.
;kommentar $Include ist nicht erlaubt
- Es dürfen keine Sprungmarken benutzt werden, die den Namen von Bits haben (z.B. T0, T1 etc.) d.h.
T0: mov ... ist nicht erlaubt
- Die Befehle jmp und call werden von dem Assembler automatisch in einen geeigneten Sprungbefehl oder Unterprogrammaufruf umgesetzt d.h.:
aus jmp wird sjmp, ajmp oder ljmp aus call wird: acall oder lcall
MC
20.04.2017
Wichtige Assemblerbefehle Datentransportbefehle: mov ... movx ... movc ...
im internen RAM ins externe RAM (extern) aus dem Programmspeicher (code)
unbedingte Sprungbefehle: sjmp ...
kurzer relativer Sprung über max +127 bzw. -128 Byte (short) ajmp ... Sprung innerhalb von 2 kByte (absolute) (die ersten 5 Bit vom PC übernommen) ljmp ... langer Sprung, max 64 kByte (long) (im Assembler: jmp eingeben, wird automatisch ersetzt)
bedingte Sprungbefehle: jz ... jnz ...
Sprung, wenn Register A = 0 (jump zero) falls A nicht gleich 0 (jump if not zero)
MC
20.04.2017
Übung Aufgabe 1: Schreiben Sie ein Programm, das alle Leuchtdioden des Experimentalsystems einschaltet.
Aufgabe 2: Schreiben Sie ein Programm, das vier der acht Leuchtdioden des Experimentalsystems einschaltet.