Komponenten eines Mikrocontrollers

Ähnliche Dokumente
$NOMOD51 $INCLUDE (reg515.inc) ; Ein Zeichen auf Tastendruck S1 senden...

Hardwareaufbau der Mikrocontroller der 51er -Familie

Speicheraufbau des AT89C5131

Praktikum Mikrorechner 4 (Bitmanipulation und Spezialregister)

Zähler- und Zeitgeber-Baugruppen

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -

Zusammenfassung der Assemblerbefehle des 8051

MOP: Befehlsliste für den Mikrocontroller 8051

EDT-REFERAT Adressierungsarten

4 Assembler für die 8051-Controller-Familie

Befehlssatz der Mikrocontroller der 51er -Familie

Architektur der Intel 8051 Familie und Grundlegende Programmierung Reto Gurtner 2005

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c

Praktikum Mikrorechner 9 (serielle Schnittstelle)

Praktikum Mikrorechner 3 (Adressierungsarten)

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

Maschinenorientierte Programmierung

Praktikum Mikrorechner 1 (Einführung)

Fachbereich Medienproduktion

Assembler und Hochsprachen

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

1. Inhaltsverzeichnis

Rechnerarchitektur Atmega Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

Teil VIII Von Neumann Rechner 1

Arithmetische und Logische Einheit (ALU)

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

MikroController der 8051-Familie

Prozessorarchitektur. Kapitel 1 - Wiederholung. M. Schölzel

Parallel-IO. Ports am ATmega128

Mikrocontrollertechnik

7.0 PWM - Pulsbreitenmodulation

Einführung in das Mikrocontroller-System 80(C)515/80(C)535

Atmel AVR für Dummies

Die 8051-Mikrocontrollerfamilie. 3. Die 8051-Mikrocontrollerfamilie

einfache PIC-Übungsprogramme

1. Übung - Einführung/Rechnerarchitektur

Die Mikroprogrammebene eines Rechners

Dateien, die nicht in das Projekt eingebunden sind, werden ohne Syntax highlight dargestellt. MiCoWi und µvision Seite 1 Uwe Wittenfeld

Der Toy Rechner Ein einfacher Mikrorechner

2

Mikrocontroller Grundlagen. Markus Koch April 2011

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur


Lösungen zum Kurs "Mikrocontroller Hard- und Software

Mikrocontrollerprogrammierung in Assembler und C

Grundlagen 8-Bit Mikrokontroller Infineon C515C-LM

Grundlagen der Programmierung II BMI Bakk.

Mikroprozessor als universeller digitaler Baustein

CPU Speicher I/O. Abbildung 11.1: Kommunikation über Busse

Von-Neumann-Architektur

Mikrocontroller-8051-Familie und AT89C51

Einführung in die Welt der Microcontroller

L3. Datenmanipulation

Das Prinzip an einem alltäglichen Beispiel

Zuse-Computer: Z1. erster Rechner mit binären Zahlen. Entwicklung der computergerechten. (Grundlage für IEEE-754) funktionierte leider nie zuverlässig

80C535-Mikrocontroller-Board im Streichholzschachtelformat

8.0 Erweiterung mit dem 8 Bit D/A Maxim MAX5382

4 Der Von-Neumann-Rechner als Grundkonzept für Rechnerstrukturen

3. Rechnerarchitektur

Computer-Architektur Ein Überblick

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Grundlagen der Informatik

Einführung in AVR-Assembler

Microcomputertechnik

LCD-Display am MVUS (nur einfachste Betriebsweise im Text Display Modus - ausführliche Beschreibung )

Aufgaben zur Attiny-Platine

ZENTRALEINHEITEN GRUPPE

Inhaltsverzeichnis VII.

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Mikrocontroller von Markus Koch April 2011

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Teil 1: Digitale Logik

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Autonome Mobile Systeme. Dr. Stefan Enderle

Übungscomputer mit Prozessor Bedienungsanleitung

Projekt Nr. 15: Einen elektronischen Würfel erstellen

