MC Mikrocomputertechnik (MC) Bitte nehmen Sie sich ein Exemplar der bereitliegenden Kopien

MC 20.04.2017 Mikrocomputertechnik (MC) Bitte nehmen Sie sich ein Exemplar der bereitliegenden Kopien MC 20.04.2017 Mikrocomputertechnik (MCT) ...
Author: Ruth Schubert
11 downloads 1 Views 433KB Size
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.