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
© Copyright 2024 ExpyDoc