33
Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren sind monolithisch integrierte Rechner-Baugruppen, die zumindest Steuerwerk und Rechenwerk umfassen. Während bei früheren Mikroprozessoren die Ein- / Ausgabe-Einheiten auf separaten Baugruppen untergebracht waren, sind sie bei modernen Mikroprozessoren mit integriert. Mikrocontroller umfassen nicht nur den Rechnerkern, sondern zusätzlich auch ROM (read-only- memory) und RAM (random access memory)- Speicher. Solche Bausteine werden in großer Breite Aufgaben der Steuerung von Geräten und Anlagen eingesetzt. Während bei der Entwicklung von Software, die auf Universalrechnern ablaufen soll, die Programmierung fast ausschließlich in Hochsprachen (C, C++, PASCAL, FORTRAN) erfolgt, wird die Programmierung von Mikrocontrollern in der Praxis durchaus noch auf der Ebene der Assembler-Befehle durchgeführt. Zwar sind auch für die wichtigsten Mikrocontroller längst Compiler verfügbar, der damit erzeugte Code ist aber vergleichsweise länger und läuft langsamer als handoptimierter Code (typische jeweils um einen Faktor 2). Während bei Mikroprozessoren, wie sie in PCs und Workstations eingesetzt werden, längst 32 Bit- Architekturen vorherrschen, werden bei Mikrocontrollern auch 8-Bit und 16-Bit-Architekturen weiter in großer Anzahl verwendet. Für 32 Bit-Mikrocontroller werden sogar noch sinnvolle Anwendungen gesucht. Wegen der großen Bedeutung für die industrielle Praxis soll in diesem Kapitel ein Mikrocontroller mit seinem Befehlssatz und seinen Eigenschaften vorgestellt werden. Als typisches Beispiel kann der 8051 von Intel gelten, auf dessen Basis es eine ganze Familie unterschiedlicher Mikrocontroller, auch von anderen Herstellern, gibt. Mikrocontroller beinhalten zumeist relativ einfach aufgebaute Rechner-Kerne. Prinzipien wie Pipelining etc. findet man nur bei neueren High-End-Mikroprozessoren. Sie sind dort nicht mal sehr wünschenswert, da sie die effiziente Bearbeitung von Interrupt-getriebenen Anwendungen, wie sie in der Praxis von Steuerung und Regelung vorkommen, eher noch erschweren. Deshalb ist der Kern zumeist eine relativ einfache von-Neumann-Maschine (bzw.Harvard-Maschine). Es gibt heute Standard-Mikrocontroller in großer Zahl auf dem Markt, die aber fast alle gewissen "Familien" zuzuordnen sind. Darüber hinaus sind in einer Vielzahl von Geräten und Anlagen auch Controller vorhanden, die als anwendungsspezifische ICs (ASICs) entworfen und gefertigt wurden. In naher Zukunft wird man "Prozessor-Kerne" in Kombination mit programmierbarer Logik (z. B. FPGAs) erwerben können, so daß sich jeder Anwender seinen Controller "konfektionieren" und dann programmieren kann. Mikrocontroller sind an dieser Stelle interessant, weil sie ganz im Unterschied zu Allgemeinrechnern oft noch im Assembler-Code programmiert werden. Dazu stehen (meist auf PC-Basis) regelrechte "Entwicklungssysteme" zur Verfügung, welche Simulation und Emulation des Assembler-Codes erlauben. 11.2 Aufbau des 8051 Mikrocontrollers Abb. 11.1 zeigt den Aufbau des 8051. Im Kern befindet sich eine vollständige Mikroprozessor- Baugruppe, die um E / A - Bausteine erweitert ist.

11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Embed Size (px)

Citation preview

Page 1: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

1

11. Mikrocontroller

11.1 Einführung

Mikroprozessoren sind monolithisch integrierte Rechner-Baugruppen, die zumindest Steuerwerk undRechenwerk umfassen. Während bei früheren Mikroprozessoren die Ein- / Ausgabe-Einheiten aufseparaten Baugruppen untergebracht waren, sind sie bei modernen Mikroprozessoren mit integriert.

Mikrocontroller umfassen nicht nur den Rechnerkern, sondern zusätzlich auch ROM (read-only-memory) und RAM (random access memory)- Speicher. Solche Bausteine werden in großer BreiteAufgaben der Steuerung von Geräten und Anlagen eingesetzt.

Während bei der Entwicklung von Software, die auf Universalrechnern ablaufen soll, dieProgrammierung fast ausschließlich in Hochsprachen (C, C++, PASCAL, FORTRAN) erfolgt, wirddie Programmierung von Mikrocontrollern in der Praxis durchaus noch auf der Ebene derAssembler-Befehle durchgeführt. Zwar sind auch für die wichtigsten Mikrocontroller längstCompiler verfügbar, der damit erzeugte Code ist aber vergleichsweise länger und läuft langsamer alshandoptimierter Code (typische jeweils um einen Faktor 2).

Während bei Mikroprozessoren, wie sie in PCs und Workstations eingesetzt werden, längst 32 Bit-Architekturen vorherrschen, werden bei Mikrocontrollern auch 8-Bit und 16-Bit-Architekturenweiter in großer Anzahl verwendet. Für 32 Bit-Mikrocontroller werden sogar noch sinnvolleAnwendungen gesucht.

Wegen der großen Bedeutung für die industrielle Praxis soll in diesem Kapitel ein Mikrocontrollermit seinem Befehlssatz und seinen Eigenschaften vorgestellt werden. Als typisches Beispiel kann der8051 von Intel gelten, auf dessen Basis es eine ganze Familie unterschiedlicher Mikrocontroller, auchvon anderen Herstellern, gibt.

Mikrocontroller beinhalten zumeist relativ einfach aufgebaute Rechner-Kerne. Prinzipien wiePipelining etc. findet man nur bei neueren High-End-Mikroprozessoren. Sie sind dort nicht mal sehrwünschenswert, da sie die effiziente Bearbeitung von Interrupt-getriebenen Anwendungen, wie sie inder Praxis von Steuerung und Regelung vorkommen, eher noch erschweren. Deshalb ist der Kernzumeist eine relativ einfache von-Neumann-Maschine (bzw.Harvard-Maschine).

Es gibt heute Standard-Mikrocontroller in großer Zahl auf dem Markt, die aber fast alle gewissen"Familien" zuzuordnen sind. Darüber hinaus sind in einer Vielzahl von Geräten und Anlagen auchController vorhanden, die als anwendungsspezifische ICs (ASICs) entworfen und gefertigt wurden.

In naher Zukunft wird man "Prozessor-Kerne" in Kombination mit programmierbarer Logik (z. B.FPGAs) erwerben können, so daß sich jeder Anwender seinen Controller "konfektionieren" und dannprogrammieren kann. Mikrocontroller sind an dieser Stelle interessant, weil sie ganz im Unterschiedzu Allgemeinrechnern oft noch im Assembler-Code programmiert werden. Dazu stehen (meist aufPC-Basis) regelrechte "Entwicklungssysteme" zur Verfügung, welche Simulation und Emulation desAssembler-Codes erlauben.

11.2 Aufbau des 8051 Mikrocontrollers

Abb. 11.1 zeigt den Aufbau des 8051. Im Kern befindet sich eine vollständige Mikroprozessor-Baugruppe, die um E / A - Bausteine erweitert ist.

Page 2: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

2

Interrupt-

Steuerung

CPU

Oszillator

externe Interrupts

Bus-Steuerung

4 I / O -Ports

ROM4 k * 8

RAM

128 * 8

Timer 1

Timer 0

ZählerEing.

RXDTXD

Serielle

E / A

P0 P2 P1 P3

Abb. 11.1: Aufbau des Mikrocontrollers 8051

Der 8051 wird in einer speziellen CMOS-Tecnologie (HMOS) bei Intel gefertigt. Die Taktfrequenzdes Grundtyps beträgt 16 MHz.Folgende Baugruppen sind monolithisch integrierte vorhanden:

− Zentraleinheit (CPU)− Oszillator (mit externem Quarz)− Festwertspeicher (ROM) , Größe 4k * 8 Bits− Datenspeicher (RAM), Größe 128 * 8 Bit− Special Function Register− I / O - Ports, parallel (8 Bit breit)− Timer (16 Bit)− Serielle Ein- und Ausgabe− Interrupt-Steuerung− Bus-Steuerung

Akku PSWB

Reg.

RAM-

Adres.

RAM ROM4k * 8

128 * 8

ROM

Adres.

Takt-generat.

Steuerlogik

Port 0

Port 2

Port 3

Port 1

TR2

TR1 Interrupt

Ser. I / O

Timer 1Timer 2

ALU

m.Bit.R.

Bef.-Reg.

Bef.-Dekod.

Spec.Funct.

Regist.

xtal1

xtal2

P0.0/

P0.7/AD7

P2.0/A8

P2.7/A15

P3.0

P3.7

P1.0

P1.7

Abb. 11.2: Detailliertes Blockschaltbild der Mikrocontrollers 8051

Page 3: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

3

Zentraleinheit (CPU)Die Zentraleinheit (CPU) des 8051 enthält die ALU , welche auch einen Einzelbit-Rechner(Boolscher Prozessor), den Befehlszähler, das Befehlsregister, den Befehlsdecoder und dieSteuereinheit für den Programmablauf. Die ALU führt sowohl logische und arithmetischeOperationen als auch Schiebeoperationen aus. Der Befehlssatz des 8051 enthält auchMultiplikations- und Divisionsbefehle. Mittels des integrierten Bit-Prozessors können auch Einzelbit-Operationen durchgeführt werden. Das Arbeitsregister für solche Operationen ist das Carry-Flag-Register. Der 8051 besitzt eine Anzahl Bit-ausgerichteter Befehle. Im RAM und in den meistenRegistern sind einzelne Bits adressierbar.Die Steuerlogik enthält die zentrale Ablaufsteuerung des Rechners.Der dazu notwendige Taktgenerator ist über einen äußeren Quarz-Baustein stabilisiert.Wie beim von-Neumann-Rechner üblich, werden im Befehlszähler nacheinander die Adressen derBefehle im Programmspeicher abgelegt, und über den internen Datenbus werden die Befehlsbytes insBefehlsregister transferiert. Im angeschlossenen Befehlsdekoder werden die Steuerbegehleentschlüsselt und daraus die Steuerbits für die Ablaufsteuerung erzeugt.Alle Register mit Ausnahme des PC sind in einem speziellen Special Function Register (SFR), daswie ein RAM organisiert ist, zusammengefaßt.

