Vorlesungsfolien Termin 4

Maschinenorientierte Programmierung
Prof. Dr. Sven-Hendrik Voß | Sommersemester 2015
Technische Informatik (Bachelor), Semester 2
Termin 4, 04.05.2015
Seite 2
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Inhaltsverzeichnis
Themen und Termine
Lernziele
Controller- und Prozessorfamilien
Eigenschaften der 8051 Architektur
Aufbau des Mikrocontrollers 8051
Programmiermodell des 8051 Mikrocontrollers
Speichermodell des 8051 Mikrocontrollers
Zusammenfassung
Sommersemester 2015
Seite 3
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Themen und Termine - Seminaristischer Unterricht
Seminaristischer Unterricht (SU): Zug 1 im Raum B-401, montags 10:00 11:30 Uhr, Zug 2 im Raum B-321, montags 12:15 - 13:45 Uhr
Termin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Datum
13.04.
20.04.
27.04.
04.05.
11.05.
18.05.
25.05.
01.06.
08.06.
15.06.
22.06.
29.06.
06.07.
13.07.
20.07.
27.07.
Themen
Organisatorisches, Einfuhrung
Rechnerarchitekturen
¨
Befehlsausfuhrung
und Organisationsprinzipien
¨
Adressierung und Maschinenprogrammierung
Programmiermodell des 8051 Mikrocontrollers
Assemblersyntax des 8051
Assemblersyntax und Betriebsmodi des 8051
¨ aus (Pfingsten)
fallt
I/O Port-Programmierung, Umgang mit Instruktionen und Programme
Interrupt-Programmierung
Timer- und Counter-Programmierung
Aufbau und Programmierung von seriellen Kommunikationsschnittstellen
Benutzung der seriellen Schnittstelle, Timer, Interrupts
Praxisbeispiele
Hardwarenahe Programmierung in C
Klausur
Klausurruckgabe
und Besprechung
¨
Seite 4
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Lernziele
Nach diesem Termin sollten Sie...
I
den Unterschied zwischen Mikroprozessor und Mikrocontroller
verstanden haben
I
die Eigenschaften der 8051 Architektur kennen
I
verstanden haben wie Mikroprozessoren und ihre Schnittstellen
¨
angesprochen bzw. programmiert werden konnen
(Programmiermodell)
I
den Aufbau des internen RAMs beim 8051 kennen (Speichermodell)
Seite 5
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Controller- und Prozessorfamilien
Familien“ von Bausteinen mit
”
I kompatiblen Befehlssatzen
¨
I
unterschiedlichem Aufbau (Fertigung)
insbesondere unterschiedlichen Eigenschaften wie
I
On-chip Speichertyp (ROM, RAM, PROM, EPROM)
I
¨
On-chip Speichergroße
I
¨
zusatzliche
digital-analoge Wandler (D/A und A/D)
I
¨
¨
zusatzliche
analoge Komponenten (z. B. Verstarker)
I
¨
¨
zusatzliche
Timer (voneinander unabhangig)
Eine bekannte Controllerfamilie ist die 8051-Familie von Intel, zu der aber
auch viele andere Firmen (z.B. Siemens, Maxim, Dallas Semi, etc.)
Familienmitglieder produzieren
Seite 6
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Eigenschaften der 8051 Architektur
8051 ist ein 8-Bit Mikrocontroller
I
¨
samtliche
am Rechenprozess beteiligten Einheiten (Akkumulator,
Register, Bus) sind 8-Bit breit
I
¨
mit 8 Bit sind 256 Befehlscodes moglich
(Befehlssatz)
Weitere Eigenschaften
I
logische Harvard-Architektur: max. 64 KByte Programm- und 64 KByte
Datenadressraum (getrennter Speicher- und Datenbereich)
I
128 bzw. 256 Byte interner RAM
I
¨
4 Registersatze
mit 8 Registern der Breite 8 Bit
I
4 Ports mit je 8 Bit (32 bidirektionale I/O-Leitungen)
I
On-Chip Peripherie (Timer/Counter, UART, Interrupt-Steuerung)
I
externer Bus fur
¨ externe Daten- bzw- Programmspeichererweiterung
Seite 7
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Eigenschaften der 8051 Architektur
Maschinenzyklus
I
Befehlszyklus beinhaltet mehrere Maschinenzyklen
I
beim Standard 8051: 1 Maschinenzyklus besteht aus 12 Takten
Warum 12 Takte?
I
¨
1 Maschinenzyklus (MZ) besteht aus einer Sequenz von 6 Zustanden
I
jeder Zustand dauert 2 Takte
I
1MZ = 12 Takte → 1 MZ = 1µs bei 12 MHz Takt
Warum 2 Takte pro Zustand?
I
jeder Zustand wird in 2 Phasen (P1,P2) geteilt: gleich lang, je 1 Takt
I
Hintergrund: pro MZ zwei Abfragen im Programmspeicher (program
fetch) → potentieller Speedup
I
¨
falls keine weiteren Bytes benotigt
→ Discard
Seite 8
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Aufbau des Mikrocontrollers 8051
externe
Interrupts
InterruptSteuerung
ROM
4k x 8
Programmspeicher
RAM
128 x 8
Datenspeicher
*)
Timer 1
Timer 0
2x 16-Bit
*) on-chip
mind.128,
Prozessor
meist 256
8-Bit CPU
4 I/O Ports
Oszillator
Zählereingänge
BusSteuerung
Serielle
E/A
P0 P1 P2 P3
jeweils 8 Bit
TXD RXD
Seite 9
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Programmiermodell des 8051 Mikrocontrollers
Programmiermodell beschreibt Hardware innerhalb der CPU, die vom
Programmierer (uber
Register) erreichbar ist
¨
Akkumulatorregister (je 8 Bit)
Akkumulator A
Hilfs-Akkum. B
Status: Program Status Word (8 Bit)
Program Counter (16 Bit)
PC
Zeiger auf
Programmspeicher
Zeiger auf ext.
Datenspeicher
R0
R0
R0
R0
R1
R1
R1
R1
PSW
R2
R2
R2
R2
R3
R3
R3
R3
Stack Pointer (8-Bit)
R4
R4
R4
R4
R5
R5
R5
R5
SP
Zeiger auf Stack
(int. RAM)
8-Bit Register
Data Pointer (16-Bit)
R6
R6
R6
R6
R7
R7
R7
R7
DPTR
4 Registerbänke
Seite 10
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Abbildung der Register im internen RAM
100h
Special Function
Register
80h
30h
20h
00h
Byte-adressierbarer RAM-Bereich
Bit-adressierbarer
RAM-Bereich
Register 4x R0...R7
Special Function Register:
I
Software-bezogene Register
I
Hardware-bezogene Register (Peripherie)
Nur direkt
adressierbar
Direkt und indirekt
adressierbar
Seite 11
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Abbildung der Register im internen RAM
¨
Im Detail: 4 Registerbanke
mit je 8 Registern
100h
1Fh
Registerbank 3
18h
Registerbank 2
80h
10h
30h
20h
08h
00h
00h
R7
…
R0
R7
…
R0
Registerbank 1
R7
…
R0
Registerbank 0
R7
…
R0
jeweils
8 Byte
¨
Organisation lasst
schnelle Adressierung und effizienten Zugriff zu
Registerbank 0 ist die Standardeinstellung nach dem Einschalten
¨
Auswahl der Registerbanke
erfolgt durch 2 Bits im PSW
Seite 12
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Abbildung der Register im internen RAM
Im Detail: Special-Function-Register (SFR)
FFh
Rechenregister: Akku, B, PSW
100h
Pointer: Stackpointer (SP), Data
Pointer (DPH, DPL)
I / O -Ports: Port 0, Port 1, Port2,
Port3
80h
Interrupt-Register: Interrupt-Enable,
Interrupt-Priority
30h
20h
Timer: Timer-Mode, Timer Control,
Timer0: TLO, THO; Timer1: TL1, TH1
00h
80h
Serial I / O -Port: Serial Control,
Serial Data Buffer
¨ alle Systemregister mit Ausnahme des Befehlszahlers
¨
SFR-Bereich enthalt
Bereich ist wie ein RAM-Baustein organisiert
I
I
SFRs sind bit-adressierbar, wenn Byte-Adresse mit 0h oder 8h endet
Bit-Adresse = Byte-Adresse + Nummer des Bits in dem Byte
Seite 13
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Abbildung der Register im internen RAM
SFR RAM Adresse
(Byte und Bit)
Byte
adresse
Bitadressen 80-F7h gehören zu
SFR von P0, TCON, P1, SCON...
Byte
adresse
Bitadresse
98 9F 9E 9D 9C 9B 9A 99 98 SCON
Bitadresse
FF
F0 F7 F6 F5 F4 F3 F2 F1 F0
B
90 97 96 95 94 93 92 91 90 P1
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
B8 --
-- B4 B5 B6 B7 B8
IP
B0 B7 B6 B5 B4 B3 B2 B1 B0
P3
A8 AF AE AD AC AB AA A9 A8
IE
A0 A7 A6 A5 A4 A3 A2 A1 A0
P2
99
--
nicht Bitadressierbar
SBUF
8D
nicht bitadressierbar
TH1
8C
nicht bitadressierbar
TH0
8B
nicht bitadressierbar
TL1
8A
nicht bitadressierbar
TL0
89
nicht bitadressierbar
TMOD
88 8F 8E 8D 8C 8B 8A 89 88 TCON
87
nicht bitadressierbar
PCON
83
82
81
80 87
nicht bitadressierbar
nicht bitadressierbar
nicht bitadressierbar
86 85 84 83 82 81 80
Specal Function Register
DPH
DPL
SP
P0
Seite 14
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Software-bezogene Register
Stackpointer (SP)
I
I
I
an Adresse 81h
aktuelle Adresse des Stacks (±1 Byte beim Schreiben/Lesen)
Zeiger auf den Stack im internen RAM
Data Pointer Register (DPTR)
I
I
I
I
I
Data Pointer Low an Adresse 82h
Data Pointer High an Adresse 83h
Zeiger auf externen Datenspeicher (falls vorhanden) → mit MOVX
auch Zeiger auf externen (und internen) Programmspeicher → MOVC
dient (externen) Datenzugriffen auf maximal 64 KByte
Akkumulatorregister A (ACC) und B (Hilfsakkumumator)
I
I
Akkumulator A an Adresse 0E0h (ACC: symbolischer Name fur
¨ 0E0h
(direkter Zugriff), A: symbolischer Name fur
¨ implizite Verwendung
¨
(Befehlslange
und Ausfuhrungszeit
kurzer)
¨
¨
Hilfsakkumulator B (fur
¨ Multiplikation/Division) nur mittels direktem
Datenzugriff auf 0F0h erreichbar
Seite 15
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Hardware-bezogene Register
Port 0 Register (P0)
I
I
I
an Adresse 80h
stellt Port 0 mit 8 externen Anschlussen
(Pin 32-39) dar
¨
keine speziellen I/O-Befehle, Ports sind Memory-mapped“ (Unterschied
”
zu den 80x86-Systemen!) und jeweils byte- und bitadressierbar
Timer Control Steuer- und Statusregister (TCON)
I
I
I
an Adresse 88h
oberes Halbbyte: Werte fur
¨ die Timer 0 und 1
unteres Halbbyte: Werte fur
¨ die Interrupt-Logik
Timer Modus Register (TMOD)
I
I
I
I
I
an Adresse 89h
bestimmt Modus der Timer 0 und 1
¨
Timer selbst sind 16-Bit breite Zahlregister
Timer 0 low/high an Adresse 8Ah/8Ch
Timer 1 low/high an Adresse 8Bh/8Dh
Seite 16
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Hardware-bezogene Register
Port 1 Register (P1)
I
an Adresse 90h
I
stellt Port 1 mit 8 externen Anschlussen
dar
¨
I
Anschlusse
sind pseudobidirektional ausgelegt
¨
I
als Ausgang konfiguriert kann ein Eingangssignal gelesen werden, wenn
Ausgang vorher auf high gesetzt
I
¨
Grund: externe TTL-Treiber konnen
ein solches Ausgangssignal
uberschreiben
¨
Serial Control Steuer- und Statusregister (SCON)
I
an Adresse 98h
I
kontrolliert serielle Schnittstelle
I
¨
sendet bzw. empfangt
Zeichen via SBUF (99h)
I
SBUF umfasst zwei Register (aus Empfangsteil kann nur gelesen, in
Sendeteil nur geschrieben werden)
Seite 17
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Hardware-bezogene Register
Port 2 Register (P2) und Port 3 Register (P3)
I
P2 an Adresse 0A0h
I
stellt Port 2 mit 8 externen Anschlussen
(Pins 21-28) dar
¨
I
P3 an Adresse 0B0h
I
stellt Port 3 mit 8 externen Anschlussen
(Pins 10-17) dar) ebenfalls
¨
pseudo-bidirektional
Interrupt Enable Register (IE) und Interrupt Priority Register IP
I
IE an Adresse 0A8h
I
gibt die diversen Interruptquellen (in- und externe) frei
I
IP an Adresse 0B8h
I
¨ der Interruptquellen in zweistufiger Hierarchie
bestimmt Prioritat
Programmiermodell des 8051 Mikrocontrollers |
Seite 18
Maschinenorientierte Programmierung |
Hardware-bezogene Register
Schaltung der Ports
I
schreibender Zugriff: lade Daten in
Bit Latch → treibt FET, verbunden
mit Port Pin
I
Read Latch und Read Pin
¨
Moglichkeit
I
Anweisungen wie ANL, CPL, DEC,
etc. (Read-Modify-Write Operation)
lesen das Latch, um
Fehlinterpretation des
Spannungslevels am Pin (bspw. bei
Last) zu vermeiden
I
andere Anweisungen (z.B. MOV C,
P1.5) lesen den Pin
I
zum Lesen: Port Latch muss 1“
”
enthalten → FET zieht andernfalls
Pin nach Masse
Sommersemester 2015
Seite 19
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Speichermodell des 8051 Mikrocontrollers
Interner Speicher (256 Bytes), Special Funktion Register und externer
¨
Speicher haben uberlappende
Addressraume
¨
I
Adressierung und Art des Mikroprozessorbefehls unterscheidet Zugriff
Externer Daten-/Programmcode-Speicher
I
I
I
Aktivierung uber
getrennte Steuersignale (PSEN, RD / WD an Port 3)
¨
Adressierung nur indirekt und relativ uber
Data Pointer (DPTR)
¨
¨
¨
Befehlszahler
(Program Counter) als Referenz auf nachsten
auszufuhrenden
Befehls
¨
0FFFFh
0100h
0080h
Internes
RAM
Special
Function
Register
Externe
Daten
(RAM)
Programmcode
intern /
extern
0000h
/RD = 0 oder
/WR = 0
/PSEN = 0
Seite 20
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Speichermodell des 8051 Mikrocontrollers
Struktur des Speichers im Detail
8
8
0FFFFh
8
8
Internes
RAM
Special
Function
Register
0100h
0080h
0000h
128 Byte, intern
bitadressierbar
4 Registerbänke
256 Byte, intern
Externe
Daten
(RAM)
Programmcode
intern /
extern
64 kByte, indirekt
über DPTR
adressierbar
/RD = 0 oder
/WR = 0
/PSEN = 0
Bitadressierbarer Bereich
I
I
I
16x8 = 128 Bit im Bereich 20h bis 2Fh
sind direkt uber
die Adressen 00h bis 7Fh adressierbar
¨
Adressierung mit bit-orientierten Befehlen
Seite 21
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Speichermodell des 8051 Mikrocontrollers
Byteadressen
Verwechslungen
zwischen den
Adressen 00-7Fh?
bitadressierbare Positionen
mind.
80 Byte
8
Internes
RAM
16 Byte
bitadressierbar
4 Registerbänke
32 Byte
Seite 22
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Speichermodell des 8051 Mikrocontrollers
Byteadressen
Verwechslungen
zwischen den
Adressen 00-7Fh?
bitadressierbare Positionen
mind.
80 Byte
8
Byteadressen 00-7Fh für 128 Byte RAM
à Zugriff nur in Byte-Größen
à verschiedene Adressierungsmodi
(direkt oder indirekt)
Internes
RAM
Bitadressen 00-7Fh für 16 Byte der
16 Byte
RAM-Positionen
20-2Fh
bitadressierbar
4 Registerbänke
à Zugriff nur über Einzelbitbefehle
à nur direkter Adressierungsmodus
32 Byte
Programmiermodell des 8051 Mikrocontrollers |
Seite 23
Maschinenorientierte Programmierung |
Sommersemester 2015
Stack-Konzept
Effektiver Zugriffsbereich
I
128 Bytes stehen zur Verfugung
(80h)
¨
I
Untere 32 Bytes (20h) stehen nur fur
¨ die
¨
Registerbanke
0-3 (jeweils R0 - R7) zur
Verfugung
¨
I
Folgende 16 Bytes (20h - 30h) stehen nur fur
¨ den
bitadressierbaren Bereich zur Verfugung
¨
I
¨
¨
Werden diese Bereiche nicht benotigt,
konnen
sie vom Stack in Anspruch genommen werden
I
Vorsicht bei Doppelbelegung!
→schwer identifizierbare Fehler
Stackpointer des 8051 umfasst 8 Bit → kann also nur
Werte von 00h bis FFh annehmen
100h
80h
30h
20h
00h
Internes RAM
Seite 24
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Stack-Konzept
Funktionsweise des Stacks beim 8051
I
bei Schreibzugriff wird SP-Inhalt um 1 inkrementiert
I
dann Inhalt auf SP-adressierte Zelle im intern. Speicher geschrieben
I
Einbringen von Daten auf den Stack → Push“-Operation
”
bei Lesezugriff wird zuerst gelesen
I
Herausholen von Daten von dem Stack → Pop“-Operation
”
dann wird SP um 1 dekrementiert
I
nach Reset zeigt SP auf Speicherzelle 07h (historische Grunde)
¨
I
erster Schreibzugriff wurde
dann auf welche Zelle erfolgen?
¨
Seite 25
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Praktische Stackoperation
Auf Speicherzelle 8 liegt Register R0 der Registerbank 1 (Konflikt!)
¨
Tip: Verschieben des Stacks auf ungefahrlichere“
Bereiche!
”
¨ Werte)
mov SP, #STACK BOTTOM - 1 mit STACKBOTTOM = 30h (o.a.
Internes RAM
Internes RAM
Akkumulator
36h
0BBh
0AAh
SP
36h
055h
34h
0AAh
SP
35h
32h
32h
nach: PUSH ACC
vorher
30h
Akkumulator
55h
55h
30h
Seite 26
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Zusammenfassung
Heute haben Sie gelernt...
I
was man unter einem Programmiermodell versteht
I
wie ein 8051 Mikrocontroller intern aufgebaut ist
I
wie der interne Speicher beim 8051 gegliedert ist
Seite 27
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
¨
Ausblick auf nachste
Stunde
¨
In der nachsten
Stunde widmen wir uns...
I
den konkreten Adressierungsmodi der 8051 CPU
I
der Assemblersyntax des 8051
I
unterschiedlichen Befehlskategorien
Sommersemester 2015
Seite 28
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Hinweise zum Selbststudium
Zur Vertiefung wird empfohlen...
I
MOP-Skript (Kapitel noch nicht fertig)
I
Jurgen
Walter: Mikrocomputertechnik mit der 8051-Controller-Familie,
¨
Springer Verlag, ISBN 9783540667582
Seite 29
Programmiermodell des 8051 Mikrocontrollers |
Maschinenorientierte Programmierung |
Sommersemester 2015
Kritik
Nun sind Sie dran:
I
Kritik: Was funktioniert gut / was schlecht?
I
Anregungen
I
Wunsche
¨
I
¨
Verbesserungsvorschlage
in Bezug auf Inhalt und Organisation der
Vorlesung