Mikrocontroller-Programmierung

Highspeed- Controller-Board

a. Flipflop (taktflankengesteuert) Wdh. Signalverläufe beim D-FF

Tag 2 Eingabe und Interrupts

Kap 4. 4 Die Mikroprogrammebene eines Rechners

HD44780-LC-Display am Atmel-AVR Mikrocontroller

ATMega2560Controllerboard

Technische Informatik. Der VON NEUMANN Computer

Rechner Architektur. Martin Gülck

Die Daten (Befehle und numerische Daten) werden in Form von BIT-Folgen verarbeitet.

Epromologie, Grundwissen

Johannes Kelper Universität Linz. Institut für Elektrische Messtechnik. Dokumentation. ATmeag8-USB Modul. Bernd R. Arminger ATmega8-USB Modul 1

Übung "Struktur von Mikrorechnern" (SMR)

Prof. Dr. Pollakowski

Prozessor HC680 fiktiv

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur

MSP 430. Einführung. Was kann er? Hauptthemen. Wie sieht er aus? 64 / 100 polig. Was kann er? MSP 430 1

Fernseh-Simulator Microcontroller ATMEL 89C Bit Betriebsspannungsbereich von 9-35 Volt 8 leistungsfähigen Ausgänge 16 Programmspeicherplätze

Mikroprozessoren. Aufbau und Funktionsweise. Christian Richter. Ausgewählte Themen der Multimediakommunikation SS 2005

Der Übungsrechner

INFORMATIK Oberstufe. Funktionsweise eines Rechners

Datenpfad einer einfachen MIPS CPU

Transkript:

MC 27.04.2017 Komponenten eines Mikrocontrollers - Zentraleinheit: CPU (Central Processing Unit): 4, 8, 16 oder 32 Bit Datenwortbreite - Arbeitsspeicher: RAM (Random Access Memory = Speicher mit wahlfreiem Zugriff) intern: auf dem Chip integriert extern: zusätzlicher Chip anschließbar - Programmspeicher: ROM (Read Only Memory = Nur-Lese Speicher) ROM: bei Fertigung programmiert ( embedded controller) EEPROM: electrically erasable programmable ROM (löschbar) - Ein/Ausgabe Schaltungen: Ports - parallele Ports (digital) - serielle Schnittstellen - USB Schnittstelle - Zeitgeber/Zähler: Timer 1 / 26 MCT_Vorlesung_02_SS2017.doc

MC 27.04.2017 Die mit (1) und (2) gekennzeichneten Anschlüsse stehen nicht gleichzeitig zur Blockdiagramm des AT89C5131 Verfügung Quelle: Datenblatt des AT89C5131 2 / 26 MCT_Vorlesung_02_SS2017.doc

MC 27.04.2017 Pinbelegung des AT89C5131 im PLCC-Gehäuse Einige Pins sind mehrfach belegt. Beispiel: Pin 20 Entweder P3.0 (digitaler Ein/Ausgang) oder RxD (serielle Schnittstelle) PLCC = Plastic Leaded Chip Carrier Ist eine mögliche Gehäuseform Sie hat 52 Pins (= Anschlüsse) Quelle: Datenblatt des AT89C5131 3 / 26 MCT_Vorlesung_02_SS2017.doc

MC 27.04.2017 Funktion einiger wichtiger Anschlüsse siehe: Datenblatt - Spannungsversorgung (Pins V..) - Quarz-Anschluß (XTAL...) - Reset-Leitung (RST) (Negation bedeutet: 0 V ist logisch 1) - Steuerleitungen für externen Speicher (EA, ALE, PSEN) (EA = External Address, ALE = Address Latch Enable, PSEN = Programm Store ENable) - Port Pins (P1.4 = Bit 4 von Port 1): je 8 Pin pro Port teilweise mit vordefinierten Bedeutungen z.b.: P3.0 = RxD (Receive Data der seriellen Schnittstelle) - USB-Schnittstelle (D+, D-) 4 / 26 MCT_Vorlesung_02_SS2017.doc