OszillatorDer Oszillator besteht aus einer rückgekoppelten Inverterkette, wobei der äußere Quarz dieRückkopplungsschleife schließt. Der Quarz arbeitet als Serien-Resonanzkreis, d. h. er ist nur bei derResonanzfrequenz niederohmig. Man kann aber auch einen externen Takt an XTAL2 anschließen,dann bleibt XTAL1 offen. Dies ist besonders zu Testzwecken notwendig (testfreundlicherSchaltungsentwurf).

Programmspeicher (ROM)Der 4 K Bytes große Festwertspeicher wird vom Hersteller vorprogrammiert und enthält zunächstwichtige Basis-Programme. Während des Betriebs wird die aktuelle Adresse des ROM über dasProgrammadressregister vorgegeben. Der Programmspeicher kann über ein extern anschließbaresROM oder PROM oder EPROM bis auf 64 kBytes erweitert werden. Die erfordeliche Adressierungerfolgt über die Ports 0 und 2. Beim Zugriff auf das externe EPROM werden die Daten in einemZeitmultiplex-Verfahren über die Anschlüsse des Ports 0 in den Mikrocontroller übertragen.

Es existiert ein ROM-Speicherbereich,( hexa-dezimal 0 bis 23H), der für die Ablage von Interrupt-Einsprung- und Rücksprungadressen reserviert ist.

Datenspeicher (RAM), 128 mal 8 BitDer RAM-Speicher enthält 4 Registerbänke mit je 8 Registern, 128 direkt adressierbare Bits und 80Byte-adressierbare RAM-Speicherplätze. Die Auswahl der Registerbänke erfolgt durch 2 Bits imProzessor-Statuswort (oder Kontrollwort !), hier auch als "PSW" bezeichnet.

R A M B y t e - a d r e s s i e r b a r

R A M B i t - a d r e s s i e r b a r

R e g is t e r b a n k 3

R e g i s t e r b a n k 2

R e g i s t e r b a n k 1

R e g i s t e r b a n k 0

0 H

8 H

1 0 H

1 8 H

2 0 H

3 0 H

7 fH

R 7

R 0.

R 7

R 0.

R 7

R 0.

R 7

R 0.

A d r e s s e

Abb. 11.3: Organisation des internen RAM-Speichers im 8051

Page 4: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

4

Diese Organisation läßt eine schnelle Adressierung und einen effizienten Zugriff zu. DieSpeicheradresse wird über das Speicher-Adreßregister (MAR) zur Verfügung gestellt. Im Bedarfsfallkann der interne Speicher um zusätzliche 64kByte RAM extern erweitert werden. Der externeSpeicher wird über die Ports 0 und 2 adressiert.

Special-Function-Register (SFR)Das SFR enthält alle Register mit Ausnahme des Befehlszählers (PC) und der speziellenRegisterbänke im internen RAM. Es ist wie ein RAM-Baustein organisiert.

Rechenregister

Akku, B, PSW

PointerStackpointer, SPData Pointer DPH, DPL

I / O -Ports

Port 0, Port 1, Port2, Port3

Interrupt-RegisterInterrupt-Enable, Interrupt-Priority

TimerTimer-Mode, T imer Control ,Timer0: TLO, THO; Timer1: TL1, TH1

Serial I / O -PortSerial Control , Serial Data Buf. DPH, DPL

Adresse FFH

80H

Abb. 11.4: Organisation des Special-Function-Registers

Im Special Function Register sien folgende Funktionsgruppen vorhanden:

Rechenregister Adresse Interrupt-Register Adresse------------------------------------- --------------------------------------Accumulator ACC EOH Interrpt-enable A8HRegister B FOH Interrupt-Priority B8HFlag-Register DOH

Pointer (Zeiger) Adresse Timer Adresse------------------------------------- --------------------------------------Stackpointer SP 81H Timer Mode 89HDatenpointer (L) DPL 82H Timer Control 88HDatenpointer (H) DPH 83H Timer 0 (low) 8AH

Timer 0 (high) 8CHTimer 1 (low) 8BHTimet 1 (high) 8DH

I / O Ports Adresse Serial I / O - Port Adresse------------------------------------- --------------------------------------Port 0 80H Serial Control 98HPort 1 90H Serial Data Buffer 99HPort 2 A0HPort 3 B0H

Page 5: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

5

I / O -Ports (8 Bit)Der Mikrocontroller 8051hat vier I/O Ports mit je 8 bidirektionalen digitalen Anschlüssen. Dabeikann jeder Anschluß(pin) separat auf Ein- oder Ausgang geschaltet werden. Die Ausgangsstufen derPorts 1, 2 und 3 bestehen jeweils aus einem MOS-FET-Transistor (T1), dessen Drain-Anschluß übereinen weiteren MOSFET mit der Betriebsspannung (VDD) verbunden ist. Dieser zweite Transistordient als hochohmiger Pull-Up-Widerstand (10 - 40 kOhm).Soll am Ausgang ein "high"-Pegel anliegen, so sperrt T1, T2 ist leitend und erzeugt damit einlogisches "High" am Ausgang. Das resultiert in einer niedrigen statischen Verlustleistung, allerdingskann dieser Transistor damit auch keinen hohen Umschaltstrom bereitstellen.

Für den Umschaltvorhang L - H wird über einen zusätzlichen, zu T2 parallelgeschalteten MOSFETein hoher Umschaltstrom bereitgestellt.Der Pull-Up-Widerstand ist auch wirksam, wenn der Port als Eingang benutzt wird. Die Ein- undAusgänge der Ports können für andere Aufgaben benutzt werden. Dann stehen sie nicht mehr alsPorts zur Verfügung:

Portanschluß Funktion weitere Funktion-----------------------------------------------------------------------------------------P0.0.....P0.7 treibt 8TTL-LS-Lasten L-Byte der Adresse /

bit-adressierbar, Datenbyteohne Pull-Up-Widerstd.

-----------------------------------------------------------------------------------------P1.0.....P1.7 treibt 4 TTL-LS-Lasten,

bit-adressierbar,Pull-up-Widerstd.vorhanden (10-40 kOhm)

-----------------------------------------------------------------------------------------P2.0.....P2.7 treibt 4 TTL-LS-Lasten HByte der Adresse

bita-dressierbar,Pull-Up-Widerstd.vorhanden (10-40 kOhm)

-----------------------------------------------------------------------------------------P3.0.....P3.7 treibt 4 TTL-LS-Lasten,

bita-dressierbar,Pull-Up-Widerstd.vorhanden (10-40 kOhm)

P3.0 RxD serieller EingangP3.1 TxD serieller AusgangP3.2 (INT0)' externer InterruptP3.3 (INT1)' externer InterruptP3.4 T0 Takteingang Zähler 0P3.5 T1 Takteingang Zähler 1P3.6 (WR)' schreiben (ext. RAM)P3.7 (RD)' lesen (externes RAM)------------------------------------------------------------------------------------------

Timer (16 Bit)Der Mikrocontroller enthält 2 Timer-Bausteine von je 16 Bit Tiefe. Diese können wahlweise alsZähler oder als Zeitgeber eingesetzt werden.Falls der Timer als Zähler arbeiten soll, so wird über die Anschlüsse T0 oder T1 in Port 3 ein Taktextern zugeführt. Arbeitet der Timer als Zeitgeber, so wird er einmal pro Maschinenzyklusinkrementiert. Ein Maschinenzyklus umfaßt 12 Taktperioden.

Page 6: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

6

Serielle Ein / AusgabeÜber die Anschlüsse P3.0 und P3.1 lassen sich Daten seriell senden und empfangen. Es ist sogar einVoll-Duplexbetrieb möglich, also gleichzeitiges Senden und Empfangen möglich. Die Baudrate(Übertragunsrate) ist über die Taktfrequenz oder über einen Timer programmierbar. Da im 8051 nureine Spannung, nämlich 5 V als "high"-Wert zur Verfügung steht, muß für die serielle Schnittstelleggf. ein externer Verstärker zusätzlich verwendet werden.

Interrupt-SteuerungMöglich sind beim 8051 zwei externe und drei interne Interrupts. Die externen Hardware-Interruptswerden durch Interrupt-Signale an den Anschlüssen P3.2 und P3.3 ausgelöst. Die internen Interruptswerden beim Timer-Überlauf (ein Interrupt pro Timer) oder von der seriellen Schnittstelle ausgelöst.Alle Interrupts können auch über Software gesetzt werden. Für alle Interrupts sind auchEinstellungen von Prioritäten möglich. Dazu stehen 2 Priorotätsebenen zur Verfügung.

Bus-SteuerungDie Bussteuerung sorgt für den korrekten Datenverkehr zwischen der CPU und dem internen bzw.externen Daten- und Programmspeicher.Wenn die CPU auf den externen Speicher zugreift, so muß ein Datenverkehr mit 16 Bit Adreßbereiteund 8 Bit Datenbreite organisiert werden. Dann übernimmt Port 2 die Funktion des Adreßpuffers fürdas höherwertige Byte (H-Byte) der Adresse und Port 0 die Funktion der Zwischenspeicherung fürdas niederwertige Adressbyte (L-Byte), im Zeitmultiplex aber auch gleichzeitig die Übertragung desDatenbytes. Über das Signal ALE (Adress Latch Enable) wird das L-Byte der Adresse externzwischengespeichert. Das Lesen des externen Programmspeichers wird über das Signal PSEN'gesteuert. Soll ein externer Datenspeicher angesprochen werden, so gibt die Bus-Steuerung beimLesen den Low-Pegel an RD' (Port P3.7) und beim Schreiben den Low-Pegel an WR' (Port P3.6)aus. Nachfolgend ist die Anschlußbelegung des 8051 dargestellt.