MC 27.04.2017 Aufbau der Zentraleinheit (CPU) besteht aus: - Rechenwerk (ALU = Arithmetic Logical Unit) führt Addition, Vergleich, Bitoperation etc. aus - Befehlsdekoder setzt Befehlscodewort in entspr. Aktion um - Ablaufsteuerung erzeugt alle notwendigen Takte und Steuersignale - Programmadressregister (PC = Programm Counter, Programmzähler ) (16 Bit max 64 KByte Programm) enthält die Adresse des aktuellen Befehlscodeworts im Programmspeicher 5 / 26 MCT_Vorlesung_02_SS2017.doc

MC 27.04.2017 Abarbeitung eines Programmes 1) Ein Befehlscodebyte aus Programmspeicher holen Adresse steht im Programm Counter ( bei Reset: Program Counter wird auf #0000H gesetzt ) Programm Counter um 1 erhöhen 2) Falls Befehl aus mehreren Byte besteht: Schritt 1) wiederholen 3) Befehl ausführen: falls Sprungbefehl: Programm Counter mit neuer Adresse laden weiter mit Schritt 1) jeder Befehl besteht aus mindestens 1 Byte Bearbeitungszeit: mindestens 1 Maschinenzyklus z.b.: bei 12 MHz Quarz: 1 Zyklus = 1 s (10-6 s) bei 48 MHz Quarz: 1 Zyklus = 250 ns (10-9 s) 6 / 26 MCT_Vorlesung_02_SS2017.doc

MC 27.04.2017 Das direkt adressierbare RAM der AT89C5131 hat mehrere RAM-Bereiche (Random Access Memory) für den Einstieg an einfachsten: das direkt adressierbare RAM Aufbau: 256 Byte Speicherplatz H = hexadezimal Adressbereich 00H FFH obere Hälfte = SFR (Special Function Register) oft mit Hardware verknüpft untere Hälfte = Datenspeicher (frei programmierbar) für Variablen, Stack usw. SFR Datenspeicher 128 Byte 128 Byte 7 / 26 MCT_Vorlesung_02_SS2017.doc

MC 27.04.2017 Einige Details... insgesamt 256 ( = 2 8 ) Adressen von 00H bis FFH: a) Adressen 80H - FFH (128 Byte) = Register mit besonderen Funktionen (SFR = Special Function Register) darin sind nicht alle Adressen benutzt z.b.: A (Register A), B (Register B) P0, P1,... (Port 0, Port 1,...) b) Adressen 00H - 7FH (128 Byte) = allgemeiner Datenspeicher darin: 4 Registerbänke aus je 8 allgemeinen Registern z.b.: R0, R1,... R7 16 Byte, in denen jedes Bit einzeln addressierbar ist = bitadressierbare Register Register A Port-Register P1 Bereich der Special Function Register (SFR) frei nutzbares internes RAM bitadressierbar Registerbank 3 Registerbank 2 Registerbank 1 Registerbank 0 FFH E0H 90H 80H 7FH 20H-2FH 18H-1FH 10H-17H 08H-0FH 00H-07H 8 / 26 MCT_Vorlesung_02_SS2017.doc