123456789

1011121314151617181920

4039383736353433323130292827262524232221

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

RST; VDPRXD; P3.0TXD; P3.1

INTO; P3.2INT1; P3.3

TO ; P3.4T1; P3.5

WR'; P3.6RD'; P3.7

XTAL2XTAL1

VSS

VCCP0.0; AD0P0.1; AD1P0.2; AD2P0.3; AD3P0.4; AD4P0.5; AD5P0.6; AD6P0.7; AD7EA'ALEPSEN'P2.7; A15P2.6; A14P2.5; A13P2.4; A12P2.3; A11P2.2; A10P2.1; A9P2.0; A8

Abb. 11.5: Anschluß-Pinbelegung des 8051

Vcc ist die Versorgungsspannung (5V), Vss ist der Masse-Anschluß (0V).

P0, P1, P2, P3 sind die vier I / O -Ports mit je 8 Bit Breite. Die meisten Port-Anschlüsse habennebenbei auch noch weitere Funktionen.

RST / VDP bedeutet Restart / Pull-DownEin High-Impuls (größer als 3V), der wenigstens 2 Maschinenzyklen lang ansteht, setzt denMikrocontroller zurück. Der Pin kann aber noch eine Hilfsfunktion ausführen: Bei Absinken derVersorgungsspannung unter 4,5 V ist die sichere Funktion des internen RAM nicht mehr gewähr-leistet. Dann wird intern umgeschaltet, und eine an RST/VDP anliegende Spannung wird zur RAM-Versorgung verwendet.

Page 7: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

7

ALE bedeutet Address-Latch-EnableDies ist das Kontrollsignal für externe RAM-Erweiterung. Der Mikrocontroller gibt über ALE einSignal zum externen Zwischenspeichern des LBytes der Adresse an. Falls keine externeSpeichererweiterung vorliegt, kann ALE als Takt verwendet werden. Dieses Signal ist gegenüberdem Systemtakt um das Verhältnis 1:6 geteilt.

PSEN' bedeutet Program Store EnableAm Pin PSEN' wird der Leseimpuls für den externen Programmspeicher ausgegeben.

EA' bedeutet Extern Access EnableLiegt der H-Pegel an diesem Eingang, so wird auf den internen Befehlsspeicher zugegriffen, falls dieAdresse kleiner als 4096 (0FFFH) ist. Bei Anliegen des Low-Pegels wird auf den externenProgrammspeicher zugegriffen.

11.3 Zeitlicher Ablauf bei der Befehlsausführung

Ein Befehl kann aus 1 bis 3 Bytes bestehen.Das erste Byte enthält den Operator, die letzten Bytes den oder die Operanden.Der Maschinenzyklus besteht aus sechs Zuständen (S1,....S6), davon besteht jeder Zustandwiederum aus 2 Phasen (P1 und P2).

Ein Befehlszyklus besteht meistens aus einem oder zwei Maschinenzyklen. Nur für die Multiplikationund Division werden jeweils vier Maschinenzyklen benötigt.Grundsätzlich wird während eines Maschinenzyklus der Operationscode zweimal abgerufen. Ist derBefehl schon ausgeführt, wird also ein zweiter Aufruf (mit nachfolgender Entschlüsselung) nichtmehr benötigt, so ignoriert die Steuerung diesen zweiten Aufruf, auch der PC wird nichtweitergesetzt. Nachfolgend ist der zeitliche Ablauf für drei unterschiedliche Befehle dargestellt: INCA, ADD A, #data, INC DPTP.

s1 s2 s3 s4 s5 s6 s1 s2 s3 s4 s5 s6 s1 s2 s3 s4

Maschinenzyklus M aschinenzyklus M aschinenzyklus

CLK

ALE

a) 1 - Byte-Befehl, 1 M aschinenzyklus, z. B. INC A

b) 2 - Byte-Befehl, 1 Maschinenzyklus, z. B. ADD A, # data

c) 1 - Byte-Befehl, 2 Maschinenzyklen, z. B. INC DPTR

O A O A * O A (nächster Befehl)

O A OPl O A (nächster Befehl)

O A O A * O A * O A * OA (nächster Befehl)

OA = Operatioscode-Abruf, OPL = Operand lesen

OA* = Op-Code-Abruf wird von der Steuereinheit ignoriert

Abb.11.6: Zeitlicher Ablauf der Befehlszyklen bei drei verschiedenen Befehlen

Beim Befehl INC A wird der Operationscode im Zustand S1 abgerufen und anschließend ausgeführt.Im Zustand S6 ist die Ausführung abgeschlossen. Beim Befehl ADD A., # data wird im Zustand S1der Operationscode angerufen und im Zustand S4 zur Vervollständigung des Befehls der dieKonstante #data (2. Byte) gelesen. Danach dauert die Ausführung des Befehls bis einschließlichZustand 6.

Page 8: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

8

Für Abruf des Operationscodes und Ausführung des Befehls INC DPTR werden zweiMaschinenzyklen benötigt. Während der Befehlsausführung ignoriert die Steuerung dreimal denOPCODE-Abruf.

Für den Fall der Erweiterung des 8051 um einen externen Programmspeicher wird das höherwertigeByte der Adresse (PCH) über Port 2 und das niederwertige Byte der Adresse (PCL) an Port 0ausgegeben (Abb. 11.7).

Maschinenzyklus

s1 s2 s3 s4 s5 s6 s1 s2

CLK

ALE

PSEN

DB PCL DB PCL DB PCL

PCH PCHPort 2

PCL = LByte der Adresse, PCH = HByte der Adresse, DB = Datenbyte

Abb. 11.7: Lesezugriff des 8051 auf einen externen Programmspeicher

Das niederwertige Byte der Adresse wird mit der negativen Flanke von ALE im Zustand S2 und S5extern in einem D-Latch zwischengespeichert. Am externen Programmspeicher liegt dann dievollständige Adresse. Er wird über das Steuersignal PSEN' = 0 selektiert. Im Zustand S4 und S1wird das entsprechende Befehlsbyte über den Port 0 gelesen.

Das externe RAM läßt sich sowohl über eine 8-Bit-Adresse als auch über eine 16-Bit-Adresseadressieren. Falls Befehle mit einer 8-Bit-Adresse ausgeführt werden, wird der Inhalt von Ri (R0oder R1) der selektierten Registerbank über Port 0 als Adresse ausgeben. Hat das externe RAMmehr als 8 Adreßbits, so werden die höherwertigen Adreßbits über den Inhalt von Port 2 festgelegt.Bei Befehlen mit einer 16-Bit-Adresse wird der Inhalt des Datenpointers über Port 0 (DLP) und Port2 (DPH) als Adresse ausgegeben.

s4 s5 s6 s2 s3 s4 s5

CLK

ALE

DBPort 0

Port 2

DPL = Data Pointer LByte; DPH = Data Pointer HByte

s1

RD

DPL od. Rihochohmig hochohmig

DPH oder Port 2 (Ausgabe)

#

DB = Datenbyte, Ri = 8-Bit-Adresse (Registerbank: R0 oder R1)# = Lbyte des Befehlszählers bei externem Programmspeicher

* *

* = PCH oder Port2 Ausgabe

Abb. 11.8: Lesezugriff des 8051 auf einen externen Datenspeicher

Page 9: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

9

In Bild 11.8 ist der Lesezugriff auf einen externen Datenspeicher dargestellt. Das Datenbyte wird imZustand S3 mit dem Leseimpuls RD' über Port0 in den Mikrocontroller übertragen. Bild 11.9 stelltentsprechend den Schreibzugriff auf das externe RAM dar. Die Datenausgabe wird mit demSchreibimpuls WR' gesteuert.

s4 s5 s6 s2 s3 s4 s5

CLK

ALE

Port 0

Port 2

DPL = Data Pointer LByte; DPH = Data Pointer HByte

s1

WR

DPL od. Ri

DPH oder Port 2 (Ausgabe)

#

DB = Datenbyte, Ri = 8-Bit-Adresse (Registerbank: R0 oder R1)

Datenausgabe

+

+ = LByte des Befehlszählers; * = PCH oder Port 2 Ausgabe# = LByte des Befehlszählers bei externem Programmspeicher

Abb. 11.9: Schreibzugriff des 8051 auf einen externen Datenspeicher

11.4 Die Software-Struktur des 8051

Der Mikrocontroller 8o51 hat einen 111 Befehle umfassenden Befehlssatz. Davon sind 49 1-Byte-Befehle, 45 2-Byte-Befehle und 17 3-Byte-Befehle.

11.4.1 Adressierungsarten

Registeradressierung

Befehle dieser Adressierungsart enthalten keine Operanden. Die Adresse des Registers ist im Befehldirekt enthalten. Mittels der Registeradressierung lassen sich die Register R0......R7 der selektivenRegisterbank adressieren. Eine Registerbank wird über zwei Selectbits im PSW eingeschaltet.

Beispiele: INC R0 inkrementiert den Inhalt des Registers R0

DEC A dekrementiert den Inhalt des Akkumulators

Unmittelbare Adressierung

In dieser Adressierungsart folgt eine 8-Bit- oder 16-Bit-Konstante dem Operationscode.

Abkürzungen: #data = 8-Bit-Konstante,#data 16 = 16-Bit-Konstante

Beispiele:MOV A, #data 8-Bit-Konstante "#data" wird in den Akkumulator geladen

MOV DPTR, #data16Das Datenpointer-Register wird mit "#data16" geladen

Page 10: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

10

Direkte Adressierung

In diesem Modus wird über eine 8-Bit-Adresse im Operanden das interne RAM und das SpecialFunctions Register adressiert.

Beispiel:MOV direct, A Der Inhalt des Akkumulators wird in das interne RAM mit der

8-Bit-Adresse direkt kopiert

Indirekte Adressierung

Sowohl das interne als auch das externe RAM lassen sich indirekt über den Inhalt eines Registersadressieren. Für die 8-Bit-Adresse (für das interne RAM) werden die Register R0 und R1 derRegisterbank verwendet. Für eine 16-Bit-Adresse muß das 16 Bit breite Datenpointer-Registerverwendet werden.

Abkürzungen der Adresse: @Ri (i = 0 oder 1) 8-Bit-Adresse@DPTR 16-Bit-Adresse

Beispiele: MOV @R0,A Der Inhalt des Akkumulators wird zum Speicherplatz (internes RAM),dessen Name im Register R0 steht, gebracht

MOVX @R0,A Der Inhalt des Akkumulators wird zum Speicherplatz (externesRAM), dessen Name im Register R0 steht, gebracht

MOVX @DPTR,A Der Akkumulator-Inhalt wird zum Speicherplatz (externesRAM) gebracht, dessen Adresse im Datenpointer-RegisterDPTR steht

Indizierte Adressierung

Mittels der indizierten Adressierung kann nur auf den Programm-speicher lesend zugegriffen werden.Diese Adressierungsart unterstützt die Benutzung einer Tabelle (z. B. LUT-Befehl: look-up table),die im Festwertspeicher abgelegt ist. Die Adresse wird dabei gebildet aus der Summe der Inhalte desBasisregisters und des Indexregisters. Als Basisregister dient dann das Datenpointer-Register(DPTR) oder der Programmzähler, der Akkumulator dient als Indexregister.

Beispiele:

MOVC A, @A + PC

Die Summe aus Akkumulator-Inhalt und Stand des Programmzählers bildet eine neue Adresse fürden Programmspeicher. Der Inhalt dieser Adresse wird in den Akkumulator geschrieben

MOVC A,@A + DPTR

Die Summe aus Akku-Inhalt und DPTR-Inhalt bildet die Speicheradresse, der Inhalt wird in denAkku geladen.

11.4.2 Der Befehlssatz des 8051

Der Befehlssatz kann in folgende Gruppen gegliedert werden:

− Transferbefehle− Arithmetische Befehle− Logische Befehle− Verzweigebefehle− Bitoperationsbefehle

Page 11: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

11

Transferbefehle

Diese entsprechen weitgehend denen des 8-Bit-Mikroprozessors 8085, sind aber erweitert wegen derVerfügbarkeit internen RAMs und ROMs.Es gibt drei Untergruppen:

− Datentransfer mit dem internen RAM oder SFR (special function register)

Beispiele:MOV R1, direct

Inhalt des Speicherplatzes (internes RAM), dessen Adresse im 2. Byte des Befehls (direct) enthaltenist, wird nach R1 der Registerbank gebracht

MOV direct2, direct1

Das Datenbyte eines Speicherplatzes wird auf einen anderen Speicherplatz kopiert

− Datentransfer mit dem externen RAM

Der Zugriff auf das externe RAM ist nur mittels indirekter Adressierung möglich. Dabei wirdzwischen 8 Byte- und 16 Byte-Adressen unterschieden. Der MOV-Transferbefehl erhält wird aufMOVX erweitert.

Beispiele:

MOVX A, @R1

Der Inhalt des Registers R1 bildet eine 8-Bit-Adresse. Das Datenbyte des Speicherplatzes mit dieserAdresse wird in den Akkumulator geladen.

MOVX @DPTR,A

Der Inhalt des Akkumulators wird unter der 16-Bit-Adresse abgelegt, die im Datenpointer DPTRsteht

− Datentransfer mit dem internen oder externen Programmspeicher

Beim Zugriff auf den internen oder externen Programmspeicher ist nur ein Lesen möglich. Dievorhandenen Befehle dienen auch zur Bearbeitung von Tabellen. Der MOV-Befehl erhält den ZusatzC für Code.

Beispiele:

MOVC A,@A + DPTR

Die Speicheradresse wird gebildet durch die Summe der Inhalte des Akkumulators und desDatenpointers. Das unter dieser Adresse gespeicherte Datenbyte wird in den Akkumulatortransferiert.

MOVC A,@A + PC

Die Speicheradresse wird aus Akkumulator und PC durch Summierung gebildet. Das daruntergespeicherte Datenbyte wird in den Akkumulator transferiert.

Page 12: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

12

Arithmetische Befehle

Zur Verfügung stehen wie beim 8085 Addition, Subtraktion, Inkrement und Dekrement, zusätzlichauch Multiplikation und Division.

Beispiele:

MULT AB

Der Inhalt des Registers B (8 Bit) wird mit dem Inhalt der Akkumulators (8 Bit) multipliziert. DasErgebnis (16 Bit) wird in B (HByte) und A (LByte) gespeichert.

DIV AB

Der Inhalt des Akkumulators wird dividiert durch den Inhalt von B, und das Ergebnis (Integer-Zahl)wird in A, der Rest (Mod(A/B)) in B gespeichert.

Logische Befehle

Die logischen Befehle entsprechen weitgehend denen des Mikroprozessors 8085: UND, ODER,XOR, SET, RESET (löschen), Negation, Rotation. Im Gegensatz zum 8085 kann sich der Befehlaber auch auf Operanden beziehen, die nicht unbedingt im Akkumulator stehen müssen.

Beispiel:

ANL direct, #data

Der Inhalt des Speicherplatzes mit der 8-Bit- Adresse "direct" wird logisch mit der 8-Bit-Konstante"#data" UND-verknüpft. Das Ergebnis wird unter der Adresse "direct" abgespeichert.

Verzweigungsbefehle

Zu den Verzweigungen zählen Sprung- und Unterprogramm-Aufrufe. Es gibt bedingte undunbedingte Verzweigebefehle.

Die Sprungbefehle des 8051 gliedern sich in 3 Gruppen:

− SJMP rel Short-Jump, (relativ, 8-Bit-Adresse)

Der Befehl für den kurzen Sprung enthält eine 8-Bit-Adresse. Es ist ein relativer Sprung von -128 bis+127 im Bezug auf die aktuelle Adresse möglich.

− LJMP addr16 Long-Jump (16-Bit-Adresse)

Der Befehl für den langen Sprung enthält eine 16-Bit-Adresse. Es ist ein Sprung im gesamtenAdreßraum möglich.

− AJMP addr11 Absolute Jump

Der Befehl für den absoluten Sprung enthält eine 11-Bit-Adresse. Es ist ein 2-Byte-Befehl, drei Bitsder Adresse sind im Operationscode enthalten. Bei der Bildung der vollständigen Adresse werden diefünf Adreßbits A11...A15 aus dem Programmzähler übernommen. Dieser Befehl wird vorwiegendfür den Zugriff auf den internen Programmspeicher eingesetzt.

Page 13: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

13

Entsprechend den Sprungbefehlen existieren auch Aufrufe für Unterprogramme.

− ACALL adr11ist ein unbedingter UP-Aufruf, gefolgt von einer 11-Bit- Adresse

− LCALL adr16ist ein unbedingter UP-Aufruf, gefolgt von einer 16-Bit- Adresse

Von erheblicher praktischer Bedeutung sind Vergleichsbefehle, die zwei Datenbytes miteinandervergleichen. Falls der Vergleich positiv ausfällt, wird ein Sprung ausgeführt.

Beispiel:

CJNE A, #data, rel

Es wird der Akkumulator-Inhalt verglichen mit der 8-Bit-Konstante #data. Falls die Bytes nichtgleich sind, wird ein relativer Sprung ausgeführt

Bitoperationsbefehle

Weil die CPU des 8051 einen Boolschen Prozessor enthält, sind Befehle mit direktem Zugriff aufeinzelne Bits sinnvoll.Das Ergebnis solcher Operationen steht dann im Carry-Flag-Register C. Das interne RAM enthält128 adressierbare Bits, zusätzlich sind noch 48 einzeln adressierbare Bits im Special FunctionRegister (SFR) vorhanden.Alle I / O - Ports sind bitadressierbar.Bitoperationen sind in Kombination mit logischen, Transfer- und Verzweigeoperationen möglich.

Beispiel zur logischen Operation:

ANL C, P1.1

Bit 1 von Port 1 wird logisch mit dem Inhalt des Carry-Flags C UND-verknüpft; das Ergebnis wirdin C gespeichert.

Beispiel zu einem Transfer-Befehl

MOV P2.7,C

Der Inhalt des Carry-Flags wird an das 7. Bit des Ports 2 ausgegeben.

Beispiel zum Verzweigebefehl

JB P1.3, Marke1

Falls das Portbit P1.3 gesetzt ist, wird nach Marke 1 gesprungen.

Im Gegensatz etwa zum Mikroprozessor 8051 enthält der Befehlssatz keine speziellen Ein- undAusgabebefehl wie z. B. der Mikroprozessor 8085. Die Ein- und Ausgabe digitaler Signale erfolgtüber die Portregister im Special Function Register. Es fehlen auch spezielle Befehle zur Interrupt-Bearbeitung. Die Interrupt-Freigabe erfolgt durch Abspeicherung eines Datenbytes im Enable-Register. Die Prioritäten der Interrupt-Berabeitung werden im Interrupt Priority Register festgelegt.

Page 14: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

14

11.5 Die Mikrocontroller-Familie MC S51

Der 8051-Prozessor hat nicht nur selbst eine extrem weite Verbreitung bei Aufgaben derindustriellen Steuerung, sein Befehlssatz gilt auch als Quasi-Industriestandard für eine ganze Familiekompatibler Mikrocontroller mit nahezu gleichem Befehlssatz. Die maximalen Taktfrequenzen dieserController liegen im Bereich von etwa 10 bis 20 MHz. Die einzelnen Typen unterscheiden sich auchhinsichtlich Programmierbarkeit des internen Programmspeichers, es gibt ROM-und EPROM-Versionen.Die nachfolgende Tabelle gibt eine Übersicht.