Einige Speicherbereiche und Special Function Register (SFR) des AT89C5131 (Auswahl, unvollständig) 2 7 Bit 2 0 2 7 Bit 2 0 7FH F0H B * 7EH byteadressierbarer interner Datenspeicher E0H ACC * 31H D0H PSW * 30H 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H CDH TH2 2EH 77H 76H 75H 74H 73H 72H 71H 70H CCH TL2 bitadressierbarer interner Datenspeicher C8H T2MOD 21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H C0H P4 * 20H 07H 06H 05H 04H 03H 02H 01H 00H 1FH Register 7 B0H P3 * 1EH Register 6 Registerbank 3 A8H EAL EC ET2 ES ET1 EX1 ET0 EX0 IEN0 * 19H Register 1 A0H P2 * 18H Register 0 17H Register 7 9BH BRR TBCK RBCK SPD SRC BDRCON 16H Register 6 9AH BRL Registerbank 2 99H SBUF 98H SM0 SM1 SM2 REN TB8 RB8 TI RI SCON * 11H Register 1 10H Register 0 90H P1 * 0FH Register 7 0EH Register 6 8DH TH1 Registerbank 1 8CH 8BH TH0 TL1 09H Register 1 8AH TL0 08H Register 0 89H Gate1 C/T1 M11 M10 Gate0 C/T0 M01 M00 TMOD 07H Register 7 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON * 06H Register 6 Registerbank 0 83H 82H DPH DPL 01H Register 1 81H SP 00H Register 0 80H P0 * * diese Register sind bitadressierbar 9 / 26

Wichtige Spezialregister 1) Program Status Word (PSW - Register) gibt Auskunft über Ergebnis von Rechenoperationen 7 Bits (sogennante Flags (Flaggen)) sind benutzt z.b.: Überlauf bei Rechenoperation,... CY AC F0 RS1 RS0 OV - P PSW D0H 2) Stapelzeiger (SP = Stackpointer) einige Befehle stapeln Daten zur Zwischenspeicherung z.b.: Unterprogrammaufruf: Rücksprungadresse SP zeigt auf die nächste freie Stelle des Datenstapels Stack wächst nach oben, nach Reset: auf 07H gesetzt Inhalt bei Reset: 07H SP 81H 10 / 26 MCT_Vorlesung_02_SS2017.doc

3) Externer Datenzeiger, bestehend aus zwei 8-Bit Registern: oder: DPTR = Datapointer, 16 Bit DPH = Datapointer High Byte, 8 Bit DPL = Datapointer Low Byte, 8 Bit bilden zusammen das 16-Bit Register DPTR DPH DPL 83H 82H für den Zugriff auf max. 64 kbyte externes RAM Vorgehensweise: 1.) Adresse in den Datenzeiger laden 2.) Spezialbefehl ( MOVX... ) lädt Daten in Register A Problem: langsam, daher häufig benötigte Daten im internen RAM ablegen! 11 / 26 MCT_Vorlesung_02_SS2017.doc

Bitadressierung (1) Einige Spezialregister sind bitadressierbar = jedes Bit einzeln ansprechbar Setzen und Löschen von Bits: z.b.: setb p1.0 ; Bit 0 von Port 1 auf 1 setzen (set bit) clr p1.3 ; Bit 3 von Port 1 auf 0 setzen (clear) Anwendung: einzelne LEDs einschalten (clr) oder ausschalten (setb) 12 / 26 MCT_Vorlesung_02_SS2017.doc

Übung Aufgabe: Schreiben Sie ein Programm, das mit Hilfe eines Bitbefehls nur die zweite Leuchtdiode von rechts des Experimentalsystems (Port 1) einschaltet. Hinweise: Bit der LED = 0 LED leuchtet Bit der LED = 1 LED leuchtet nicht clr = löschen (Bit = 0) setb = setzen (Bit = 1) Bezeichnung der Bits: p1.0 = Bit 0 (niederwertigstes Bit, Wertigkeit 2 0 = 1, ganz rechts) P1.7 = Bit 7 (höchstwertigstes Bit, Wertigkeit 2 7 = 128, ganz links) 13 / 26 MCT_Vorlesung_02_SS2017.doc

Tastenanschaltung an Port 0 Taste nicht gedrückt: Port Bit ist 1 Merke: Taste gedrückt Bit = 0 Taste gedrückt: Port-Bit ist 0 Pinbelegung: Taste 0 = P0.0 Taste 1 = P0.1 Taste 2 = P0.2 Taste 3 = P0.3 14 / 26 MCT_Vorlesung_02_SS2017.doc

bedingte Sprungbefehle: Bitadressierung (2) z.b.: jb a.3, rel ; springe, wenn Bit 3 des Register A gesetzt ist (1) jnb p0.7, rel ; springe, wenn Bit 7 von Port 0 nicht gesetzt ist (0) Anwendung: Tasten abfragen: jb p0.0, ziel springt zu Sprungmarke ziel, wenn die Taste nicht gedrückt ist (d.h. Bit = 1) jnb p0.0, ziel springt zu Sprungmarke ziel, wenn die Taste gedrückt ist (d.h. Bit = 0) 15 / 26 MCT_Vorlesung_02_SS2017.doc

Übung (1) Aufgabe 1: Speichern Sie das Programm in einer Datei, übersetzen Sie es und testen Sie es. $NOMOD51 $INCLUDE (reg515.inc) org 0 start: ziel: jnb p0.0, ziel mov p1,#055h jmp start mov p1,#0aah jmp start end Welche Wirkung hat dieses Programm? Beobachten Sie dabei den Zustand der Leuchtdioden. Verändern Sie den Zustand von Port 0, indem Sie die Taste 1 drücken. 16 / 26 MCT_Vorlesung_02_SS2017.doc

Übung (2) Aufgabe 2: Schreiben Sie ein Programm, das den Zustand der Taste 1 abfragt. Solange diese Taste gedrückt ist, sollen die Leuchtdioden 0 bis 3 aufleuchten. Wenn die Taste nicht gedrückt wird, sollen die Leuchtdioden 4 bis 7 leuchten. Aufgabe 3: Schreiben Sie ein Programm, das den Zustand aller Tasten abfragt. Solange Taste 1 gedrückt ist, soll die Leuchtdiode 0 aufleuchten, wenn Taste 2 gedrückt ist, soll die Leuchtdiode 1 aufleuchten usw. Hinweise: Bit = 0 LED leuchtet Taste gedrückt Bit = 0 P1.0 LED 0 P0.0 Taste 1 P1.1 LED 1 P0.1 Taste 2 P1.2 LED 2 P0.2 Taste 3 P1.3 LED 3 P0.3 Taste 4 P1.4 LED 4 P1.5 LED 5 P1.6 LED 6 P1.7 LED 7 17 / 26 MCT_Vorlesung_02_SS2017.doc

Schiebebefehle Sinn: alle Bits um eine Position verschieben rr a rl a ergibt Bits in A nach rechts schieben (rotate right) Bit 0 wird in Bit 7 geschoben 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 Bits in A nach links schieben (rotate left) Bit 7 wird in Bit 0 geschoben Anwendung: Lauflicht auf den LEDs programmieren 18 / 26 MCT_Vorlesung_02_SS2017.doc

Übung Aufgabe 1: Schreiben Sie ein Programm, das zunächst einmalig eine Leuchtdiode des Experimentalsystems einschaltet. Danach soll dieses Bitmuster immer wieder (endlos) nach rechts verschoben werden (Lauflicht) Hinweise: rr p1 funktioniert nicht! Warum??? Der Lauflichteffekt ist nur im Simulator sichtbar! Warum??? Aufgabe 2: Schreiben Sie ein Programm, das zunächst einmalig eine Leuchtdiode des Experimentalsystems einschaltet. Danach soll dieses Bitmuster immer dann um eine Bitposition nach rechts verschoben werden, wenn eine Taste des Experimentalsystems gedrückt worden ist Hinweise: Warten auf Tastendruck warte: jb p0.1, warte 19 / 26 MCT_Vorlesung_02_SS2017.doc

Tastenprellen Problem: mechanische Kontakte prellen beim Schließen ab 5V 0V einige ms Gefahr: Programm erkennt fälschlicherweise mehrfaches Tastendrücken Abhilfe: 1) auf 0 Zustand prüfen 2) 10 ms warten 3) auf 0 Zustand prüfen, wenn nicht zurück zu 1 20 / 26 MCT_Vorlesung_02_SS2017.doc