Techno- ROM EPROM ohne (EP)ROM RAM 16-Bit-logie Vers. Vers. ROM/EPR. Byte Byte Timer

HMOS 8051 8751 8031 4k 128 2

HMOS 8051AH 8751H 8031AH 4k 128 2

HMOS 8052AH 8752BH 8032AH 8k 256 3

CHMOS 80C51BH 87C51 80C31BH 4k 128 2

CHMOS 83C51FA 87C51FA 80C51FB 8k 256 3

CHMOS 83C51FB 87C51FB 80C51FB 16k 256 3

CHMOS 83C51GA 87C51GA 80C51GA 4k 128 3

Die bei den älteren Modellen verwendete HMOS-Technologie ist eine speziell bei Intel entwickelteschnelle Erweiterung der nMOS-Technologie. Sie eignet sich wegen der relativ hohenLeistungsaufnahme in Ruhe nicht für Low-Power-Anwendungen.Die CHMOS-Technologie ist eine von HMOS abstammende CMOS-Technologie (bei CMOS-Schaltungen ist allgemein die Ruhestrom-Aufnahme sehr gering). Die GA-Typen enthalten zusätzlich8 analoge Eingänge und on-chip A / A-Wandler zur Verarbeitung analoger Signale.Die CMOS-Controller enthalten zusätzlich für den Low-Power-Betrieb zwei spezielle Betriebsarten:

Idle-Betrieb (Betriebsart mit Bus-Ruhezustand)(nur beim 80C51)Der Idle-Modus wird via Software über das beim 80C51 zusätzlich vorhandene Power-Control-Register eingestellt. Bei einem RESET oder bei einer Interrupt-Anforderung erfolgt jeweils einRücksetzen in den Normal-Modus. Im Bus-Ruhezustand arbeitet der Oszillator, auch alle internenBaugruppen werden mit Befehlen versorgt. Nur die Steuersignale für den externen Bus (ALE,PSEN', RD') werden inaktiv, die entsprechenden Anschlüsse des Controllers werden hochohmig.Da die Leistungs-Treiber inaktiv sind, wird die Verlustleistung auf etwa 25% des Normalbertriebesverringert.

Power-Down-Modus (nur beim 80C51)Auch der Power-down-Modus wird über das Power-Control-Register geschaltet. Hier wird aberauch der Oszillator abgeschaltet. Dagegen beliebt der Inhalt interner RAM-Bausteine erhalten. DieVerlustleistung laßt sich damit auf etwa 0,25 mW begrenzen. Es ist sogar möglich, zur weiterenLeistungseinsparung auch die Versorgungsspannung zu reduzieren. Der Baustein wird über einenRESET-Impuls wieder aktiviert. Dann benötigt der Oszillator zum Anschwingen etwa 10Millisekunden mit einem Quarz, 100 Mikrosekunden, wenn an Stelle des Quarzes ein Keramik-Baustein zur Frequenzstabilisierung verwendet wurde.Neben der Intel-Familie gibt es eine ganze Anzahl weiterer, auf dem 8051 beruhenderMikrocontroller.

Page 15: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

15

Als ein Beispiel kann der SAB 80515 von Siemens dienen.(Note: Hier gibt es noch Prozessoren europäischer Hersteller!!)

Gegenüber dem 8051 besitzt dieser Controller:

Einen erweiterten Speicher:Der ROM-Speicher ist 8 kByte groß, das RAM umfaßt 256 Byte für den Datenspeicher.

I/O PortsEs sind 6 I/O Ports vorhanden, also 2 mehr als beim 8051

TimerEs sind 3 Timer verfügbar

WatchdogDies ist eine interne Überwachungseinheit. Im Prinzip besteht sie aus einem rückwärts laufendenZähler. Dieser muß von der Software in bestimmten Abständen vor Erreichen des 0-Wertsrückgesetzt werden, ansonsten wird ein Alarm ausgelöst.

Analoge EingabekanäleEs sind 8 analoge Eingabekanäle verfügbar. Mittels eines analogen Multiplexers kann einer dieserEingänge ausgewählt und auf ein Abtast- und Halteglied gegeben werden, dem ein Analog-Digital-Wandler nachgeschaltet ist. Dort wird aus dem analogen Signal ein 8-Bit-Datenwort erzeugt, dasdigital abgespeichert und weiterverarbeitet werden kann. Optional ist auch eine 10-Bit-Genauigkeitmöglich.

11.6 Mikrocontroller-Anwendungen

Im Gegensatz zu Mikroprozessoren, die stets externe Baugruppen zum Betrieb benötigen, lassensich Mikrocontroller auch allein verwenden.Trotzdem ist ein Betrieb mit zusätzlichen externen RAM- und ROM (PROM, EPROM) Bausteineneher die Regel. Auch die Zusammenschaltung mehrerer Mikrocontroller ist üblich. Der Daten-austausch erfolgt dann über die serielle Schnittstelle oder über Ports. Bei den 8031-Typen wird einexterner Programmspeicher immer benötigt.

Port 0Port 1Port 2Port 3

8051

+5V

VssVddxtal1xtal2

+5V RST

EA+5V

Abb. 11.10: Mikrocontoller-Konfiguration im Single-BetriebAls minimale externe Beschaltung ist der Anschluß des Schwingquarzes und die Beschaltung derEingänge RST und EA mit Kondensatoren notwendig. Die Ports P0, P1, P2 sind als Ein- / Ausgabe-

Page 16: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

16

Kanäle verfügbar, P3 kann vollständig oder in Teilen dafür eingesetzt werden. Oft werden einzelneBits von P3 für Sonderaufgaben wie Interrupts verwendet.

Port 0

Port 2

8051

+5V

VssVddxtal1xtal2

+5V RST

EA+5V

WR RD

D-Latch74 LS373

Adress-Decoder

EPROM

RAM

CS

OE

OE

WR

CS

PSEN

ALE

Datenbus (8 Bit)

Adressbus (16 Bit)

A0 - A15

D0 - D7

A8 - A15

Abb. 11.11: Mikrocontroller mit externer RAM- und ROM- Erweiterung

Für viele Aufgaben wird die interne Speicherkapazität des 8051 nicht ausreichen. Abb. 11.11 zeigteine Konfiguration mit externem RAM und EPROM. Dann werden die Ports P0 und P2 für Adreß-und Datenleitungen benötigt. Die Daten und das L-Byte der Adresse werden multiplexend über Port0 zur Verfügung gestellt. Die Steuersignale zum Schreiben und zum Lesen liefern 2 Steuersignalevon Port3. Dabei ist ein externes D-Latch als Zwischenspeicher für das L-Bit der Adressenotwendig. Das Lesesignal für das ROM / EPROM wird vom Signalausgang PSEN' geliefert.

PC

RXD / TXD RXD / TXD RXD / TXD

RXD / TXD RXD / TXD RXD / TXD

8051 8051 8051

Peripherie Peripherie Peripherie

Abb. 11.12: Mikrocontroller-System als Multicontroller- System mit zentraler Steuerungdurch PC

In komplexen Steuerungen ist es oft notwendig, mehrere Mikrocontroller im Verbund arbeiten zulassen. Abb. 11.12 zeigt das Schema. Der Datenaustausch erfolgt hier über die serielle Schnittstelle.

Page 17: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

17

Eine Kopplung über die parallelen Ports wäre ebenfalls eine Alternative. Die einzelnen Controllerkönne sowohl mit als auch ohne Speichererweiterung betrieben werden. In dieser Konfiguration istjeder Controller direkt mit dem PC verbunden.Alternativ dazu bietet sich eine Ringverbindung an (Abb. 11.13).

PC

TXD RXD

RXD / TXD RXD / TXD RXD / TXD

8051 8051 8051

Peripherie Peripherie Peripherie

Abb. 11.13: Multicontroller-System mit Ringschaltung über serielle I / O Ports

11.7 Assembler-Programmierung für den Mikrocontroller 8051

11.7.1 Einführung

Die Programmierung von Mikroprozessoren und Mikrocontrollern erfolgte in der Vergangenheit oftsehr Hardware-nahe über deren Assemblersprache.Dies ist eine sehr Hardware-nahe Programmierung, da sich die Befehle aus dem jeweiligen Befehlsatzdes Mikroprozessors oder Mikrocontrollers oft direkt auf spezielle Register, Ports usw. beziehen.

Für die Programmierung steht in der Regel ein mnemonischer Code für die Befehle zur Verfügung.Mittels des in der Regel vom Prozessor-Hersteller mitgelieferten Assembler-Programms wird eineBefehlsliste im mnemonischen Code in eine hexadezimale oder binäre Darstellung übersetzt.

Wie in der "großen" Programmierung erfolgt die Entwicklung eines Assembler-Programms in einerReihen von Schritten (Abb. 11. 14).

Algorithemen und Code-Entwicklung

ASCII - Editor

Assembler Compiler

Anwender-Bibliothek

C-LibrariesObject-Code Obj.-Code

Linker

Executable

Ass.-Pr. 1 Ass.-Pr. 2 C-Progr.

Abb. 11.14: Programmentwicklung bis zum ExecutableNeben Assembler-Programmierung gewinnt hier auch die Verwendung universeller Programmier-sprachen (praktisch nur C) an Bedeutung.

Page 18: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

18

Im Gegensatz zu "normalen" Programmen ist aber "eingebettete" Software für Aufgaben derSteuerung und Regelung sehr oft Realzeit-kritisch:Zum Beispiel muß die Einspritz-Steuerung für einen Dieselmotor die Einspritzmenge "kennen", wennder Kolben den oberen Totpunkt erreicht hat.Assembler-Programme sind nach ihrer Fertigstellung in der Regel bezüglich des Ablaufs unterRealzeit-Bedingungen zu validieren. Gerade dazu werden Methoden und Werkzeuge verwendet, dieeher den Methoden der Hardware-Entwicklung entsprechen als denen der Software-Entwicklung fürProgramme auf Allgemeinrechnern.

Die Alternativen zum "Austesten" eines Programms für einen Controller sind in Abb. 11.15dargestellt.

Executable

Pre-Prozessor

PC

Simulator

PC

80535-Plat.

Monitor

EPROM

Emulator

HW (Platine)ohne Contr.

PC

Objekt- nachHexcode-Wandl.

80535EPROM

Simulation Remote Debug Emulator EPROM

Abb. 11.15: Alternativen zum Debugging eines Programms für einen Mikrocontroller

Hier vorab eine Begriffsklärung:Hardware-Entwickler müssen sowohl die Korrektheit ihrer Entwürfe "validieren" (mit Simulationetc.) oder "verifizieren" (d. h. die Korrektheit im mathematischen Sinne beweisen) als auch "Tests"finden, welche Fertigungsfehler bei der Hardware aufdecken können.

Software-Entwickler sprechen dagegen viel allgemeiner vom Test, wenn sie auf irgendeine ArtKorrektheit und / oder Qualität von Programmen prüfen.

Hier haben wir eine "Mischkultur" vor uns. Nachfolgend sind deshalb die Methoden zur Validierungder Assembler-Programms aufgeführt:

SimulationEs ist möglich, den Ablauf eines Anwenderprogramms auf dem Mikrocontroller mittels des PC (odereiner Workstation) zu simulieren. Dabei kann man sich Befehls- und Datenverkehr,Speicherbelegung etc. anschauen bzw. anzeigen lassen. Damit sind funktionale Fehler gut zuerfassen. Natürlich ist aber die Simulation auf dem PC (mit einem speziellen Simulationsprogramm)wesentlich langsamer als ein "echter" Ablauf auf dem Mikrocontroller.

Hier kommt man eine Stück weiter, wenn man den Controller mit seiner sonstigen Hardwaretatsächlich aufbaut und mit dem PC verbindet.Remote Debugging

Page 19: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

19

Auf dem PC läuft dann ein Monitor-Programm, das z. B. den externen Prozessor starten undanhalten kann, aber z. B. auch Speicherinhalte lesen und schreiben kann. Damit kann man denController über Programmteile in Echtzeit laufen lassen und die Ergebnisse auswerten.Auch das Anwenderprogramm im Speicher der Controller-Aufbaus enthält dann zusätzliche Befehlefür das Monitoring, was den Aufwand erhöht. Damit ist in der Regel auch noch kein voller Echtzeit-Betrieb möglich.

Ebenso beliebt ist die Emulation.Wieder wird die externe Hardware aufgebaut, aber jetzt ersetzt man den Kontroller-Baustein selbstdurch den PC, der mittels eines "Emulationsprogramms" den Kontroller nachbildet. Dazu gehörtneben dem Emulationsprogramm auch eine spezielle Einschubkarte für den PC, deren externerStecker in die Anschlüsse für den Kontroller gesteckt wird.Ist der im PC verfügbare Prozessor nur etwa so schnell wie der Kontroller, so wird die Emulation inetwa Echtzeit nicht möglich sein.Dagegen wird ein sehr viel leistungsfähiger PC-Prozessor (Pentium / 130 MHz versus 8051 / 10MHz) fast Echtzeit-Betrieb ermöglichen.

Natürlich kann man auch den Assembler-Code in ein EPROM "brennen" und dann die Operationenim "Zielsystem" ausführen. Der Hardware-Entwickler wird sich dann die Signalverläufe mit demOszillographen oder dem dem digitalen Signal-Analysator anschauen.

11.7.2 Beispiel

Als erstes Beispiel für ein Assembler-Programm sei eine Routine gewählt, welche das Ein- undAusschalten einer Leuchtdiode steuert.

Dazu sind die Ports P1.1 bis P1.3 mit Tastern belegt, die Ports 3.2, 3.3 und 3.4 mit Leuchtdioden.Die Taster dienen jeweils zum Ein- und Ausschalten der Dioden. Über die Schaltern werden diePorts (die normalerweise hochohmig auf "high" liegen) auf "low"-Potential gezogen,die Leuchtdioden sind extern über Widerstände auf "high" gelegt und werden dann leuchten, wenndie Ports intern auf "low"gesetzt werden.

Assemblerprogramm:

$ title (EIN_AUS)$debug; Einfaches Programm zum Ein- und Ausschalten einer Leuchte; Taster 1 Einschalten, Taster 2 Ausschalten; Taster 3 Programm beenden

CSEG AT 0H; Legt absolute Codesegmentadresse auf 0Hljmp ANFANG ; Sprung auf ProgrammanfangORG 100H ; Programmstart bei 100H

ANFANG:jnb P1.1, LICHT_EIN ;Schalter 1 betaetigt?jnb P1.2, LICHT_AUS ; Schalter 2 betaetigt?jnb P1.3, PROGRAMM_ENDE ; Programmendeajmp ANFANG ; Springe zur Adresse ANFANG

LICHT_EIN:clr P3.2 ; Licht einschaltenajmp ANFANG ; Springe zur Adresse Anfang

Page 20: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

20

LICHT_AUS:setb P3.2 ; Licht ausschaltenajmp ANFANG ; Springe zur Adresse Anfang

PROGRAMM_ENDE:ljmp 800H ; Monitoreinsprungend

In diesem Programm werden die Befehle für das Setzen bzw. Rücksetzen einzelner Bits an den Portsverwendet.

Der Assembler erzeugt auf aus dieser Source ein Listing, bei dem sowohl die Speicherplätze für dieeinzelnen Befehle als auch die Übersetzungen der Befehle selbst im hexadezimalen Code angegebensind.Das Debugging des Programms kann dann entweder auf der Basis des übersetzten Codes erfolgenoder auf der Basis der Sourcen.

11.7.3 Assembler-Anweisungen im Detail

Über die vorstehend vorgestellten Maschinenbefehle des 8051 Mikrocontrollers hinaus gibt esweitere Assembler-Befehle, welche z. B. dazu dienen, bestimmte Speicherbereiche anzuwäh-len.oderdem Assembler-Programm sonstige Informationen zu geben.

Die nachfolgenden Beispiele gelten für das ASM51 Assembler-Programm der Fa. Intel, das für die8051-Familie verwendet wird.Zum Verständnis der Befehle ist es notwendig, die Adressierungsmöglichkeiten für den Speicher des8051 zu kennen:

Externer

Programm-

speicher

FFFF

2000

1FFF

000

Intern

/ EA = 1

Extern

/ EA = 0

1FFF

0000

FF

80

Obere

128 Byte

internes

RAM

nur

80535

Special

Function

Register

FF

80

geteilte Adressbereiche

FFFF

0000

externer

Daten-

speicher

7F

00

Untere

128 Byte

internesRAM

Adressierung

Register - indirekt

direkt Byte

(beide Adressierungen)

Abb. 11.16: Adressierungsarten für den 8051 Controller

Nachstehend ist eine Liste von Befehlen für den ASM 51 Makro-Assembler von Intel angegeben,den diese Firma für den 8051 liefert:Symb. Adresse/ Anweisg Operand Funktion

Page 21: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

21

Namen

Speicher-Initialisierung und -Reservierung

[<name>] DB <expression> define Byte in progr. memory<string>, <list> (definiere Byte im Progr.-speicher)

[<name>] DW <expression> def. word (16 Bit) in pr. mem.<string>, <list>

(definiere 16-Bit-Wort im Progr.-Speich.)[<name>] DS <expression advance active allocat. counter

(reserviere <expession> Byte im Speicher)[<name>] DBIT <expression> advance bit location counter

(reserviere <expression> Bit im Bit- adressierb. Speicher)

Symbol-Definitionen

[<name>] EQU <expression> create new symbol (fest)(Definition eines neuen Symbols, nicht redefinierbar)

[<name>] SET <expression> create new symbol (tempor.)(Definition eines neuen Symbols, redefinierbar)

USING <expression> select register bank - 0, 1, 2, 3 - (R1, R2,....R7)(Wahl einer aktuellen Registerbank R0...R7)

[<name>] CODE <expression> define code address symbol(Definition eines Symbols im Programmspeicher)

[<name>] DATA <expression> define data address symbol(Definition eines neuen Symbols im internen Datenspeicher)

[<name>] IDATA <expression> def. indir. address symbol(Definition eines neuen Symbols im internen indirektadressierbaren Datenspeicher)

[<name>] XDATA <expression> def. off-chip data addr. symb.(Definition eines neuen Symbols im externen Datenspeicher)

[<name>] BIT <expression> def. a bit address symbol(Defintion eines Symbols im Bit-adressierbaren Bereich)

Relative Segmente

<segment- SEGMENT {CODE/XDATA/DATA/IDATA/BIT} decl. relocatab. segm.name> [_{PAGE/INPAGE/INBLOCK/ [assign attributes]

BITADRESSABLE/UNIT}](Definition eines Segmentnamens mit einer Typangabe sowie ggf. Speichergrenzen)