Übung Aufgabe: Speichern Sie das Programm in einer Datei, übersetzen Sie es und testen Sie es (Taste 1 drücken). $NOMOD51 $INCLUDE (reg515.inc) org 0 start: jb p0.0, start ; Tastendruck abwarten cpl p1.0 ; LED Zustand umschalten halten: jnb p0.0, halten ; Taste loslassen abwarten jmp start ; Sprung zum Anfang end Was versteht man unter Tastenprellen und wodurch macht sich das Tastenprellen hier bemerkbar? 21 / 26 MCT_Vorlesung_02_SS2017.doc

Verzögerungsschleifen Sinn: eine bestimmte Zeit verstreichen lassen Beispiel: mov a,#250 ; Dauer = 1 Zyklus = 1 s warten: dec a ; = 1 s nop ; = 1 s jnz warten ; Dauer = 2 Zyklen = 2 s Befehl dec a = dekrementieren, a um 1 verringern nop = einen Zyklus warten (no operation) Dauer der Schleife: 1 s + 1 s + 2 s = 4 s (dec + nop + jnz) Schleife wird 250 mal durchlaufen, dann ist der Inhalt von a = 0 Verzögerungszeit: 1 s + (250 * 4 s) = 1001 s 1 ms 22 / 26 MCT_Vorlesung_02_SS2017.doc

Schleifen ineinander verschachteln : Größere Verzögerungszeiten Beispiel: mov r0,#20 ; äußere Schleife warten2: mov r1,#250 ; innere Schleife warten1: djnz r1,warten1 djnz r0,warten2 Registerbank hat 8 Register: r0 bis r7 = Speicherplätze für 8 Variablen (je 8 Bit) Für diese Register gibt es einige Spezialbefehle, z.b. djnz djnz = decrement and jump if not zero = Inhalt des Registers um 1 verringern, danach Sprung, falls Inhalt nicht 0 Verzögerungszeit: innere Schleife ca. 0,5 ms insgesamt ca. 10 ms (andere Möglichkeit: Timer-Baugruppe programmieren) 23 / 26 MCT_Vorlesung_02_SS2017.doc

Übung Aufgabe: Speichern Sie das Programm in einer Datei, übersetzen Sie es und testen Sie es (Taste 1 drücken). Nun sollte das Tastenprellen kein Problem mehr sein... $NOMOD51 $INCLUDE (reg515.inc) org 0 start: jb p0.0, start ; Tastendruck abwarten mov r0,#20 ; äußere Schleife warten2: mov r1,#250 ; innere Schleife warten1: djnz r1, warten1 djnz r0, warten2 jb p0.0, start cpl p1.0 ; Tastendruck prüfen ; LED Zustand umschalten halten: jnb p0.0, halten jmp start ; Taste loslassen abwarten ; Sprung zum Anfang end 24 / 26 MCT_Vorlesung_02_SS2017.doc

Increment und Decrement Der Mikrocontroller kann Addieren, subtrahieren, multiplizieren z.b.: inc a Inhalt von A um 1 erhöhen (increment) 0 0 0 0 0 0 0 0 = 0 dezimal 0 0 0 0 0 0 0 1 = 1 dezimal 0 0 0 0 0 0 1 0 = 2 dezimal 0 0 0 0 0 0 1 1 = 3 dezimal 0 0 0 0 0 1 0 0 usw... dec a Inhalt von A um 1 verringern (decrement) Anwendung: Binärzähler auf den LEDs programmieren 25 / 26 MCT_Vorlesung_02_SS2017.doc

Übung Aufgabe: Schreiben Sie ein Programm, das einen 8-Bit-Binärzähler auf den Leuchtdioden erzeugt. Zunächst sollen alle LEDs ausgeschaltet sein. Bei jedem Tastendruck auf Taste 1 soll der Zählerstand um 1 erhöht werden. Hinweis: Die Bits des Zählers müssen vor der Ausgabe invertiert werden, falls bei einer 1 in der Binärzahl eine LED leuchten soll. 26 / 26 MCT_Vorlesung_02_SS2017.doc