RSEG <segment-name> sel. relocatab. segm.(Aktivieren des vorher definierten relativen Segments<segment-name>

Absolute Segmente

Page 22: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

22

CSEG {at<absol.addr.>} select code segment(die folgenden Befehle und Definitionen werden auf absolute Adressen im Code-Segment bezogen)

DSEG {at<absol.addr.>} select int. data segm.(Die folgenden Definitionen werden auf absolute Adressen im internen Datenspeicher-Segment bezogen)

ISEG {at<absol.addr.>} sel. indir. int. segm.(Die folgenden Definitionen werden auf absolute Adressen im indirekt adressierb. Datenspeicher-Segm. bezogen)

XSEG {at<absol.addr.>} sel. ext. data segm.(Die folgenden Definitionen werden auf absolute Adressen imexternen Datenspeicher-Segment bezogen)

BSEG {at<absol.addr.>} sel. bit addr. segm.(Die folgenden Definitionen werden auf absolute Adressen imbitadressierbaren Segment bezogen)

Assembler-Kontrolle für Zustände

ORG <expression> set loc. count. value(setzen des Adresszählers auf <expression>)

END end of program

Es ist also möglich, mit Hilfe des Sprachumfanges des Assemblers symbolische Zuweisungen,Deklarationen etc. vorzunehmen sowie insbesondere Speicher- Bereiche zu deklarieren undauszuwählen.

Es ist eine Reihe von Konventionen einzuhalten:

Vereinbarungen für Symbole und Syntax:

Ein Symbol kann Segmente, Register, Adressen und Zahlen repräsentieren. Symbole:

− beginnen mit Buchstaben oder Sonderzeichen− die ersten 31 Zeichen sind signifikant, maximale Länge 255 Zeichen− keine Unterschiede zwischen Groß- und Kleinschreibung, beides zulässig

Beispiel: Programm_ENDE

Syntax von Zahlenwerten:

− das erste Zeichen muß eine Ziffer sein. Nicht FFH, sondern 0FFH !

Marken und Labels:

− Symbolnamen haben Doppelpunkt am Schluß− Zuordnung von Berfehlsadressen zu Symbolen

Es kann Speicher als WORD (16 Bit), BYTE (8 Bit) und BIT reserviert werden.

Initialisierung und Reservierung von Speicherbereichen

Page 23: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

23

DB

Das Format einer DB-Anweisung ist:

[label:] DB expression list

Diese Anweisung initialisiert Programmspeicher.

PRIMZAHLEN: DB 1,2,3,5,7,11,13 ; Das Label Primzahlen hat den Inhalt 1

DW

[label:] DW expression list

Diese Anweisung reserviert und initialisiert Worte innerhalb des Programmspeichers

Sprung_Verteiler: DW GO_PROC,BREAK_PROC,DISPLAY_PROC

(eine Sprung-Verteilertaballe wird erstellt durch Aufzählen der Adressen für die Prozeduren)

DS

[label:]DS expression

Diese Anweisung reserviert Speicher in Byte-Schritten.

DBIT

[label:]DBIT expression

Diese Anweisung reserviert Speicher in BIT-Einheiten.

EQU <symbol>EQU<ausdruck>

weist <symbol> den Wert <ausdruck> zu. Ist nicht redifinierbar innerhalb eines Programm-Moduls

Beispiel:

TRUE EQU OFFH

SET <symbol>SET<ausdruck>

weist <symbol> den Wert <ausdruck> zu. Ist eine zeitliche, redefinierbareZuweisung

Beispiel:

TRUE SET OFFH

Registerbänke 0 bis 3:

Page 24: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

24

Diese Registerbänke befinden sich im internen RAM. Adresse 00H - 1FH.Sie können durch den Befehl "USING" ausgewählt werden.

USING USING<ausdruck>

Ausdruck kann Werte von 0 bis 3 haben:Beispiel:USING 1 ; Registerbank 1 wird ausgewählt

Nach dem Einschalten wird automatisch die Registerbank 0 gewählt. Die Symbole R0 bis R7 werdenautomatisch der jeweils aktiven Registerbank zugewiesen. Es kann jeweils nur eine Registerbankaktiv sein.

Registerbank 3

Registerbank 2

Registerbank 1

Registerbank 0

1FH

18H17H

10H0FH

08H07H

00H

R7

R6

R5

R4

R3

R2

R1

R0

@R1

@R0

kann Speicher-Adresse beinhalten

Abb. 11. 17: Registerbank-Struktur im 8051

Programmspeicherbetrieb

CODE <symbol>CODE<adressausdruck>

Definition eines Symbols für ein Byte im Programmspeicherbereich. CODE weist <symbol> denWert <adressausdruck> zu. Ist innerhalb eines Moduls nicht redefinierbar.Beispiel:INT_VEKT_0CODE 03H;

Interruptvektor 0 für externe Inputs hat die Adresse 03.

Der Programmspeicher umfaßt 64 KBytes, wovon 4 kBytes im Prozessor sind. Je nach Status des/EA-Signals wird der interne bzw. externe Programmspeicher angesprochen. Die Adresse steht imBefehlszähler (PC). Außerdem liegen in diesem Adreßbereich die Interrupt-Vektor-Adressen:_____________________________________________________________PC Interrupt-Name Erklärung_____________________________________________________________0000H RESET Startadresse nach RESET0003H EXTIO Externer Interrupt 0000BHTIMER 0 Timer 0 Overflow Interrupt0013H EXTI1 External Interrupt 1001BHTIMER 1 Timer 1 Overflow Interrupt0023H SINT Seriel Channel 0 Interrupt_____________________________________________________________Der interne Datenspeicher

Page 25: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

25

FFH

80H

7FH

2FH

1FH

00H

21 SFR

Special Function

Registers

RAM

RAM Bit-Adressraum

Registerbänke

nur direkt

adresserbar

indirekt @Ri i=0,1

direkt adressierbar

Abb. 11.18: Struktur des internen Datenspeichers

Der interne Datenspeicher ermöglicht eine relativ schnelle Programmbearbeitung. Er kann direktoder indirekt adressiert werden.Für die effektive Nutzung des 8051 ist es notwendig, genau die daten für geschwindigkeitskritischeProgrammteile intern verfügbar zu haben. Der nachfolgende Befehl reserviert internen Speicher:

DATA <symbol>DATA<adressausdruck>

Das ist die Definition eines Symbols für ein Byte im internen RAM oder im SFR. Nicht redefinierbarinnerhalb eines Moduls.Beispiel:TABELLE DATA 70H; Tabelle erhält die Adresse 70H

IDATA <symbol>IDATA<adressausdruck>

Das ist die Definition eines Symbols für ein Byte im indirekt adressierbaren internen RAM (00H-FFH). IDATA weist <symbol> den Wert <adressausdruck> zu. Nicht redefinierbar innerhalb einesModuls.

BUFFER IDATA 60H;

Der externe Datenspeicher

RAM

FFFFH

0000H

nur indirekt adressierbar

über

@DPTR - @Ri

Abb. 11.19: Struktur des externen Datenspeichers

Page 26: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

26

Der externe Datenspeicher ist nur per indirekter Adressierung ansprechbar. Die Adresse stehtentweder in den Registerbänken oder im Datenpointer-Register.

XDATA <symbol>XDATA<adressenausdruck>

Dies ist die Definition für ein Byte im externen RAM. XDATA weist <symbol> den Wert<adressausdruck> zu. Dies ist innerhalb eines Moduls nicht re-definierbar.

WERT1 XDATA 3890H ; WERT1 erhält die Adresse 3890H

Die Bit-Adressen

Im internen direkt und indirekt adressierbaren RAM-Bereich gibt es 16 Bit-adressierbare Register.Jedes einzelne Bit kann direkt adressiert werden.

FFH

80H

7FH

2FH

1FH

00H

21 SFR

Special Function

Registers

RAM

RAM Bit-Adressraum

Registerbänke

2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H

7F

0809000102

20H.00

Abb. 11.20: Bit-adressierbarer RAM-Bereich beim 8051

BIT <symbol>BIT<bitadr>

Dem Symbol für ein Bit wird der Wert <bitadr> zugewiesen (20H-2FH /32-47). Nicht redefinierbar.Beispiel:

ALARM BIT P1.3 ; Alarm-Taste ist an Pin Port 1.3 angeschlossenOPEN_DOOR BIT ALARM+1; entspricht P 1.4

Die Zuweisungen in Form von <BIT> <DATA> werden in den Register-Deklarationsdateiengeführt.

Segmente

Segmente sind Speicherbereiche. Entsprechend den 5 Speicherbereichen beim 8051 gibt es auch 5Segmente. Jedem Segment ist ein Adreßzähler zugeordnet. Aktiviert man ein Segment, so wirddieser Adresszähler zunächst auf die Basisadresse 0 gesetzt. Ist eine andere Basisadresse angegeben,so wird diese verwendet.

Page 27: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

27

interner / externerProgrammspeicher

externer Daten-speicher

FFFH

OOOH

CSEG XSEG

FFFH

000H

FFH

80H

7FH

2FH

1FH

00H

21 SFR

Special Function

Registers

RAM

Registerbänke

nur direkt

adresserbar

indirekt @Ri i=0,1

direkt adressierbar

BSEF

DSEG

ISEG

Abb. 9.21: Speichersegmente des 8051 Controllers

Die Speichersegmente umfassen:

CSEG den externen oder internen Programmspeicher

XSEG den externen Datenspeicher

DSEG den internen direkt adressierbaren Datenspeicher

ISEG den internen indirekt adressierbaren Datenspeicher

BSEF den internen bitadressierbaren Datenspeicher

Relative Segmente

Relative Segmente sind eine spezielle Konstruktion, welche verschiebbare Speicherbereiche für denAssembler definiert.Zum Beispiel dient der Befehl <segment-name> SEGMENT DATA zur Erzeugung eines verschieb-baren Datensegments.

Der Location Counter wird relativ innerhalb des internen Datenspeicherbereiches auf 0 gesetzt undein entsprechendes Segment definiert. Entsprechend sehen die Anweisungen für die anderenSpeicherbereiche aus. Weitere Angaben sind:

PAGEGibt die Seiten in einem Vielfachen von 256 Bytes für Programm-speicher oder externenDatenspeicher-Segment an. Ist nur gültig für Programmspeicher und externen Datenspeicher.

INPAGEDas Segment liegt innerhalb eines 256 Byte großen Blocks. Gültig für Programmspeicher undexternen Datenspeicher.

INBLOCKDas Segment liegt innerhalb eines 2048 byte großen Blocks. Gültig nur für Programmspeicher.

RSEG <segment-name>Diese Anweisung aktiviert das vorher definierte relative Segment.

Page 28: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

28

Absolute Segmente

Hier erfolgt die Anweisung ohne Label. Sie enthält die Adresse für den zugehörigen Adresszähler(location counter). Default-mäßig ist diese Adresse 0. Wird innerhalb eines Programms das Segmentgewechselt, so wird dieses Segment mit der Adresse des vorher verlassenen Segments fortgesetzt.

Assembler-Anweisungen ORG-END

ORGDurch die ORG-Anweisung kann der Programmierer Programme und Daten in bestimmtenSpeicherbereichen ablegen, also auch von Hand Linker-Operationen ausführen. Benutzt wird dieAnweisung z. B. zum Beschreiben von Interrupt-Adressen. Eine alternative Möglichkeit derBeschreibung ist die EQU-Anweisung mit symbolischen Namen.

ENDDiese Anweisung kennzeichnet die letzte Programmzeile. Es ist kein Label erlaubt.

Quellcode-Anweisungen für den Linker

Spezielle Anweisungen im Linker sind notwendig, um mehrere Module zusammenzubinden.

PUBLICDurch diese Anweisung an den Assembler werden die nachfolgenden namen für andere Moduleverfügbar. Normalerweise sind dagegen Namen nur in einem Modul lokal verfügbar.

EXTERNDurch diese Anweisung an den Assembler werden dem Linker externe, d. h. außerhalb des Modulsstehende Symbole bekanntgemacht. Diese Symbole können als Zieladresse für jump- oder call-Befehle dienen.

NAMEHiermit wird der Name eines Moduls für den Linker definiert. Default-Einstellung ist der Dateiname.Dazu existieren Bedingungen:− keine Ziffer am Anfang des Namens− muß am Anfang eines Moduls stehen− kein Label

Beispiel: NAME MATH_32_MODUL

Assembler-Steueranweisungen

Hier sollen nur die wichtigsten angegeben werden:

MOD51 und NOMOD51

Mit MOD51 (default) benutzt der Assembler die Bitsymbole des 8051.Mit NOMOD51 werden die Standard-Symbole des 8051 ausgeschaltet und der Assembler gibt dieSymbole frei, die mit der Include-Datei PDF eingebunden werden.

Beispiel:

$nomod51DEBUG und NODEBUG

Page 29: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

29

Dieser Parameter aktiviert bzw. unterdrückst die Symboltabelle in der Objektdatei für dassymbolische Debuggen.

$debug

LIST und NOLIST

Steuert das Erstellen bzw. Unterdrücken eines Übersetzungsliste.

INCLUDE<file-name>

Fügt das Primärprogramm der Datei <file-name> ein.

$include(reg535.pdf)

TITLE<string>

Erzeugt die Ausgabe der Zeichenfolge <string> in der Übersetzungszeile (max. 60 Zeichen) einerjeden Seite der List-Datei.

§title (.....).

11.7.4 Stack und Special Function Register (SFR)

Der Stack ist im internen RAM des 8051-Prozessors angelegt. Die Adresse wird stets vom Stack-Pointer erzeugt und verwaltet. Dieser zeigt immer auf die oberste Adresse im Stack.

Der Stack ist als LIFO (last-in first-out)-Speicher organisiert und dient vor allem dazu, den letztenStatus des Programmzählers bei Unterprogramm-Sprüngen und bei Interrupts zu speichern. Er kannsowohl zur Speicherung von Daten als auch zur Speicherung des Programm-Statuswortes PSW mitHilfe der Befehle PUSH und POP benutzt werden.

Der Stack-Pointer ist ein 8 Bit breites Register, das eine beliebige Adresse des internen RAM-Speichers enthält. Beim 8051 darf diese Adresse nicht größer als 127 sein. Bei Derivaten (z. B.80535) können alle 256 Bytes adressiert werden. Der Stack-Pointer enthält immer nur die Adressedes letzten auf den Stack gelegten Bytes.

Beim Einschalten des Prozessors wird der Stack-Pointer auf 07H gesetzt, so daß das erste nach demEinschalten durch PUSH gespeicherte Byte die Adresse 08H bekommt. Da sich diese Adresse jedochim bereich der Registerbänke befindet, wird der Stack-Pointer normalerweise speziell mit dem BefehlMOVE SP,#99 auf die Adresse 99 gestellt.

Die wichtigsten Fakten zum Stack:− LIFO-Organisation− PUSH dadr: Inhalt von dard (direct address) wird auf den Stack gelegt, SP = SP + 1− POP dadr: Inhalt von Stack wird auf dadr (direct address) gelegt, SP = SP - 1− LCALL, ACALL, CALL, RET,RETI sind die Befehle für Aufrufe von Unterprogrammen und für

Rücksprünge− Nutzung für Datenspeicherung, PSW− Stack-Pointer 8-Bit-Adresse für internes RAM− beim 8051 darf die Adresse nicht höher als 127 sein− nach RESET wird SP=07H (kompatibilität mit 8048)− MOV SP,#2FH initialisiert Stack, um auf die Adresse 30H = 48D Daten abzulegen, HW

inkremeniert Stack vor PUSH− STACK: DS 10H reserviert 10 Bytes für den Stack (wenig!!)Special Function Register

Page 30: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

30

Special Function Register sind 1 Byte breite Register, die im internen Datenspeicher von 80H bisFFH liegen können. Ein Special Function Register ist beispielsweise das PSW- Programm-Status-Wort. Die Adressierung erfolgt indirekt.

______________________________________________________________________________Abkürzung Adresse Bedeutung----------------------------------------------------------------------------------------------------------------------CY BIT 0D7H Carry FlagAC BIT 0D6H Zus. Carry-Flag für BCD-BetriebF0 BIT 0D5H Allgemeiner User-FlagRS1 BIT 0D4H Register-Bank select Bits (00-Bank0, 01 Bank1)RS0 BIT 0D3H Register-Bank select Bits (10-Bank 2, 11 Bank3)OV BIT 0D2H Overflow FlagF1 BIT 0D1H Allgemeiner User-FlagP BIT 0D0H Parity-Flag, wird bei jeder Instruktion gesetzt bzw.

rückgesetzt, ODD-EVEN vom Akkumulator---------------------------------------------------------------------------------------------------------------------

Der 8051 kann im Multi-Tasking-Betrieb verwendet werden, Voraussetzung dazu sind die viergetrennten Register-Bänke. Durch die Bits RS1, RS0 wird die jeweilige Registerbank festgelegt.Die ersten 32 Adressen im RAM sind in diese vier Registerbänke aufgeteilt.

Die nachfolgende Tabelle gibt die Special Function-Register nach funktionellen Gruppen an:

___________________________________________________________________Block Symbol Register Adresse Wert n. RESET-----------------------------------------------------------------------CPU ACC Akku 0E0H 00H

B Hilfsregister B 0F0H 00HDPTR Daten-Pointer

High Byte 83H 000HLow Byte 82H

PSW Progr.-Status-Wort 0D0H 00H

SP Stapel-Zeiger 81H 07HPC Progr.-Zähler 0000H

Interrupt IE Interrupt-Freigabe 0A8H 00H

System IP Interrupt-Priorotät 0B8H 00H

Ports P0 Port0 80H 0FFHP1 Port1 90H 0FFHP2 Port2 0A0H 0FFHP3 Port3 0B0H 0FFH

Serielle SCNO Ser. Port Kontrolle 098H 00HSchnittstelle

SBUF Serielle Ein- Ausg. 99H undefinedPuffer

Timer 0 TCON Zeitgeberkontrolle 88H 00H

Page 31: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

31

Timer 1 TMOD Zeitgebermodus 89H 00H

TH0, Zählerinh. Zeitgeber 08CH 0000HTL0 8AH

TH1, Zählerinh. Zeitgeber 18DH 0000HTL1 8BH

Für andere, weiterentwickelte Mitglieder der 8051-Familie gibt es dazu kompatible, teilweiseumfassende Erweiterungen.

11.9 Standardkopf für ein 8051-Assemblerprogramm

Abschließend soll ein Standard-Kopf für eine Assemblerprogramm vorgestellt werden, wie er sich inder Praxis bewährt hat. Es gilt in dieser Form für den 80535-Prozessor.

$nomodus51 ; 8051 Default-Modus abgeschaltet$debug ;$nolist ; kein Listing fuer reg535$include(reg535.pdf) ; 80535-spezifische Dateien eingebunden$list ; Listing des Programms wird erstellt$title (.....) ; Programmname;----------------------------------------------------------------------;Programmbeschreibung;----------------------------------------------------------------------; Programm:; Datum:; Programmierer (Name);; Verwendete Einsprünge: (keine); Verwendete Unterprogramme: (keine);; Verwendete Register und Variable; Registerbank (0);; Kommentar:; Aenderungen:; Datum:;--------------------------------------------------------------------------;Initialisierungsteil für allgemeine Konstanten;--------------------------------------------------------------------------CSEG AT 0H ; legt absolute Codesegment-Adresse auf 0Hjmp INIT ; Sprung auf Initialisierungsroutine

Page 32: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

32

;--------------------------------------------------------------------------;Interrupt-Vektoren;-------------------------------------------------------------------------;;--------------------------------------------------------------------------;Initialisierungsteil fuer On-Chip-Peripherie;--------------------------------------------------------------------------ORG 100H ; Programmspart bei 100HINIT:;--------------------------------------------------------------------------;Programmbeginn;--------------------------------------------------------------------------ABFRAGE:

Page 33: 11. Mikrocontroller 11.1 Einführungantriebstechnik.fh-stralsund.de/1024x768/Dokumentenframe/... · Informatik V-Teil 2,Kap. 11, SS 99 1 11. Mikrocontroller 11.1 Einführung Mikroprozessoren

Informatik V-Teil 2,Kap. 11, SS 99

33