95

Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

  • Upload
    ngonhi

  • View
    228

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,
Page 2: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

27

Kapitel 1

Mikrocontroller-8051-Familie und AT89C51

Was haben Analog Devices, Atmel, Cypress Semiconductor, Dallas Semiconductor,Goal, Hynix, Infineon, Intel, OKI, Philips, Silicon Labs, SMSC, STMicroelectro-nics, Synopsis, TDK, Temic, Texas Instruments und Winbond gemein? Sie alle bie-ten 8051-basierte Mikrocontrollerbausteine bzw. IP-Cores an!

Aufgrund der großen Verbreitung dieser Mikroprozessorfamilie und damit ver-bunden mit großen Softwarebibliotheken gibt es auch eine Vielzahl von syntheti-sierbaren Implementierungen. Diese sind als so genannte IP-Cores in einerHardwarebeschreibungssprache wie beispielsweise VHDL frei und im Quelltextverfügbar. Sie eignen sich für den Einsatz in FPGAs und anwendungsspezifischenintegrierten Schaltungen (ASICs).

1.1 Einführung

Seit der Einführung des 8-Bit-Mikrocontrollers 8048 im Jahre 1976 von Intel, desersten Ein-Chip-Mikrocontrollers auf einem einzigen integrierten Baustein, istdiese so vielseitig einsetzbare Schaltung durch Entwicklung einer Reihe ähnlicherBausteine mit unterschiedlichen Zielsetzungen entwickelt worden. Zum Beispielwurde beim Mikrocontroller 8049 sowohl die Programm- als auch die Datenspei-cherkapazität gegenüber dem 8048 (oder seiner EPROM-Version 8748) verdop-pelt. Für Anwendungen, bei denen nur externe Programmspeicherkapazitäterforderlich ist, stehen die Mikrocontroller 8035 und 8039 zur Verfügung. Derkostengünstige Mikrocontroller 8021 ist für Anwendungen vorgesehen, die miteiner geringeren Anzahl von Ein/Ausgabeleitungen auskommen und er arbeitetbei niedrigerer Geschwindigkeit mit einer Teilmenge des 8048-Befehlsvorrats.

Der Mikrocontroller 8051 und seine Nachfolger sind inzwischen eine industrielleStandardschaltung geworden, die von zahlreichen Halbleiterherstellern angebotenund weltweit eingesetzt werden. Von beiden Familien haben die Halbleiterherstellerzahlreiche Schaltkreise in der CMOS-Version zur Verfügung gestellt und entwickeltund CMOS-Versionen aller anderen Schaltungen sowie weitere Mikrocontroller, diesich durch zusätzliche anwenderorientierte Funktionen auszeichnen.

Bei allen Herstellern sind zahlreiche Mikrocontroller mit stark erhöhter Integra-tionsdichte verfügbar, die aufgrund ihrer hohen Leistungsfähigkeit neue Anwen-

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 3: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

28

dungsbereiche erschließt. Die Leistungsfähigkeit dieses Mikrocontrollers 8051 istgegenüber dem 8048 beträchtlich gesteigert worden, indem ca. 60 000 Transisto-ren auf die Chipfläche aufgebracht werden. Der 8051 gehört zur Mikrocontroller-Familie 8051, die auch die Mikrocontroller 8031 (ohne ROM) und 8751 (mitEPROM) umfasst. Die Mitglieder dieser Familie sind die Mikrocontroller 8052und 8032, die sich durch Verdopplung der RAM-Kapazität auf 256 Bytes sowie –beim 8052 – durch Verdopplung der ROM-Kapazität auf 8 Kbyte auszeichnen (der8032 hat kein ROM). Außerdem sind diese beiden Mikrocontroller mit einemzusätzlichen Timer mit speziellen Eigenschaften ausgerüstet.

Ab 1980 kamen mehrere Einchip-Mikrocontroller aus der Familie 8051 auf denMarkt. Der 83C152 und 83C252 von Intel, der 80C154 von OKI, der 83C552 vonPhilips/Valvo, der 82C451 von Philips/Signetics und 80512, 80515 und 80C517 vonSiemens. Alle diese Mikrocontroller sind mit einem Watchdog-Timer, 8-Bit-Ana-log-/Digital-Wandler, Impulsweitenmodulation und einer seriellen Schnittstellenach I²C ausgerüstet.

Die Einchip-Mikrocontroller-Familie hat sehr viele Mitglieder hervorgebracht,doch weisen alle mehr oder weniger gemeinsame Merkmale auf:

� 8-Bit-Prozessorkern mit einheitlichem Befehlssatz

� mindestens 128 Bytes internes RAM

� externes RAM und ROM

� einheitliches Adressierungsmodell für so genannte »Special Function Register« (SFR)

� Full-Duplex-UART

� fünf Interrupt-Quellen

� zwei Interrupt-Prioritäten

� diverse Timer

Aufgrund der unterschiedlichen Befehlslängen von einem bis zu drei Byte sowieden unterschiedlichen Ausführungszeiten für einen Befehl handelt es sich ein-deutig um eine CISC-Architektur. Neben dem klassischen CISC-Mikrocontroller(complex instruction set computer), wie man diese bei den Mikroprozessoren inder PC-Technik findet, verwendet man immer mehr die modernen RISC-Mikro-controller (reduced instruction set computer). Diese Mikrocontroller setzen einenreduzierten Befehlssatz ein, der wesentlich effizienter ist und dadurch auch erheb-lich schneller das Programm abarbeitet. Trotzdem hat die CISC-Architektur erheb-liche Vorteile in der Ausbildung und im Studium.

Ein Befehlszyklus entspricht in der ursprünglich von Intel entwickelten Struktureinem bis drei Maschinenzyklen. Ein Maschinenzyklus entspricht zwölf Taktzy-klen. Heute übliche Varianten des 8051 kommen hingegen meist mit zwei Taktzy-klen pro Maschinenzyklus aus und damit ist bei gleicher Taktfrequenz einedeutlich höhere Befehlsabarbeitung möglich.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 4: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

29

Eine Besonderheit des 8051 ist der Bitprozessor, der im bitadressierbaren Bereicheine schnelle und einfache Bitmanipulation erlaubt.

1.1.1 Unterschiede in der Familie 8051

Die in NMOS-Technologie (im Jahr 1976) gefertigten 8051 und 8031 von Intel undden anderen Halbleiterherstellern wurden ab diesem Zeitpunkt in CMOS-Technikhergestellt. Auf technische Unterschiede der NMOS- und CMOS-Versionen bezüg-lich der Oszillator-Beschaltung und des Betriebs bei reduzierter Leistung wird nocheingegangen. In Tabelle 1.1 sind die Mikrocontroller der Familie 8051 aufgelistet.Weitere Unterschiede der einzelnen Schaltungen sind in den folgenden Ausführun-gen beschrieben. Oft wird die Bezeichnung 8051 auch als Oberbegriff für dieseSchaltungen verwendet.

NMOS-Varianten

Typ ROMintern

RAMintern

Bemerkung

8031 – 128 zwei 16-Bit-Timer, ein UART, zwei externe Interruptquellen

8032 – 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen

8051 4096 128 zwei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, maskenprogrammierbares ROM

8052 8192 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, maskenprogrammierbares ROM

8751 8192 128 zwei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, EPROM als OTP oder mit UV-Fenster

CMOS-Varianten

Typ ROMintern

RAMintern

Bemerkung

80C31 – 128 zwei 16-Bit-Timer, ein UART, zwei externe Interruptquellen

80C32 – 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen

80C51 4096 128 zwei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, maskenprogrammierbares ROM

80C52 8192 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, maskenprogrammierbares ROM

80C54 16384 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, maskenprogrammierbares ROM

80C58 32768 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, maskenprogrammierbares ROM

87C51 8192 128 zwei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, EPROM als OTP oder mit UV-Fenster

87C52 8192 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, EPROM als OTP oder mit UV-Fenster

89C52 32768 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, Flash-Speicher

Tabelle 1.1: NMOS- und CMOS-Varianten der Familie 8051

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 5: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

30

Darüber hinaus gibt es von verschiedenen Firmen erweiterte 8051-Mikrocontrol-ler, z.B. von Siemens (heute Infineon) entwickelt und in NMOS-Technologie her-gestellt, wie Tabelle 1.2 zeigt.

Die CMOS-Varianten der Infineon-Serie sind funktionsgleich, allerdings nicht inallen Varianten pinkompatibel.

Weitere moderne 8051-kompatible Mikrocontroller, die in CMOS-Technologie mitFlash-Speicher hergestellt werden und eine schnellere Befehlsverarbeitung zulas-sen sind erhältlich. Tabelle 1.3 zeigt Typen von verschiedenen Herstellern.

Typ ROMintern

RAMintern

Bemerkung

80515 8192 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, PWM, 8-fach A/D-Wandler, maskenprogrammierbares ROM

80535 – 256 drei 16-Bit-Timer, ein UART, zwei externe Interruptquellen, PWM, 8-fach A/D-Wandler

Tabelle 1.2: 8051-Familie von Siemens (heute Infineon)

Hersteller Typ Flashintern

RAMintern

Bemerkung

ATMEL AT89C2051 2048 128 nur 20 Pins, kein externer Daten-/Adressbus, zwei 16-Bit-Timer, ein UART, ein Komparator, Flash-Speicher

ATMEL AT89C4051 4096 128 nur 20 Pins, kein externer Daten-/Adressbus, zwei 16-Bit-Timer, ein UART, ein Komparator, Flash-Speicher

ATMEL AT89C51ED2 16384 256 bis zu sechs Ports (je nach Gehäusegröße), 1792 Bytes internes MOVX-SRAM, RS232-Bootloader im ROM, 2048 Bytes, internes Daten-EEPROM, drei 16-Bit-Timer, ein UART, ein Komparator, zwei Stackpointer, PWM, SPI, Flash-Speicher

MAXIM/DALLAS

DS89C430 16384 256 ein Taktzyklus pro Befehl, max. 33 MIPS bei 33 MHz, 1 Kbyte internes MOVX-SRAM, RS232-Bootloader im ROM, 2048 Bytes, internes Daten-EEPROM, drei 16-Bit-Timer, ein UART, ein Komparator, zwei Stackpointer, Flash-Speicher

MAXIM/DALLAS

DS89C450 65536 256 ein Taktzyklus pro Befehl, max. 33 MIPS bei 33 MHz, 1 Kbyte internes MOVX-SRAM, RS232-Bootloader im ROM, 2048 Bytes, internes Daten-EEPROM, drei 16-Bit-Timer, ein UART, ein Komparator, zwei Stackpointer, Flash-Speicher

Tabelle 1.3: 8051-kompatible Mikrocontroller in CMOS-Technologie

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 6: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

31

In der ursprünglichen Form des 8051 handelt es sich um eine Harvard-Architek-tur, jedoch besitzen viele neuere 8051-Entwicklerboards eine modifizierte Har-vard-Architektur. Mit dieser Architektur wird ein Teil des XRAM (extended dataRAM) mittels eines Adressdecoders in den Programmspeicher gespiegelt. Diesermöglicht einer meist ab ROM laufenden Terminalsoftware, z.B. per serielleSchnittstelle kommende Software in den Programmspeicher zu laden und nachdem Übertragen auszuführen. Der Stack befindet sich immer frei definierbar iminternen RAM. Die Bytereihenfolge ist »Little Endian First«.

1.1.2 Vom Einchip-Mikrocontroller 8048 zur 8051-Familie

Die Architektur-Erweiterung der Mikrocontroller der Familie 8051 gegenüber demindustriellen Standard-Einchip-Mikrocontroller 8048 führt sowohl zu einer Leis-tungserhöhung der Zentraleinheit (CPU) als auch zu einer Erhöhung derLeistung, der Vielfalt und der Anzahl der auf dem Chip integrierten sonstigen Ein-heiten. Die Mikrocontroller der Familie 8051 sind daher besonders für Anwendun-gen geeignet, die eine große Anzahl von Funktionen auf dem Chip sowie einehohe Geschwindigkeit erfordern. Den Anwendern des 8048 stellen sie sich alsaufwärts-kompatible Schaltungen mit stark erhöhter Leistungsfähigkeit undGeschwindigkeit dar.

Der 8051 ist ein 8-Bit-Einchip-Mikrocontroller hoher Leistungsfähigkeit, der fürAnwendungen mit den größten Anforderungen geeignet ist, die von einem derar-tigen Mikrocontroller bewältigt werden können. Seine hohe Leistungsfähigkeit imVergleich zu anderen Mikroprozessoren und Mikrocontrollern zeigt sich vor allembei der Lösung schwieriger Realzeitaufgaben, z.B. im Bereich industrieller Steue-rungen, in der Peripherie von Großrechenanlagen (als intelligente Schaltungen)oder für allgemeine Aufgaben im Automobilbau, Haushaltsgeräten usw.

Der 8051 beinhaltet die Hardware-Merkmale, die Architekturerweiterungen sowiedie Befehle, die ein leistungsstarker und kosteneffektiver Mikrocontroller fürAnwendungen haben muss, die bis zu je 64-Kbyte-Programmspeicher- und/oderDatenspeicher-Kapazität erfordern. Mit diesen Eigenschaften wurde der 8051 zumStandard-Mikrocontroller in den achtziger Jahre und seine Anwendung hält bisheute an.

Abbildung 1.1 zeigt Anschlussschema, Logiksymbol und Blockdiagramm desMikrocontrollers 8051. Die Funktionen der einzelnen Einheiten werden nocherklärt. In Tabelle 1.4 finden Sie die Anschlussbelegung der Mikrocontroller derFamilie 8051.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 7: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

32

Abb. 1.1: Anschlussschema, Logiksymbol und Blockdiagramm des Mikrocontrollers 8051

Bezeich-nung

Anschluss Ein- oder Ausgang

Aktiv Funktion

USS (0 V) 20 Masseanschluss

UCC (+5 V) 40 Anschluss für die Betriebsspannung

Tabelle 1.4: Anschlussbelegung der Mikrocontroller der Familie 8051

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 8: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

33

P0.0 bis P0.7

32 bis 39 E/A I/O Port 0 ist ein bidirektionaler 8-Bit-Open-Drain-E/A-Port, der bis zu acht LS-TTL-Las-ten aufnehmen oder bei Busoperationen treiben kann. Anschlüsse von Port 0, die eine Eins beinhalten, haben schwebendes Potential und stellen in diesem Zustand Eingänge hoher Impedanz dar. Port 0 ist auch der Anschluss für den im Multiplex-Verfahren arbeitenden, unteren Adressbus sowie den Datenbus, während auf einen externen Speicher zugegriffen wird. In die-sem Fall werden während der Ausgabe von Einsen starke interne Pull-up-Widerstände verwendet. Port 0 gibt auch bestimmte Bytes zur Programmüberprüfung aus. Bei der Anwendung werden externe Pull-up-Widerstände benötigt.

P1.0 bis P1.7

1 bis 8 E/A I/O Port 1 ist ein bidirektionaler 8-Bit-E/A-Port mit internen Pull-up-Widerständen. Seine Ausgangspuffer können bis zu vier LS-TTL-Lasten aufnehmen oder abgeben. Die Anschlüsse von Port 1, in die Einsen geschrieben sind, werden durch interne Pull-up-Widerstände auf hohem Potential gehalten und können in diesem Zustand als Eingänge dienen. Werden die Anschlüsse von Port 1 bei Verwendung als Eingänge extern auf 0-Signal gezogen, so liefern sie wegen der internen Pull-up-Widerstände einen Strom (IIL im Daten-blatt).

P2.0 bis P2.7

21 bis 28 E/A I/O Port 2 ist ein bidirektionaler 8-Bit-E/A-Port mit internen Pull-up-Widerständen. Seine Ausgangspuffer können bis zu vier LS-TTL-Lasten aufnehmen oder abgeben. Port 2 gibt das obere Adressbyte während des Zugriffs auf externe Speicher aus, die 16-Bit-Adressen verwenden. In diesem Fall werden während der Ausgabe von Einsen starke interne Pull-up-Widerstände ver-wendet. Zum Programmieren und bei der Programmüberprüfung des 8751 dient der Port 2 zur Aufnahme des höheren Adress-bytes und von Steuersignalen, außerdem zur Programmüberprüfung beim 8051

Bezeich-nung

Anschluss Ein- oder Ausgang

Aktiv Funktion

Tabelle 1.4: Anschlussbelegung der Mikrocontroller der Familie 8051 (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 9: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

34

P3.0 bis P3.7

10 bis 17 E/A I/O Port 3 ist ein bidirektionaler 8-Bit-E/A-Port mit internen Pull-up-Widerständen. Seine Ausgangspuffer können bis zu vier LS-TTL-Lasten aufnehmen oder abgeben.Die Anschlüsse von Port 3 werden alterna-tiv auch für andere im Folgenden aufge-führte Funktionen verwendet.

P3.0 10 E I/O RXD; Eingang für serielle Daten

P3.1 11 A I/O TXD; Ausgang für serielle Daten

P3.2 12 E 0 INT0; externer Interrupteingang 0

P3.3 13 E 0 INT1; externer Interrupteingang 1

P3.4 14 E 1 T0; externer Eingang für Zähler 0

P3.5 15 E 1 T1; externer Eingang für Zähler 1

P3.6 16 A 0 WR; Strobe-Signal zum Schreiben in den externen Datenspeicher

P3.7 17 A 0 RD; Strobe-Signal zum Lesen aus dem externen Datenspeicher

RST 9 E 0 Rücksetzeingang. Liegt an diesem Anschluss während zweier Maschinenzy-klen ein 1-Signal und läuft der Taktgeber, so wird die Schaltung zurückgesetzt.

ALE/PROG

30 A I/O (Address Latch Enable), Ausgangsimpuls zur Zwischenspeicherung des unteren Adressbytes während des Zugriffs auf einen externen Speicher. ALE wird mit konstanter Frequenz (1/6 der Oszillatorfrequenz) auch dann erzeugt, wenn auf den externen Spei-cher nicht zugegriffen wird. Es steht für einen etwa benötigten externen Takt oder externe zeitliche Abläufe zur Verfügung. (Allerdings wird bei jedem Zugriff auf einen externen Datenspeicher ein ALE-Impuls übersprungen.) Zum Programmieren des EPROM (8751) erhält dieser Anschluss den Programmierimpuls (PROG).

PSEN 29 (Programm Store Enable). Strobe-Signal zum Lesen des externen Programmspei-chers. Beim Lesen aus diesem Speicher wird PSEN zweimal während eines jeden Maschinenzyklus aktiviert, jedoch erfolgt beim Zugriff auf einen externen Daten-speicher keine Aktivierung. Auch wird PSEN beim Lesen aus dem internen Pro-grammspeicher nicht aktiviert.

Bezeich-nung

Anschluss Ein- oder Ausgang

Aktiv Funktion

Tabelle 1.4: Anschlussbelegung der Mikrocontroller der Familie 8051 (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 10: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

35

1.1.3 Bussysteme

Drei Bussysteme verbinden die drei Funktionseinheiten Mikrocontroller, Speicher(RAM und ROM), sowie die Ein-/Ausgabebaugruppen, wie Abbildung 1.2 zeigt.

� Datenbus: Acht Leitungen, auf denen die Daten zwischen Mikrocontroller,Speichereinheiten (RAM und EPROM) und I/O-Einheiten übertragen werden.Der Datenbus kann in beide Richtungen übertragen (Zweiweg-Datenübertra-gung).

� Adressbus: 16 Leitungen, über die bestimmte Speicherplätze oder Ein-/Ausga-bebaugruppen ausgewählt werden (Einweg-Datenübertragung), wobei achtkombinierte Leitungen auf dem Datenbus vorhanden sind. Aus diesem Grun-de ist der ALE-Ausgang (Adress Latch Enable) für die Zwischenspeicherungder Adressen notwendig.

� Steuerbus: Sechs Leitungen, die dem Prozessorzustand entsprechende Steuer-signale übertragen (Einweg-Datenübertragung)

Speicher werden nicht nur zur Aufbewahrung von Befehlen (Anweisungen) benö-tigt. Es können auch Daten anfallen, die zur Durchführung eines Programmserforderlich sind. Es werden zwei Arten von Daten unterschieden: Zum einen gibtes Daten, deren Wert sich nicht ändert wie z.B. die Zahl = 3,141..., Zahlen dieserArt heißen Konstanten. Zum anderen gibt es Daten, deren Werte sich ändern kön-nen. Diese veränderbaren Daten sind Variablen.

EA/UPP 31 A 0 (External Access). Wenn EA auf 1-Signal gehalten wird, liest die CPU aus dem internen Programmspeicher, es sei denn, der Programmzähler überschreitet den Wert 0FFFH (beim 8051). Hält man EA jedoch auf 0-Signal, so wird die CPU gezwungen, unabhängig vom Wert des Programmzählers aus dem externen Pro-grammspeicher zu lesen. Beim 8031 muss EA durch externe Verdrahtung auf 0 gebracht werden. Zum Programmieren des EPROM (8751) wird die Program-mierspannung UPP = 21 V an diesen Anschluss gelegt.

XTAL1 19 E 0 Eingang zum invertierenden Verstärker des Taktgenerators

XTAL2 18 A Ausgang vom invertierenden Verstärker des Taktgenerators

Bezeich-nung

Anschluss Ein- oder Ausgang

Aktiv Funktion

Tabelle 1.4: Anschlussbelegung der Mikrocontroller der Familie 8051 (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 11: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

36

Abb. 1.2: Bussysteme in einem Mikrocontroller

Der gesamte Speicher kann sich aus unterschiedlichen Bausteinen und Technolo-gien zusammensetzen. Zum Speichern von unveränderlichen Daten benutzt manSpeicherbausteine, deren Inhalt sich nach dem Programmieren nicht mehr verän-dern lässt. Damit geht nach dem Abschalten der Betriebsspannung auch derInhalt dieser Speicher nicht mehr verloren. Der Inhalt solcher Speicher kann wäh-rend des Betriebs nur gelesen, nicht aber überschrieben werden. Speicher dieserArt werden als Nur-Lese-Speicher, Festwertspeicher oder Festspeicher bezeichnet.Die gebräuchliche Abkürzung ist ROM (Read Only Memory).

Als Arbeitsspeicher für variable Daten sind Speicherbausteine erforderlich, indenen sich auch während des Betriebs die Daten noch ändern lassen. Solche Spei-cher nennt man Schreib-Lese-Speicher, abgekürzt RAM (Random AccessMemory).

ROM- und RAM-Bausteine arbeiten mit wahlfreiem Zugriff, was bedeutet, dassdie Speicherplätze in beliebiger Reihenfolge ansprechbar und gleich schnellerreichbar sind.

1.1.4 Programmierung in Assemblersprache

In diesem Abschnitt erhalten Sie eine kurze Beschreibung des Mikrocontrollersals Grundlage für die Programmierung in Assemblersprache.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 12: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

37

Im 8051 sind folgende wesentliche Teile integriert:

� Mehrere Arbeitsregister zur Durchführung der Operationen und zur Adressie-rung

� Der Befehlszähler, der die Adresse des nächsten auszuführenden Befehls ent-hält

� Der Stackpointer, dessen Inhalt die Anfangsadresse des Stacks im Rahmen desArbeitsspeichers definiert. Durch diesen Stack wird die Verwendung von Un-terprogrammen und Unterbrechungsprogrammen (Interrupt-Subroutinen)besonders erleichtert.

Zu diesen, auf dem Mikrocontroller integrierten Funktionseinheiten kommennoch folgende Teile, über die der Programmierer unbedingt Bescheid wissenmuss:

� Der Programmspeicher (aufgebaut mit ROMs, PROMs, EPROMs oder Flash),in dem das Anwendungsprogramm oder die Konstanten des Mikrocomputersabgespeichert sind und der byteweise adressiert wird

� Der Datenspeicher, der mit RAMs aufgebaut ist (Schreib-Lese-Speicher), indem die Momentan-Ergebnisse bzw. Daten des Mikrocomputers abgespeichertsind und der ebenfalls byteweise adressiert wird

� Die Eingabe-Ausgabesteuerung, die aus Bausteinen besteht, über die der Mi-kroprozessor mit seiner Umgebung in Kontakt steht

Im Mikrocontroller stehen ein 8-Bit-Akkumulator und mehrere 8-Bit-Zwischenre-gister zur Verfügung. Diese acht Register werden über die Ziffern 0 bis 7 in einerSpeicherbank angesprochen. Die Registerpaaranordnung ist:

� Der Befehlszähler ist ein dem Programmierer zugängliches 16-Bit-Register,das die Adresse des nächsten auszuführenden Befehls enthält.

� Der Stack ist ein Teil des Arbeitsspeichers (RAM), der vom Programmierer de-finiert wird. In ihm sind Daten oder Adressen gespeichert, die gegebenenfallsdurch Stackoperationen aufgefunden werden können. Eine Reihe der Befehlesind in der Lage, auf diesen Stack zuzugreifen, und erleichtern somit das Ar-beiten mit Unterprogrammen und Unterbrechungen (Interrupts). Das Stack-pointerregister erlaubt dem Programmierer den Zugriff auf die Adressen desStacks.

� Verbindung zur Außenwelt stellt im System der Mikrocontroller über seinemaximal 256 Eingabe- und 256 Ausgabeports (Port = Kanal) her. Jeder dieserPorts verkehrt mit dem Mikrocontroller über Datenbytes, die entweder den Ak-kumulator setzen oder von ihm gesetzt werden. Jedem dieser Ports ist eineZahl zwischen 0 und 255 zugeordnet. Auf diese Zuordnung hat der Program-mierer keinen Einfluss.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 13: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

38

Ein Programm besteht aus einer Reihe von Befehlen. Jeder Befehl löst eine ele-mentare Operation, wie eine Datenübertragung, eine arithmetische oder logischeOperation mit einem Datenbyte bzw. -wort, oder eine Änderung der Reihenfolgeder auszuführenden Befehle aus. Ein Programm wird als eine Reihe von Bitsdargestellt, die die Befehle des Programms repräsentieren und die wir hier mithexadezimalen Ziffern symbolisieren. Die Speicheradresse des nächsten, auszu-führenden Befehls steht im Befehlszähler (Program Counter). Vor der Ausfüh-rung eines Befehls wird der Befehlszähler um 1 erhöht und enthält so die Adressedes nächstfolgenden Befehls. Das Programm läuft prinzipiell sequenziell ab, bisein Sprungbefehl (Jump, Call oder Return) ausgeführt wird, wobei der Befehlszäh-ler auf eine vom linearen Ablauf abweichende Adresse gesetzt wird. Das Pro-gramm wird von dieser neuen Speicheradresse an wieder sequenziell fortgesetzt.

Der Inhalt eines Speicherplatzes gibt im Prinzip keinen Hinweis darauf, ob dasbetreffende Byte einen Befehl oder Daten darstellt. So entspricht beispielsweiseder Hexadezimalcode 1FH dem Befehl RAR (schiebe den Inhalt des Akkumulatorsnach rechts, zyklisch, mit Übertrag), was aber ebenso gut den Datenwert 1FH(dezimal 31) darstellen kann. Es ist aber wichtig, in einem Programm sicherzustel-len, dass Daten nicht als Befehle interpretiert werden und durch Trennung vonProgramm und Datenspeicher kann dies einfach erreicht werden.

Jedes Programm hat eine Anfangsadresse, die auf das erste Byte des ersten auszu-führenden Befehls hindeutet. Bevor der erste Befehl ausgeführt wird, wird derBefehlszähler automatisch auf die Adresse des nächsten (auszuführenden)Befehls gesetzt. Diese Prozedur wird für jeden Befehl des Programms wiederholt.Zur Darstellung eines Befehls sind ein, zwei oder drei Bytes nötig. In jedem Fallwird der Befehlszähler automatisch auf den Beginn des nächsten Befehls gesetzt,wie das Beispiel in Tabelle 1.5 zeigt.

Zur Vermeidung von Fehlern muss der Programmierer sicherstellen, dass aufeinen Befehl nicht ein Datenbyte folgt, soweit nach diesem Befehl noch ein weite-rer Befehl zu erwarten ist. So wird z.B. im Byte 021EH ein Befehl erwartet, weilBefehl Nr. 8 nach Befehl Nr. 7 ausgeführt werden muss. Enthält Byte 021EHDaten, so kann das Programm nicht richtig ablaufen. Aus diesem Grund dürfenDaten auf keinen Fall zwischen Befehlen abgespeichert werden.

Programmsprungbefehle verursachen einen Sprung zu einem Befehl, der anirgendeiner Stelle im Speicher liegen kann. Die durch den Sprungbefehl ange-sprochene Adresse muss wiederum die Adresse eines Befehls sein. Es muss alsoauch hier sichergestellt werden, dass das adressierte Byte keine Daten enthält, weilsonst das Programm nicht richtig ausgeführt werden kann.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 14: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

39

1.1.5 Speicheradressierung

Die Adressierung ist ein besonders wesentlicher Teil beim Aufbau eines Pro-gramms. Der Mikrocontroller bietet mehrere Möglichkeiten zur Adressierung:

� Bei der direkten Adressierung liefert der Befehl »explizit« eine Speicheradres-se. Der Befehl »lade den Inhalt der Speicheradresse 1F2A in den Akkumula-tor« ist ein Beispiel für den Befehl mit direkter Adressierung, wobei 1F2A diedirekte Adresse ist. Im Speicher wird das folgendermaßen aussehen:

Durch den Befehl werden drei Bytes im Speicher belegt, von denen das zweiteund dritte direkt die Adresse enthält.

Speicheradresse Befehls-Nr. Inhalt des Befehlszählers

0212 1 0213

0213 2 0215

0214

0215 3 0216

0216 4 0219

0217

0218

0219 5 021B

021A

021B 6 021C

021C 7 021F

021D

021E

021F 8 0220

0220 9 0221

0221 10 0222

Tabelle 1.5: Beispiel zum Setzen des Befehlszählers

Speicheradresse

n 3A

n + 1 2A auszuführender Befehl

n + 2 1F

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 15: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

40

� Die Speicheradresse kann auch durch den Inhalt eines Registerpaares spezifi-ziert sein.

Für fast alle Befehle müssen hierbei die internen Register verwendet werden.Ein Einbytebefehl, der den Akkumulator mit dem Inhalt der Speicheradresse1F2A lädt, sieht folgendermaßen aus:

Außerdem gibt es zwei Befehle, die das Register zur Adressierung verwenden. Wieoben erwähnt, enthält das erste Register des Paares die höherwertigen und daszweite Register die niederwertigen Stellen der Adresse.

� Jeder beliebige Speicherplatz kann auch über den 16-Bit-Stackpointer adres-siert werden. Es gibt nur zwei verschiedene Stackoperationen: das Eingebender Daten in den Stack, das als PUSH, und das Auslesen von Daten aus demStack, das als POP bezeichnet wird. Voraussetzung für die Operation PUSH istselbstverständlich, dass sich der Stack in einem RAM befindet, da ja sonst keinEinschreiben in den Speicher durchgeführt werden kann.

� Durch jede PUSH-Operation werden 16 Datenbits aus einem Registerpaaroder vom Befehlszähler in den Stack gebracht. Die Adresse des Speicherbe-reichs, auf den während des PUSH-Befehls zugegriffen wird, bestimmt mandurch den Stackpointer in folgender Weise:

� die höchstwertigen acht Datenbits werden auf dem Speicherplatz abgespei-chert, der durch den Stackpointer minus 1 adressiert ist,

� die niedrigstwertigen acht Datenbits werden auf dem Speicherplatz abge-speichert, der durch den Stackpointer minus 2 adressiert wird,

� der Inhalt des Stackpointers wird automatisch um 2 verringert.

Im nachfolgenden Beispiel sind die Verhältnisse für den Fall dargestellt, dassder Stackpointer 13A6H enthält, während das Register B6AH und das Register030H enthält:

Speicher Register

B

Auszuführender Befehl 7E C

D

E

1F H

2A L

A

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 16: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

41

� Durch jede POP-Operation werden acht Datenbits vom Stack in ein Register-paar oder in den Befehlszähler gebracht. Die Speicheradresse, auf die durch diePOP-Operation zugegriffen wird, wird durch folgende Verwendung des Stack-pointers bestimmt:

1) Das zweite Register oder die niedrigstwertigen acht Bits des Befehlszählerswerden mit dem Inhalt der Speicherstelle geladen, auf die der Stackpointerzeigt.

2) Das erste Register des Paares oder die höchstwertigen acht Bits des Befehls-zählers werden mit dem Inhalt der Speicherstelle geladen, die durch den Stack-pointer +1 adressiert wird.

3) Der Stackpointer wird automatisch um 2 erhöht.

Im folgenden Beispiel soll angenommen werden, dass der Stackpointer 1508H(Speicherstelle 1508H) den Wert 33H enthält und die Speicherstelle 1509Hden Wert 0BH beinhalten soll. Eine POP-Operation in das Registerpaar Hwürde folgendermaßen aussehen:

Der Programmierer bestimmt den Wert des Stackpointers. Die Definition desStackpointer-Inhalts vor irgendeiner Stackoperation ist nötig, um eine richtigeFunktion des Programms zu gewährleisten.

vor PUSH-Befehl Speicheradresse nach PUSH-Befehl

SP FF 13A3 FF SP

13A6 FF 13A4 30 13A4

B FF 13A5 6A B

6A FF 13A6 FF 6A

C C

30 30

vor POP-Befehl Speicheradresse nach POP-Befehl

SP FF 1507 FF SP

1508 33 1508 33 150A

H 0B 1509 0B H

FF FF 150A FF 0B

L L

FF 33

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 17: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

42

Bei unmittelbarer Adressierung enthält der Befehl eine Konstante. Der BefehlMOV A, 2AH »Lade den Akkumulator mit dem Wert 2AH« ist ein Beispiel für einesolche unmittelbare Adressierung. Im Speicher hat dieser Befehl folgendesAussehen:

Speicherinhalt

1.1.6 Unterprogramme und die Verwendung des Stacks für die Adressierung

Zunächst soll kurz der Begriff »Unterprogramm« erläutert werden. Als Beispielwollen wir die häufig nötige Operation des Multiplizierens verwenden. Der Mikro-controller soll über keinen Befehl für eine Multiplikation verfügen, bietet aber dieMöglichkeit, ein Byte zu einem anderen zu addieren. Man könnte daher eineMultiplikation ausführen, indem man derartige Additionen mehrere Male hinter-einander (je nach Größe des Multiplikators) ausführt. Will man eine Multiplika-tion an mehreren Stellen des Programms durchführen, so müsste man an jederdieser Stellen die ganze Reihe der eben genannten Befehle einfügen. Dazu wärenatürlich sehr viel Speicherplatz nötig:

Da das Unterprogramm für Multiplikation immer gleich bleibt, ist es eigentlichüberflüssig, es jedes Mal einzufügen. Es ist viel besser, es nur abzuspeichern undjedes Mal auszuführen, wenn es benötigt wird:

3E Lade Akkumulator unmittelbar

2A In den Akkumulator zu ladender Wert

Programm

Multiplikationsroutine

Programm

Multiplikationsroutine

Programm

Multiplikationsroutine

usw.

Programm

Programm Multiplikationsroutine

Programm

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 18: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

43

Eine solche Routine nennt man ein Unterprogramm. Der Mikrocontroller bietet dieMöglichkeit zum Aufruf von Unterprogrammen und zum Rücksprung in dasHauptprogramm. Im Einzelnen sieht der Programmablauf unter Verwendungvon Unterprogrammen folgendermaßen aus:

Hierbei wird also während der Ausführung des Aufrufbefehls (z.B. CALL) dieAdresse des folgenden Befehls (das ist der Inhalt des Befehlszählers) in den Stackgebracht und das Unterprogramm ausgeführt. Der letzte Befehl eines Unterpro-gramms ist gewöhnlich ein Rücksprungbefehl (z.B. RET), der eine Adresse vomStack holt und in den Befehlszähler einschreibt. Dadurch wird das Hauptpro-gramm bei dem auf den Aufrufbefehl folgenden Befehl fortgesetzt. Unterpro-gramme können beliebig geschachtelt sein. Die einzige Grenze hierfür bildet derSpeicherplatz, der für den Stack zur Verfügung steht. Dabei ist der Rückweg ausder Verschachtelung identisch mit der Reihenfolge der Aufrufe, auch wenn dasUnterprogramm mehrmals aufgerufen wird.

1.1.7 Register des Mikrocontrollers 8051

Der Mikrocontroller 8051 verfügt über getrennte Adressierbereiche für den Pro-grammspeicher und den Datenspeicher. Der externe Programmspeicher kann biszu 64 Kbyte umfassen. Außerdem befinden sich im ROM auf dem Chip des 8051weitere 4 Kbyte. Der Datenspeicher besteht aus einem auf dem Chip befindlichenRAM von 128 Bytes. In einem weiteren Adressierbereich von 128 Bytes sind nur 21Bytes mit speziellen Funktionsregistern belegt. Außerdem kann die Schaltung aufbis zu 64 Kbyte eines externen Datenspeichers zugreifen. Abbildung 1.4 zeigt dieBlockschaltung des 8051.

Hauptprogramm

Aufrufbefehl

Unterprogrammnächster Befehl

(Pfeile bezeichnen Reihenfolge der Ausführung)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 19: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

44

Abb. 1.3: Blockschaltung des Mikrocontrollers 8051

In Tabelle 1.6 sind die 21 speziellen Funktionsregister mit ihren Kurzbezeichnun-gen sowie Speicherplätzen aufgeführt und anschließend kurz beschrieben. Die

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 20: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

45

mit einem Stern versehenen Register sind sowohl byte- als auch bitadressierbar(11 Register mit Adressen, die durch 8 ohne Rest teilbar sind).

Akkumulator (Register A): Das Register ACC ist der Akkumulator. In den mnemo-nischen Kurzbezeichnungen, die für Befehle mit Bezug auf den Akkumulator ver-wendet werden, wird der Akkumulator nur mit A bezeichnet.

Register B: Das Register B wird beim Multiplizieren und Dividieren benötigt. Beider Abarbeitung anderer Befehle kann es als weiterer schneller Hilfsspeicher die-nen.

Programmstatusregister: Das Programmstatusregister (PSW) enthält das in Tabelle1.7 beschriebene Programmstatuswort.

Kurzbezeichnung (für Assembler)

Register Adresse

Dezimal Hexadezimal

ACC*) Akkumulator 224 E0

B*) Register B 240 F0

PSW*) Programmstatuswort 208 D0

SP Stackpointer 129 81

DPH Datenzeiger (DPTR) oberes Byte 131 83

DPL Datenzeiger (DPTR) unteres Byte 130 82

P0*) Port 0 128 80

P1*) Port l 144 90

P2*) Port 2 160 A0

P3*) Port 3 176 B0

IP*) Interrupt-Prioritätenregister 184 B8

IE*) Interrupt-Freigaberegister 168 A8

TMOD Zeitgeber/Zähler-Betriebsart-Register 137 89

TCON*) Zeitgeber/Zähler-Steuerregister 136 88

TH0 Zeitgeber/Zähler 0 (oberes Byte) 140 8C

TL0 Zeitgeber/Zähler 0 (unteres Byte) 138 8A

TH1 Zeitgeber/Zähler 1 (oberes Byte) 141 8D

TL1 Zeitgeber/Zähler 1 (unteres Byte) 139 8B

SCON*) serielles Steuerregister 152 98

SBUF serieller Datenpuffer 153 99

PCON Leistungsaufnahme-Steuerregister 135 87

Tabelle 1.6: Spezielles Funktionsregister des 8051*): auch bitadressierbar

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 21: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

46

Der Mikrocontroller hat fünf verschiedene Bedingungsbits zur Verfügung, um dasResultat von Operationen zu kennzeichnen. Alle bis auf eines (das Hilfs-Carrybit)können durch Befehle getestet werden, die den nachfolgenden Befehlsablaufbestimmen. An dieser Stelle wird vereinbart, dass ein Bit »gesetzt« ist, wenn esden Wert »1« hat, und »rückgesetzt« ist, wenn es den Wert »0« hat.

� Carrybit (Überlaufbit oder Übertragsbit): Das Carrybit CY wird durch verschie-dene Befehle gesetzt und kann direkt abgefragt werden. Die Operationen, diedas Carrybit verändern, sind Addition, Subtraktion, zyklisches Schieben undlogische Operationen. So kann z.B. die Addition von zwei 1-Byte-Zahlen einenÜberlauf (Carry) an der höchsten Stelle hervorrufen.

höchst-wertiges

Bit

niedrigst-wertiges

Bit

CY AC F0 RS1 RS0 CV – P

Symbol Bit-Speicherstelle Name und Bedeutung

CY PSW.7 Übertragsbit

AC PSW.6 Hilfsübertragsbit (für BCD-Operationen)

F0 PSW.5 Kennzeichnungsbit 0 (steht dem Anwender für allge-meine Zwecke zur Verfügung)

RS1 PSW.4 Registerbank-Auswahlbits 1 bzw. 0. Werden durch Software gesetzt oder gelöscht, um die Registerbank auszuwählen, in der gearbeitet werden soll. *)

RS0 PSW.3

OV PSW.2 Überlaufbit

– PSW.1 in Reserve

P PSW.0 Paritätsbit. Wird durch Hardware bei jedem Befehls-zyklus gesetzt bzw. gelöscht, um eine ungerade bzw. gerade Anzahl von Einsen im Akkumulator anzuzeigen (d.h. gerade Parität).

*)Durch RS1 und RS0 wird diese Registerbank wie folgt festgelegt:

RS1 RS0 Bank Speicherplätze

0 0 0 00H bis 07H

0 1 1 08H bis 0FH

1 0 2 10H bis 17H

1 1 3 18H bis 1FH

Tabelle 1.7: Programmstatusregister

{

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 22: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.1Einführung

47

Eine Addition mit Überlauf an der höchsten Stelle setzt das Carrybit. EineAddition ohne Überlauf setzt das Carrybit zurück. Hier soll noch eigens daraufhingewiesen werden, dass Addition, Subtraktion, zyklisches Schieben und logi-sche Befehle das Carrybit in verschiedenartiger Weise behandeln.

� Hilfs-Carrybit (Hilfsüberlaufbit oder Hilfsübertragsbit): Das Hilfs-Carrybit ACzeigt den Überlauf aus dem ersten Halbbyte (Bit 3 des Datenbytes) an. DerWert dieses Bits kann nicht direkt getestet werden, beeinflusst aber die Funk-tion des Befehls DAA.

Die folgende Addition setzt das Hilfs-Carrybit und das Carrybit zurück:

Das Hilfs-Carrybit wird durch Additions-, Subtraktions-, Inkrement-, Dekre-ment- und Vergleichsbefehle verändert.

� Signbit (Vorzeichenbit): Im Mikroprozessor ist grundsätzlich kein Vorzeicheneines Datenbytes festgelegt; man kann daher ein Byte mit dem numerischenWert 128 als plus 128 oder aber auch als minus 128 interpretieren. Zur Unter-scheidung der beiden Möglichkeiten verwendet man das Bit 7 als Vorzeichen.Hat es den Wert 1, so wird die Zahl im Byte als negativ angesehen (von minus 1bis minus 128), hat Bit 7 den Wert 0, so wird die Zahl des Bytes als positiveZahl (von 0 bis plus 127) interpretiert.

Bei arithmetischen und logischen Operationen wird das Signbit dem Bit 7 desErgebnisses gleichgesetzt; es kann dann als Bedingungsbit abgefragt werden.

� Zerobit (Nullbit): Dieses Bedingungsbit wird dann gesetzt, wenn das Ergebniseines arithmetischen oder logischen Befehls null ist. Das Zerobit wird rückge-setzt, wenn das Ergebnis dieses Befehls ungleich null ist.

Ist das Ergebnis gleich null und das Carrybit gesetzt, so wird das Zerobit eben-falls gesetzt.

Bit-Nr. 7 6 5 4 3 2 1 0

AE = 1 0 1 0 1 1 1 0

+74 = 0 1 1 1 0 1 0 0

122 0 0 1 0 0 0 1 0

Überlauf = 1, setzt Carrybit = 1

Bit-Nr. 7 6 5 4 3 2 1 0

2E = 0 0 1 0 1 1 1 0

+74 = 0 1 1 1 0 1 0 0

A2 1 0 1 0 0 0 1 0

Carrybit = 0 Hilfs-Carrybit = 1

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 23: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

48

� Paritybit (Paritätsbit): Nach arithmetischen und logischen Operationen wird eineParitätsprüfung vorgenommen. Die Anzahl der gesetzten Bits in einem Bytewird dabei gezählt; ist das Ergebnis ungerade, wird das Paritybit zurückgesetzt,ist das Ergebnis gerade, wird das Paritybit gesetzt.

� Stackpointer: Der acht Bit breite Stackpointer (SP) wird inkrementiert, bevorDaten während der Ausführung eines PUSH- oder CALL-Befehls gespeichertwerden. Während der Stack im Allgemeinen irgendwo im RAM (auf dem Chip)untergebracht sein kann, zeigt der Stackpointer nach einem Rücksetzvorgangauf den Speicherplatz 07H. Dies veranlasst den Stackpointer, mit Speicherplatz08H zu starten.

� Datenzeiger: Der 16-Bit-Datenzeiger (DPTR) besteht aus den Registern DPH(oberes Byte) und DPL (unteres Byte). Er enthält eine 16-Bit-Adresse und kannentweder als 16-Bit-Register oder als zwei unabhängige 8-Bit-Register arbeiten.

� Ports 0 bis 3: Die speziellen Funktionsregister P0, P1, P2 und P3 sind die Zwi-schenspeicher.

� Zeitgeber-Register: Die Registerpaare TH0 und TL0 sowie TH1 und TL1 sind16-Bit-Zählregister für die Zeitgeber/Zähler 0 bzw. 1.

� Serieller Datenpuffer: Der serielle Datenpuffer (SBUF) besteht eigentlich auszwei separaten Registern, nämlich einem Sende- und einem Empfangspuffer-register. Wenn Daten nach SBUF transportiert werden, so erfolgt dies in dasSendepufferregister; der Transport eines Bytes nach SBUF löst dann die Über-tragung in eine externe Einheit aus. Werden Daten von SBUF geholt (von einerEinheit auf dem Chip), so kommen sie aus dem Empfangspufferregister.

� Steuerregister: Die speziellen Funktionsregister IP, IE, TMOD, TCON, SCONund PCON enthalten Steuer- und Statusbits für das Interrupt-System, die Zeit-geber/Zähler und den seriellen Port. Sie werden in späteren Abschnitten be-schrieben.

1.2 Oszillator- und Taktgeberschaltung

XTAL1 und XTAL2 sind der Eingang und Ausgang eines einstufigen, auf demChip befindlichen Inverters, der zusammen mit externen Bauelementen (Abbil-dung 1.4a) zur so genannten Pierce-Schaltung (Abbildung 1.4b) aufgebaut wird.

Bit-Nr. 7 6 5 4 3 2 1 0

1 0 1 0 0 1 1 1

0 1 0 1 1 0 0 1

1 0 0 0 0 0 0 0 0

Überlauf Nullergebnis:

von Bit 7 Zerobit auf 1 gesetzt

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 24: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.2Oszillator- und Taktgeberschaltung

49

Die Schaltung auf dem Chip sowie die Auswahl der externen Bauelemente zumAufbau des Oszillators werden in den folgenden Abschnitten sowohl für dieNMOS- als auch für die CMOS-Version des Mikrocontrollers beschrieben.

Abb. 1.4: a: Beschaltung der Anschlüsse XTAL1 und XTAL2 mit einem Quarz oder einem keramischen Resonator sowie zwei Kondensatoren. Man achte auf kurze, direkte Masseverbindung zwischen Mikrocontroller und Kondensatorfußpunkten.b: Prinzip des Pierce-Oszillators

In jedem Fall treibt der Oszillator den internen Taktgenerator. Dieser liefert dieinternen Taktsignale für die auf dem Chip befindlichen Schaltungen. Die Fre-quenz der internen Taktsignale beträgt die Hälfte der Oszillatorfrequenz und legtdie internen Phasen, Schritte und Maschinenzyklen fest, die später noch beschrie-ben werden.

Wie bei der NMOS-Version besteht auch die auf dem Chip des 80C51 befindlicheOszillatorschaltung (Abbildung 1.5) aus einem einstufigen linearen Inverter, derzum Betrieb als quarzgesteuerter Oszillator mit positiver Reaktanz vorgesehen ist.Dennoch sind einige wichtige Unterschiede vorhanden.

Einer der Unterschiede besteht darin, dass der Oszillator mittels Software abge-schaltet werden kann, indem ein 1-Signal in das Bit PD im speziellen Funktionsre-gister PCON geschrieben wird. Ein weiterer Unterschied ist durch die Tatsachegegeben, dass die interne Taktschaltung des 80C51 durch Signale am AnschlussXTAL1 betrieben wird, während dies bei der NMOS-Version am Anschluss XTAL2erfolgt.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 25: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

50

Abb. 1.5: Oszillatorschaltung auf dem Chip des Mikrocontrollers 80C51 (CMOS-Version)

Der Rückkopplungswiderstand Rf setzt sich aus parallel geschalteten n-Kanal- undp-Kanal-Feldeffekttransistoren zusammen, die durch das Bit PD gesteuert werden,und zwar ist Rf abgeschaltet, wenn PD = 1 ist. Die Dioden Dl und D2, die alsKlemmdioden für UCC (+5 V) und USS (0 V) dienen, sind parasitär zu dem ausFeldeffekttransistoren bestehenden Widerstand Rf.

Abb. 1.6: Funktionale Darstellung der Oszillatorschaltung auf dem Chip des 80C51 (CMOS-Version) im Zusammenspiel mit der äußeren Beschaltung

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 26: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.2Oszillator- und Taktgeberschaltung

51

Der Oszillator kann mit denselben externen Bauelementen wie die NMOS-Ver-sion aufgebaut werden, wie auch Abbildung 1.6 zeigt. Typische Werte sind C1 = C2

= 30 pF, wenn ein Quarz eingesetzt wird, und C1 = C2 = 47 pF bei Verwendungeines keramischen Resonators.

Abb. 1.7: Anschluss eines externen Taktgenerators an den 80C51 (CMOS-Version)

Beim Betrieb der CMOS-Version (Abbildung 1.7) mit einem externen Taktgenera-tor wird das externe Taktsignal an den Anschluss XTAL1 gelegt, während XTAL2unbeschaltet bleibt.

Ein Maschinenzyklus besteht aus sechs Schritten (zwölf Oszillatorperioden). JederSchritt wird eingeteilt in eine Hälfte für Phase 1, während der Takt von Phase 1aktiv ist, und in eine Hälfte für Phase 2, während der Takt von Phase 2 aktiv ist.Somit besteht ein Maschinenzyklus aus zwölf Oszillatorperioden. Jede Phase dau-ert eine Oszillatorperiode, jeder Schritt zwei Oszillatorperioden. Im Allgemeinenfinden arithmetische und logische Operationen während Phase 1 statt, internerDatentransfer (von einem Register zum anderen) dagegen während Phase 2.

Die Ausführung eines 1-Zyklus-Befehls beginnt, wenn der Befehlscode imBefehlsregister zwischengespeichert wird. Handelt es sich um einen 2-Byte-Befehl, so wird das zweite Byte während desselben Maschinenzyklus gelesen.Handelt es sich dagegen um einen 1-Byte-Befehl, so findet zwar ein Speichervor-gang statt, aber das gelesene Byte (nämlich der nächste Befehlscode) wird nichtbeachtet und der Programmzähler nicht inkrementiert.

Die meisten Befehle des 8051 werden in einem Zyklus ausgeführt. MUL (Multipli-zieren) und DIV (Dividieren) sind die einzigen Befehle, die zur vollständigen Aus-führung mehr als zwei Zyklen, nämlich vier, benötigen.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 27: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

52

Im Allgemeinen werden während eines Maschinenzyklus zwei Befehlscode-Bytesaus dem Programmspeicher geholt. Die einzige Ausnahme hiervon besteht in derAusführung eines MOVX-Befehls. Bei diesem handelt es sich um einen 1-Byte-2-Zyklen-Befehl, der auf den externen Datenspeicher zugreift. Dabei werden zweiHolvorgänge übersprungen, während der externe Datenspeicher adressiert undabgefragt wird.

1.3 Aufbau und Betrieb der Ports

Alle vier Ports des 8051 können bidirektional betrieben werden. Port 0 erlaubt denTristate-Zustand (»echter« bidirektionaler Port), während dies bei den Ports 1–3mit ihren internen Pull-up-Widerständen nicht der Fall ist (»quasi«-bidirektionalePorts). Jedem Port (Port 0–3) sind acht Bit-Zwischenspeicher zugeordnet, diejeweils ein spezielles Funktionsregister (SFR) bilden. Für jeden Portanschluss gibtes einen Ausgangstreiber und einen Eingangspuffer.

1.3.1 Eingangspuffer und Ausgangstreiber

Die Ausgangstreiber von Port 0 und Port 2 sowie der Eingangspuffer von Port 0werden beim Zugriff auf den externen Speicher verwendet. Bei dieser Anwendunggibt Port 0 das untere Byte der externen Speicheradresse aus, im Zeitmultiplex mitdem zu schreibenden oder zu lesenden Byte. Port 2 gibt das obere Byte der exter-nen Speicheradresse aus, wenn diese 16 Bit breit ist. Andernfalls geben dieAnschlüsse an Port 2 auch weiterhin den Inhalt des speziellen FunktionsregistersP2 aus. Die Anschlüsse von Port 3 haben auch noch alternative Funktionen, wieaus Tabelle 1.8 zu ersehen ist.

Die alternative Funktion eines Portanschlusses kann nur dann aktiviert werden,wenn der entsprechende Bit-Zwischenspeicher im speziellen FunktionsregisterP3 eine Eins enthält. Andernfalls bleibt der Portanschluss auf null stehen.

Portanschluss Alternative Funktionen

P3.0 RXD (serieller Port, Eingang)

P3.1 TXD (serieller Port, Ausgang)

P3.2 INT0 (externer Interrupt)

P3.3 INT1 (externer Interrupt)

P3.4 T0 (Zeitgeber/Zähler 0, externer Eingang)

P3.5 T1 (Zeitgeber/Zähler 1, externer Eingang)

P3.6 WR (Strobe-Signal zum Schreiben in den externen Datenspeicher)

P3.7 RD (Strobe-Signal zum Lesen aus dem externen Datenspeicher)

Tabelle 1.8: Alternative Funktionen der Anschlüsse von Port 3

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 28: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

53

Tabelle 1.9 zeigt die Bitadressen im Registerspeicher:

Adresse Funktion

80H Port 0, Bit 0

81H Port 0, Bit 1

82H Port 0, Bit 2

83H Port 0, Bit 3

84H Port 0, Bit 4

85H Port 0, Bit 5

86H Port 0, Bit 6

87H Port 0, Bit 7

88H Timer 0,Interrupt, Type-Kontroll-Bit

89H Timer 0, Interrupt, Edge-Flag

8AH Timer 1, Interrupt, Type-Kontroll-Bit

8BH Timer 1, Interrupt, Edge-Flag

8CH Timer 0, Run Kontroll-Bit

8DH Timer 0, Overflow-Flag

8EH Timer 1, Run Kontroll-Bit

8FH Timer 1, Overflow-Flag

90H Port 1, Bit 0

91H Port 1, Bit 1

92H Port 1, Bit 2

93H Port 1, Bit 3

94H Port 1, Bit 4

95H Port 1, Bit 5

96H Port 1, Bit 6

97H Port 1, Bit 7

98H Receive Interrupt Flag

99H Transmit Interrupt Flag

9AH Receive Bit 8

9BH Transmit Bit 8

9CH Receiver Enable

9DH Serial Mode Kontroll-Bit-2

9EH Serial Mode Kontroll-Bit-1

9FH Serial Mode Kontroll-Bit-0

A0H Port 2, Bit 0

Tabelle 1.9: Bitadressen im Registerspeicher

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 29: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

54

A1H Port 2, Bit 1

A2H Port 2, Bit 2

A3H Port 2, Bit 3

A4H Port 2, Bit 4

A5H Port 2, Bit 5

A6H Port 2, Bit 6

A7H Port 2, Bit 7

A8H Enable Externer Interrupt 0

A9H Enable Timer 0 Interrupt

AAH Enable Externer Interrupt 1

ABH Enable Timer 1 Interrupt

ACH Enable Senat Port Interrupt

AFH Enable All Interrupts

B0H Senat Port Receive Pin

B1H Senat Port Transmit Pin

B2H Interrupt 0 Input Pin

B3H Interrupt 1 Input Pin

B4H Timer/Counter 0 externes Flag

B5H Timer/Counter 1 externes Flag

B6H Write Data (für externes Memory)

B7H Read Data (für externes Memory)

B8H Priorität für externen Interrupt 0

B9H Priorität für Timer 0 Interrupt

BAH Priorität für externen Interrupt 1

BBH Priorität für Timer 1 Interrupt

BCH Priorität für seriellen Port Interrupt

D0H Parity Flag

D2H Overflag Flag

D3H Register Bank Selektions-Bit 0

D4H Register Bank Selektions-Bit 1

D5H Flag 0

D6H Auxilliary Carry Flag

D7H Carry Flag

E0H Akkumulator, Bit 0

Adresse Funktion

Tabelle 1.9: Bitadressen im Registerspeicher (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 30: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

55

1.3.2 E/A-Struktur

Die Blockschaltung arbeitet wie ein typischer Bit-Zwischenspeicher und dient alsE/A-Puffer für die E/A-Struktur der vier Ports. Der Bit-Zwischenspeicher (ein Bitim speziellen Funktionsregister des Ports) stellt sich als Flipflop vom Typ D dar,das auf einen Taktimpuls hin einen Wert vom internen Bus übernimmt, wenn dieZentraleinheit ein Signal »Schreiben in den Zwischenspeicher« ausgegeben hat.Das Ausgangssignal 0 des Flipflops wird auf den internen Bus gebracht, wenn dieZentraleinheit ein Signal »Lesen aus dem Zwischenspeicher« ausgegeben hat; derPegel direkt am Portanschluss wird dagegen dann auf den internen Bus gebracht,wenn die Zentraleinheit ein Signal »Lesen vom Portanschluss« ausgegeben hat.Einige Befehle, mit denen Portwerte gelesen werden, aktivieren das Signal »Lesenaus dem Zwischenspeicher«, andere das Signal »Lesen vom Portanschluss«.

Die Ports 1, 2 und 3 haben interne Pull-up-Widerstände, Port 0 Open-Drain-Aus-gänge. Jede E/A-Leitung kann unabhängig von anderen als Eingang oder Ausgangdienen, jedoch dürfen die Ports 0 und Port 2 nicht als E/A-Leitungen für allgemeineZwecke benutzt werden, wenn sie als Adress-/Datenbus arbeiten. Bei Verwendungals Eingang muss der betreffende Bit-Zwischenspeicher des SFR ein 1-Signal ent-halten, die den Ausgangstreiber (einen Feldeffekttransistor) abschaltet. Bei denPorts 1, 2 und 3 wird der Portanschluss durch den internen Pull-up-Widerstand auf1-Signal gesetzt, kann aber durch eine externe Quelle auf 0-Signal gezogen werden.

E1H Akkumulator, Bit 1

E2H Akkumulator, Bit 2

E3H Akkumulator, Bit 3

E4H Akkumulator, Bit 4

E5H Akkumulator, Bit 5

E6H Akkumulator, Bit 6

E7H Akkumulator, Bit 7

F0H Multiplikationsregister, Bit 0

F1H Multiplikationsregister, Bit 1

F2H Multiplikationsregister, Bit 2

F3H Multiplikationsregister, Bit 3

F4H Multiplikationsregister, Bit 4

F5H Multiplikationsregister, Bit 5

F6H Multiplikationsregister, Bit 6

F7H Multiplikationsregister, Bit 7

Adresse Funktion

Tabelle 1.9: Bitadressen im Registerspeicher (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 31: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

56

Port 0 unterscheidet sich dadurch von den übrigen Ports, dass er keine internenPull-up-Widerstände hat. Der Pull-up-Feldeffekttransistor im Ausgangstreiber vonPort P0 wird nur dann benutzt, wenn der Port während eines Zugriffs auf externeSpeicher Einsen ausgibt. Andernfalls ist der Pull-up-Feldeffekttransistor abge-schaltet. Folglich sind die Leitungen von P0, die als Ausgangsleitungen dienen,vom Open-Drain-Typ. Wird eine Eins in den Bit-Zwischenspeicher geschrieben, sobleiben beide Ausgangs-Feldeffekttransistoren abgeschaltet, und der Anschlussliegt auf unbestimmtem Potential. In diesem Fall kann er als hochohmiger Ein-gang dienen. Da die Ports 1, 2 und 3 festgelegte Pull-up-Widerstände haben, wer-den sie oft als quasibidirektionale Ports bezeichnet. Wenn sie als Eingänge dienensollen, nehmen sie den 1-Pegel an und erzeugen dann einen Strom (ILL im Daten-blatt), wenn sie auf 0-Pegel gezogen werden. Andererseits bezeichnet man Port 0als echten bidirektionalen Port, weil er unbestimmtes Potential aufweist, wenn erals Eingang betrieben wird.

Durch Rücksetzen des 8051 werden Einsen in die Zwischenspeicher aller Portsgeschrieben. Wird anschließend eine Null in den Zwischenspeicher des Portsgebracht, so lässt sich dieser danach als Eingang wieder einrichten, indem maneine Eins in ihn schreibt.

1.3.3 Schreiben in einen Port

Bei der Ausführung eines Befehls, der den Wert im Zwischenspeicher eines Portsändert, erreicht der neue Wert den Ausgangsanschluss erst während Phase 1 desnächsten Maschinenzyklus.

Wenn die Änderung einen 0-1-Übergang (positive Flanke) in Port 1, 2 oder 3 erfor-dert, wird ein zusätzlicher Pull-up-Widerstand während desjenigen Zyklus einge-schaltet, in dem der Übergang erfolgt. Auf diese Weise wird die Übergangsge-schwindigkeit erhöht. Durch den zusätzlichen Pull-up-Widerstand fließt etwa der100-fache Strom wie durch den »normalen« Pull-up-Widerstand. Bei dieser Gele-genheit sollte bemerkt werden, dass die internen Pull-up-Widerstände Feldeffekt-transistoren und keine linearen Widerstände sind.

Beim Mikrocontroller 8051 (also bei der NMOS-Version) ist der »normale« (d.h.der stets vorhandene) Pull-up-Widerstand ein Transistor vom Verarmungstyp, beidem Gate und Source zusammengeschaltet sind. Der Transistor lässt über denPortanschluss etwa 0,25 mA fließen, wenn dieser mit Masse verbunden ist.

Parallel zu diesem Transistor liegt ein Transistor vom Anreicherungstyp, der denoben beschriebenen zusätzlichen Pull-up-Widerstand darstellt und immer dannaktiv wird, wenn das betreffende Bit von null nach eins übergeht. Solange derzusätzliche Transistor aktiv ist, liefert er einen Strom von 30 mA an den Portan-schluss, wenn dieser mit Masse verbunden ist.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 32: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

57

Bei der CMOS-Version besteht der Pull-up-Widerstand aus drei p-Kanal-Feldef-fekttransistoren. Man beachte, dass ein n-Kanal-Feldeffekttransistor eingeschaltetist, wenn ein 1-Signal an seinem Gate liegt, und dann ausgeschaltet ist, wenn dortein 0-Signal liegt. Bei p-Kanal-Feldeffekttransistoren ist es umgekehrt.

Man beachte, dass bei der Ausgabe eines 1-Signals am Portanschluss ein dort voneiner externen Quelle ankommender negativer Störimpuls den p-Kanal-Feldef-fekttransistor 3 ausschalten kann, wodurch der Portanschluss unbestimmtesPotential annimmt. Der p-Kanal-Feldeffekttransistor 2 stellt einen sehr niederoh-migen Pull-up-Widerstand dar, der immer dann eingeschaltet ist, wenn dern-Kanal-Feldeffekttransistor ausgeschaltet ist (typischer CMOS-Schaltungsauf-bau). Durch ihn fließt nur ca. 1/10 des Stroms, der den p-Kanal-Feldeffekttransis-tor durchsetzt. Seine Aufgabe besteht darin, am Portanschluss ein 1-Signalwiederherzustellen, falls dort ein 1-Signal vorhanden war und dieses durch einenexternen Störimpuls verloren gegangen ist.

Die Ausgangspuffer der Ports 1, 2 und 3 können je vier Low-Power-Schottky-TTL-Eingänge oder einen normalen TTL-Eingang treiben. Diese Ports in der NMOS-Version lassen sich auf normale Weise durch jede TTL- oder NMOS-Schaltungtreiben. Sowohl die NMOS- als auch die CMOS-Version können durch Open-Kol-lektor und durch Open-Drain-Ausgänge getrieben werden, ohne dass externe Pull-up-Widerstände erforderlich sind.

Die Ausgangspuffer von Port 0 können jeweils acht Low-Power-Schottky-TTL-Ein-gänge oder zwei normale TTL-Eingänge treiben. Sie erfordern jedoch externe Pull-up-Widerstände, um NMOS-Eingänge zu treiben, außer wenn der Port als Adress-/Datenbus dient.

1.3.4 Read-Modify-Write-Merkmale

Es gibt grundsätzlich zwei Möglichkeiten, einen Port durch einen Befehl zu lesen,und zwar entweder am Zwischenspeicher oder unmittelbar am Portanschluss. DerBefehlsvorrat des 8051 enthält Befehle der einen und der anderen Art. Befehle, dieden Zwischenspeicher lesen, sind jene, durch die ein Wert gelesen, möglicher-weise geändert und anschließend in den Zwischenspeicher zurückgeschriebenwird (so genannte Read-Modify-Write-Befehle). Bei diesen in Tabelle 1.10 aufge-führten Befehlen ist der Zieloperand ein Port oder ein Portbit.

Befehl Beschreibung Beispiel

ANL Logisches UND ANL P1,A

ORL Logisches ODER ORL P2,A

XRL Logisches Exklusiv-ODER XRL P3,A

JBC Springe, wenn Bit = 1 und lösche Bit JBC P1.1‚LABEL

Tabelle 1.10: Befehle, die den Zwischenspeicher der Ports lesen (Read-Modify-Write-Befehle)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 33: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

58

Auf den ersten Blick ist nicht zu erkennen, dass auch die drei letzten Befehle die-ser Tabelle Read-Modify-Write-Befehle sind: Sie lesen das Portbyte (alle acht Bits),ändern das adressierte Bit und schreiben das neue Byte in den Zwischenspeicherzurück.

Die Befehle verarbeiten deshalb die Werte des Zwischenspeichers und nicht dieder Anschlüsse, weil die Spannungspegel an den Anschlüssen zu Fehlinterpreta-tionen führen können. Zum Beispiel könnte der Port zum Treiben der Basis einesTransistors dienen. Wird ein 1-Signal in die Bit-Speicherstelle geschrieben, soschaltet der Transistor ein. Wenn dann die Zentraleinheit dasselbe Portbit amAnschluss statt am Zwischenspeicher liest, wird sie die Basisspannung des Tran-sistors lesen und diese als ein 0-Signal interpretieren. Nur das Lesen des Zwi-schenspeichers anstelle des Anschlusses führt daher zum richtigen Wert, einem1-Signal.

1.3.5 Programmierung einer Eingabeoperation

Wie bei allen Mikrocontroller-Projekten muss auch bei Verwendung eines Mikro-controllers die nötige Entwicklungsumgebung verfügbar sein. Die Software vonMultisim stellt eine effiziente und leistungsfähige Entwicklungsumgebung für auf8051-Mikrocontroller basierende Anwendungen. Compiler und Assembler sindaufeinander abgestimmt. Sie bilden eine homogene Einheit für die Softwareent-wicklung und die erzeugten Objekt-Dateien sind Intel-kompatibel.

Somit können Object- und Symbol-Dateien komfortabel mit dem EMUL51-PC-Emulator weiterverarbeitet werden. Der C-Compiler erzeugt alle notwendigenInformationen zur Unterstützung des Source-Code-Debuggings. Das gesamteAssemblerpaket ist Intel-kompatibel und arbeitet unter dem Betriebssystem MS-DOS und Windows. Es besteht aus:

� A51-Makroassembler � L51-Linker/Locater

� LIB51-Library-Manager � OHS51-Objekt-Hex-Konverter

CPL Komplementiere Bit CPL P3.0

INC Inkrementiere INC P2

DEC Dekrementiere DEC P2

DJNZ Dekrementiere und springe, falls nicht null DJNZ P3,LABEL

MOV PX.Y,C Transportiere Übertragsbit nach Bit Y von Port C

CLR PX.Y Lösche Bit Y von Port X

SET PX.Y Setze Bit Y von Port X

Befehl Beschreibung Beispiel

Tabelle 1.10: Befehle, die den Zwischenspeicher der Ports lesen (Read-Modify-Write-Befehle)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 34: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

59

Der Assembler deckt die Maschinenbefehle des Mikrocontrollers 8051 ab.

Der Makroassembler A51 erzeugt aus einem 8051-Assemblersourcefile (Intel Mne-monics) ein relocatives Objektmodul und ein List-File. Er erlaubt symbolischenZugriff auf die Architektur des 8051, z.B. RAM-Adressen, Bit-Adressen, Ein/Aus-gabeport. Ebenso wird die Architektur des 8052 und die gesamte Nachfolgefamilieberücksichtigt.

Der Linker/Locater L51 bindet die einzelnen Module und bei Bedarf Teile ausBibliotheken zusammen, erzeugt absolute Adressen und speichert diese Daten imIntel-Object-File-Format ab. Die Symbole und eventuell die Zeilennummer-Infor-mationen vom C-Quellcode sind im Objectfile enthalten. Zusätzlich kann eineCrossreference-Liste und eine Map-Datei erstellt werden.

Für die Hochsprachenprogrammierung verfügt der Linker/Locate L51 auch übereine OVERLAY-Funktion, die den knappen internen Speicher der 8051-Mikrocon-troller speziell verwaltet. Dabei werden Parameter und Variablen der einzelnenFunktionen überlagert, wenn sich diese Funktionen nicht gegenseitig aufrufen.Dadurch wird der Speicherbedarf der Anwendungen um ein Vielfaches reduziert.L51 analysiert selbstständig die gegenseitigen Aufrufe sämtlicher Funktionen undüberlagert dann gezielt die zu diesen Funktionen gehörenden Daten und Bit-Seg-mente. Für den DEBUG-Betrieb kann diese Funktion abgeschaltet werden, umproblemlos auf alle Werte zugreifen zu können.

Der Object-Hex-Konverter OHS51 kann aus dieser Object-Datei ein Intel-Hex-Fileund eine separate Symboldatei erzeugen.

C ist eine allgemein einsetzbare Programmiersprache, die Code-Effizienz, struktu-riertes Programmieren, komfortable Datenstrukturen und einen reichhaltigenSatz von Operationen vereinigt. C ist keine Programmiersprache, die aufbestimmte Anwendungen spezialisiert ist. Durch die Möglichkeit, ein Programmin einer Hochsprache zu formulieren, lässt sich ein Projekt in kürzerer Zeit mitgeringerer Fehleranfälligkeit und besserer Wartungsmöglichkeit realisieren.

Der C51-Crosscompiler entspricht dem Standard nach ANSI X3J11 und Kernighan& Ritchie. Er erzeugt Intel-kompatiblen 8051-Objectcode als Ergebnis. DieseObject-Dateien können mit Assembler oder PL/M-51-Objektmodulen kombiniertwerden.

Die Parameterübergabe an Funktionen erfolgt, wie bei PLM51, in festen Speicher-adressen. Daher sind Zugriffe auf Parameter extrem schnell und einfach mitAssembler zu realisieren. Das Einbinden von Assembler-Unterprogrammen istsomit problemlos.

Auch Interrupt-Prozeduren können mit C51 erstellt werden. Die Registerbank, diein der Interrupt-Prozedur verwendet werden soll, kann angegeben werden. DerCompiler generiert den für die Umschaltung erforderlichen Code.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 35: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

60

Der C51-Compiler unterstützt vollständig die Architektur der 8051-Familie. Deruneingeschränkte Zugriff auf sämtliche Hardware-Komponenten des Systems istgewährleistet. Jede Variable kann durch Zuweisung des Speichertyps explizit plat-ziert werden. Es werden fünf Speichertypen unterstützt, wie Tabelle 1.11 zeigt.

Generell werden drei verschiedene Speichermodelle unterstützt, wie Tabelle 1.12zeigt.

Der C51-Compiler unterstützt die nachfolgend aufgeführten Datentypen. Zusätz-lich lassen sich die Variablen in Strukturen zusammenfassen. Außerdem könnenmehrdimensionale Felder gebildet werden. Die Adressierung von Variablen überPointer ist ebenso möglich wie der direkte Zugriff auf die »Special Function Regis-ter« (SFR), wie Tabelle 1.13 zeigt.

data Direkt adressierbarer interner Datenspeicher. Ermöglicht den schnellsten Zugriff auf Variablen (128 Byte)

idata Indirekt adressierbarer interner Datenspeicher. Ermöglicht den schnellsten Zugriff auf Variablen (256 Byte)

pdata »Paged« (256 Byte) externer Datenspeicher und der Zugriff erfolgt mit dem Befehl MOVX@Ri

xdata Externer Datenspeicher (64 Kbyte) und der Zugriff erfolgt mit dem Befehl MOVX@DPTR

code Programmspeicher (64 Kbyte) und der Zugriff erfolgt mit dem Befehl MOVC@A+DPTR

Tabelle 1.11: Unterstützung der Speichertypen im 8051/8052 und der erweiterten Familie

SMALL Parameter und lokale Variablen werden im direkt adressierbaren internen Datenspeicher platziert (max. 120 Byte).

COMPACT Parameter und lokale Variablen werden im »paged« externen Datenspeicher platziert (max. 256 Byte).

LARGE Parameter und lokale Variablen werden im externen Datenspeicher platziert (max. 64 Kbyte).

Tabelle 1.12: Verschiedene Speichermodelle

Datentyp Größe Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte –128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Byte –32768 bis +32767

unsigned int 2 Byte 0 bis 65535

Tabelle 1.13: Unterstützte Datentypen

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 36: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

61

Die Konvertierung der Datentypen beim Rechenvorgang erfolgt automatisch oderkann manuell durch C-Anweisungen gesteuert werden.

Wenn Sie eine Schaltung in Multisim aufbauen, müssen Sie zuerst den Button»MCU« anklicken. MultiMCU erlaubt es dem Schüler, Studenten und Auszubil-denden, einen Mikrocontroller, der in Assembler programmiert wurde, innerhalbder SPICE-Umgebung einzubinden. Wenn Sie den Button MCU PLATZIEREN

anklicken, erscheint Abbildung 1.8.

Abb. 1.8: Fenster für die Auswahl der Mikrocontroller, RAM- und ROM-Einheiten

signed long 4 Byte –2147483648 bis +21474483647

unsigned long 4 Byte 0 bis 4294967295

float 4 Byte +/– 1.176E-38 bis +/– 3.40E+38

inter 3 Byte Adresse einer Variablen

Datentyp Größe Wertebereich

Tabelle 1.13: Unterstützte Datentypen (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 37: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

62

In dem Fenster kann man zwischen den Mikrocontrollern von Intel 8051/8052und von Mikrochip PIC16F84/16F84A wählen. Klickt man den Button »RAM« an,erscheinen verschiedene Versionen von 2 Kbyte oder 8 Kbyte. Wenn man den But-ton »ROM« anklickt, hat man die Auswahl von 16 Kbyte oder 32 Kbyte.

Mit »OK« wird ein Mikrocontroller, ein RAM oder ein ROM in der Schaltung plat-ziert. Danach erscheint das Fenster von Abbildung 1.9.

Abb. 1.9: MCU-Assistent – Schritt 1 von 3

Mit dem MCU-ASSISTENT gibt man Arbeitsbereichspfad und Arbeitsbereichsna-men ein. Der Arbeitsbereichsname lautet Versuch1. Anschließend klickt manWEITER an. Es erscheint Abbildung 1.10.

Abb. 1.10: MCU-Assistent – Schritt 2 von 3

Bei dem MCU-ASSISTENT – SCHRITT 2 VON 3 werden die wichtigsten Definitionenfür die Programmierung festgelegt. Mit dem Projekttyp legt man STANDARD fest

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 38: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

63

oder man arbeitet mit einer externen Hex-Datei. Unter PROGRAMMIERSPRACHE

legt man fest, ob man in C oder in Assembler (BAUGRUPPE) programmierenmöchte. Arbeitet man mit C, wird der HI-TECH C51-LITE-COMPILER festgelegt.Arbeitet man mit Assembler (BAUGRUPPE), wird der 8081/8052 METALINK-ASSEMBLER aufgerufen. Abschließend definiert man noch den PROJEKTNAMEN

mit Versuch1 und klickt WEITER an. Es erscheint Abbildung 1.11.

Abb. 1.11: MCU-Assistent – Schritt 3 von 3

Bei dem MCU-ASSISTENT – SCHRITT 3 VON 3 fügt man eine Quelldatei hinzu.Anschließend klickt man FERTIG STELLEN an. Im Schaltplan (Abbildung 1.12) befin-det sich der Mikrocontroller 8051.

Abb. 1.12: Schaltplan mit dem Mikrocontroller 8051

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 39: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

64

Aus der Bibliothek kann Taster, Widerstand, Masse und +Ub geholt werden. DieBausteine sind im Schaltplan zu platzieren und mit dem Mikrocontroller zu ver-binden. Der Taster wird mit der PC-Leertaste ein- und ausgeschaltet. Die Hard-ware ist nun fertig und es kann mit der Programmierung in Assembler begonnenwerden. Dazu klickt man den Button »MCU« an und das Fenster von Abbildung1.13 öffnet sich.

Abb. 1.13: Aufruf des MCU-Code-Managers

Wenn man den MCU-Code-Manager angeklickt hat, öffnet sich das Fenster vonAbbildung 1.14. Hier lassen sich alle möglichen Funktionen einstellen.

Abb. 1.14: Fenster und Einstellmöglichkeiten des MCU-Code-Managers

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 40: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

65

Mit einem Doppelklick auf den Pfad MAIN.ASM öffnet sich das Fenster von Abbil-dung 1.15 und hier führt man die Assembler-Programmierung durch.

Abb. 1.15: Fenster für die Assembler-Programmierung und Fenster für die Fehlermeldungen

Um die Assembler-Programmierung für dieses kleine Projekt durchführen zukönnen, muss man sich Port 1 genau betrachten.

Port 1 hat interne Pull-up-Widerstände. Jede E/A-Leitung kann unabhängig vonanderen als Eingang oder Ausgang dienen. Bei Verwendung als Eingang muss derbetreffende Bit-Zwischenspeicher des SFR ein 1-Signal enthalten, die den Aus-gangstreiber (einen Feldeffekttransistor) abschaltet. Bei Port 1 wird der Portan-schluss durch den internen Pull-up-Widerstand auf 1-Signal gesetzt, kann aberdurch eine externe Quelle auf 0-Signal gezogen werden. Durch Rücksetzen desMikrocontrollers 8051 werden 1-Signale in die Zwischenspeicher aller Portsgeschrieben. Wird anschließend ein 0-Signal in den Zwischenspeicher des Portsgebracht, so lässt sich dieser danach als Eingang wieder einrichten, indem manein 1-Signal in ihn schreibt.

In der ersten Zeile der Assembler-Programmierung steht

Damit wird der Eingang des Ports P1 auf 1-Signal gesetzt. Wenn in einer Assemb-ler-Programmierung vor einem Wert das Zeichen »#« angegeben wird, handelt essich beim C51 um eine Konstante. Danach folgt eine Schleife und

MOV P1,#255

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 41: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

66

In der Schleife wird der Eingang von Port P1 abgefragt und in den Akkumulatorgeschrieben. Wenn der Taster geschlossen ist, wird ein 0-Signal in den Akkumula-tor geschrieben, und ist der Taster offen, ein 1-Signal.

Abb. 1.16: Assembler-Programmierung mit Fenster der Fehlerüberprüfung

Abbildung 1.16 zeigt die Assembler-Programmierung mit dem Fenster für dieFehlerüberprüfung, wobei die Schaltung bereits simuliert wurde.

Jetzt können Sie den Balken MC1.1 anklicken und die Schaltung erscheint wiederim Bildschirm. Dann schaltet sich die noch laufende Simulation aus, erkennbarunten rechts im Bildschirm und so starten Sie erneut die Simulation. Es erscheintein Fenster, da die Projektkonfiguration jetzt nicht mehr aktuell ist, und Sie kli-cken auf JA. Das Fenster erlischt und Sie erhalten wieder das Fenster für dieAssembler-Programmierung.

MOV A,P1

JMP Schleife

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 42: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

67

In dem Fenster für die Assembler-Programmierung sind oben links in der zwei-ten Zeile ein grüner Pfeil, ein schwarzes Zweistrichsymbol, ein rotes Rechteck undein roter Kreis sichtbar. Mit dem grünen Pfeil führen Sie den Start oder die Fort-setzung der Simulation durch. Mit dem schwarzen Zweistrichsymbol lässt sich dieSimulation anhalten. Durch das rote Rechteck wird die Simulation angehalten.Klickt man den roten Kreis an, wird nicht nur die Simulation bei der nächstenMCU-Anweisungsgrenze angehalten, sondern Sie rufen die Debugger auf.

Wenn ein Programm auf Fehler untersucht wird, spricht man vom DEBUG (ent-wanzen). Dies ist eine Bezeichnung für die Fehlersuche und Fehlerbehebung inder Hardware und Software. Bei der Software ist das Debug-Programm ein Hilfs-mittel für die Fehlersuche. Sie erlaubt das Setzen von Breakpoints, die Einzelbe-fehlsausführung, die Ausgabe von Registerinhalten bzw. Speicherabzügen (Dump)und das Verändern von Register- und Speicherinhalten.

Breakpoints sind Unterbrechungspunkte im Betriebssystem und enthalten zur Test-unterstützung die Debug-Programme. Diese ermöglichen, Unterbrechungspunkteim Programmablauf vorzugeben. Ein Software-Breakpoint ist eine Adresse. EinHardware-Breakpoint unterbricht das Programm, wenn sich an einem ausgewähl-ten Signal der Pegel ändert. Das Programm hält dann an der vorgegebenen Stellean. Es ist so kontrollierbar, ob das Programm an dieser Stelle vorbeikommt. Es las-sen sich gegebenenfalls an dieser Stelle Register- oder Speicherinhalte überprüfen.Meist sind mehrere Breakpoints setzbar.

Abb. 1.17: Quelldatei-Debug-Auflistung

Abbildung 1.17 zeigt die Quelldatei-Debug-Auflistung. Wenn man die einzelnenDebugmöglichkeiten verlassen will, klickt man das Feld MC1.1 an und kommt so indie Schaltung.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 43: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

68

Abb. 1.18: Speicheransicht nach einer Simulation

Abbildung 1.18 zeigt die Speicheransicht von SFR, IRAM, IROM und XRAM. DasSpecial-Function-Register (SFR) liegt im Adressbereich 128 bis 255 (80H bis FFH).Auf die Adressen ist nur mittels direkt adressierter Befehle zuzugreifen. In diesemBereich liegen alle Register, außer den Registerbänken und dem Befehlszähler.Von den im Mikrocontroller 8051 enthaltenen 21 SFR sind 10 bitadressierbar. DasIRAM zeigt die Informationen des internen Schreib-Lese-Speichers und imMikrocontroller 8051 sind 128 Speicherzellen vorhanden. Das IROM zeigt dieInformationen des internen Festwertspeichers an und hat 4 Kbyte. Das XRAM istder externe Schreib-Lese-Speicher.

Wenn man den grünen Pfeil anklickt, erscheint Abbildung 1.18 und man sieht, derAkkumulator hat keine Informationen. Wenn das schwarze Zweistrichsymbolangeklickt wird, stoppt die Simulation und der Akkumulator zeigt den Wert an:

1 1 1 1 1 1 1 0 Taster geschlossen

1 1 1 1 1 1 1 1 Taster offen

Sie können die Schaltfunktion ohne Probleme überprüfen.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 44: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

69

1.3.6 Zugriff auf externe Speicher

Hierbei muss zwischen dem Zugriff auf den externen Programmspeicher unddem Zugriff auf den externen Datenspeicher unterschieden werden. Beim Zugriffauf den externen Programmspeicher dient das Signal PSEN (program storeenable) als Lese-Strobesignal, beim Zugriff auf den externen Datenspeicher wer-den RD (Read) oder WR (Write) (alternative Funktionen von P3.7 bzw. P3.6) alsLese- bzw. Schreib-Strobesignal verwendet. Abbildung 1.19 zeigt den Anschlusseines Schreib-Lese-Speichers an den Mikrocontroller 8051.

Abb. 1.19: Anschluss eines Datenspeichers mit 8 Kbyte mit Speicheransicht

Die Daten und Adressen von D0 bis D7 und von A0 bis A7 werden gemeinsam überPort 0 ausgegeben. Die Datenleitungen liegen direkt an dem RAM an und dieAdressenleitungen werden über den Baustein 74373 zwischengespeichert. DerBaustein 74373 ist ein 8-Bit-D-Latch mit Enable und Tri-State-Ausgängen. Tabelle1.14 zeigt die Funktionen.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 45: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

70

Der Steuereingang OC (Output Control) ist in der Schaltung mit Masse verbundenund daher kann der Baustein 74373 in der Schaltung immer arbeiten. Bei einem1-Signal ist der Baustein gesperrt und die Ausgänge weisen den hochohmigenZustand auf. Hat der Eingang G (Gate oder Enable) ein 1-Signal, ist der Baustein74373 transparent, das heißt, die angelegte Information an dem D-Eingang wirddirekt an den Q-Ausgang weitergegeben. Hat der Eingang G ein 0-Signal, werdendie Informationen gespeichert.

Statt des 74373 verwendet man den 74273, ein 8-Bit-D-Register mit Clear. Tabelle1.15 zeigt die Funktionen des TTL-Bausteins 74273.

In den Kapiteln 3 und 4 wird dieser Baustein in der Simulation verwendet. Für denrichtigen Betrieb in der Praxis ist ein NICHT-Gatter für den Takt erforderlich.

Das 8-Kbyte-RAM HM1-65642 hat für die Adressierung 13 Eingänge von A0 bis A12

und daher können 8192 Speicherreihen zu je acht Bit angesprochen werden. Diegespeicherten Informationen in dem Baustein liegen an den Datenausgängen DQan, wenn die Bedingungen für die Wahrheits-Tabelle 1.16 erfüllt sind.

OC G D Q

0 1 1 1

0 1 0 0

0 0 X Q

1 X X Z

Tabelle 1.14: Funktionen des TTL-Bausteins 74373

Clear Clock D Q

0 X X 0

1 1 1

1 0 0

1 L X Qn

Tabelle 1.15: Funktionen des TTL-Bausteins 74273

E1 E2 G W DQ

0 X X X Z

X 1 X X Z

1 X 1 X Z

1 X 0 1 schreiben

1 0 0 0 lesen

Tabelle 1.16: Wahrheits-Tabelle für 8-Kbyte-RAM HM1-65642

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 46: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

71

Der W-Eingang (Write oder schreiben) vom RAM ist mit dem WR-Ausgang des Mikro-controllers verbunden. Der G-Eingang (Gate) vom RAM ist mit dem RD-Eingang(Read oder lesen) des Mikrocontrollers verbunden. Der Eingang E2 liegt an +5 V.

Das 8-Kbyte-RAM HM1-65642 lässt sich adressieren, wenn sich E1 auf 0-Signalund E2 auf 1-Signal befinden. E1 ist mit dem Ausgang des NOR-Gatters verbun-den. Die drei Eingänge des NOR-Gatters liegen an A13, A14 und A15. Es ergibt sichfolgender Adressierbereich (Tabelle 1.17):

Durch die Adressierung ergibt sich ein Bereich in 8-Kbyte-Blöcken.

Auf den externen Programmspeicher wird stets über eine 16-Bit-Adresse zugegrif-fen, auf den externen Datenspeicher entweder über eine 16-Bit-Adresse (MOVX@DPTR) oder eine 8-Bit-Adresse (MOVX @Ri).

Immer wenn eine 16-Bit-Adresse verwendet wird, erscheint das obere Adressbytean Port 2, wo es für die Dauer des Lese- oder Schreibzyklus stehen bleibt. Wennauf den Zyklus mit dem externen Speicher nicht ein weiterer derartiger Zyklusunmittelbar folgt, wird der unveränderte Inhalt des speziellen Funktionsregistersvon Port 2 im nächsten Zyklus wieder erscheinen.

Bei Verwendung einer 8-Bit-Adresse (MOVX @Ri) bleibt der Inhalt des Zwischen-speichers von Port 2 während des gesamten Zyklus mit dem externen Speicher anden Anschlüssen von Port 2 erhalten. In jedem Fall erscheint das untere Adress-byte im Zeitmultiplex mit dem Datenbyte an Port 0. Das Adress-/Datensignaltreibt beide Feldeffekttransistoren in den Ausgangspuffern von Port 0. Daher sinddie Anschlüsse von Port 0 bei dieser Anwendung keine Open-Drain-Ausgängeund erfordern somit keine externen Pull-up-Widerstände. Das Signal ALE(Address Latch Enable) soll dazu dienen, das Adressbyte in einen externen Zwi-schenspeicher zu bringen und das Adressbyte ist beim negativen Übergang vonALE gültig. In einem Schreibzyklus erscheint dann das zu schreibende Byte anPort 0, unmittelbar bevor WR aktiviert wird, und bleibt dort bis nach der Deaktivie-rung von WR stehen. Bei einem Lesezyklus wird das ankommende Byte unmittel-bar vor der Deaktivierung von RD an Port 0 entgegengenommen.

A15 A14 A13 Adressierbereich

0 0 0 0000 bis 8191 0000 bis 1FFF

0 0 1 8192 bis 16383 2000 bis 3FFF

0 1 0 16384 bis 24575 4000 bis 5FFF

0 1 1 24576 bis 32767 6000 bis 7FFF

1 0 0 32768 bis 40959 8000 bis 9FFF

1 0 1 40959 bis 49151 A000 bis BFFF

1 1 0 49152 bis 57343 C000 bis DFFF

1 1 1 57344 bis 65535 E000 bis FFFF

Tabelle 1.17: Adressierbereich für das 8-Kbyte-RAM HM1-65642

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 47: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

72

Während eines jeden Zugriffs auf den externen Speicher schreibt die Zentralein-heit den Wert FFH in den Zwischenspeicher von Port 0 (d.h. in das betreffendespezielle Funktionsregister) und löscht damit die vorher vorhandene Informationin diesem Register.

Auf den externen Programmspeicher wird bei Erfüllung von wenigstens einer derbeiden Bedingungen zugegriffen:

1. Das Signal EA ist aktiv.

2. Der Programmzähler (PC) enthält einen Wert, der größer als 0FFFH ist.

Dies macht es erforderlich, dass bei der Version ohne ROM (8031) die EA-Einheitendurch entsprechende Verdrahtung fest auf 0-Signal gelegt werden müssen, damitauf die unteren 4 Kbyte des externen Programmspeichers zugegriffen werden kann.

Wenn die Zentraleinheit auf den externen Programmspeicher zugreift, sind alleacht Anschlüsse von Port 2 in Ausgabe-Funktion und dürfen nicht für allgemeineE/A-Zwecke verwendet werden. Wird der externe Programmspeicher angespro-chen, so gibt Port 2 das obere Byte des Programmzählers aus, wird der externeDatenspeicher angesprochen und so stellt dieser Port entweder DPH oder den Wertdes speziellen Funktionsregisters von Port 2 zur Verfügung. Dies ist davon abhän-gig, ob der Zugriff auf den externen Datenspeicher mit einem Befehl MOVX @DPTRoder MOVX @Ri erfolgt.

Abb. 1.20: Anschluss eines Befehlsspeichers mit 8 Kbyte

Abbildung 1.20 zeigt den Anschluss des Befehlsspeichers 27C64 mit 8 Kbyte anden Mikrocontroller. Die Daten und Adressen von D0 bis D7 und von A0 bis A7

werden gemeinsam über Port 0 ausgegeben. Die Datenleitungen liegen direkt an

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 48: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.3Aufbau und Betrieb der Ports

73

dem RAM an und die Adressenleitungen werden über den Baustein 74373 zwi-schengespeichert. Die Steuerung für das EPROM 27C64 übernehmen die dreiEingänge PGM (Program Gate Memory), OE (Output Enable) und CE (ChipEnable). Der PGM-Eingang ist auf Masse gelegt und hat ein 0-Signal. DerEPROM-Baustein wird freigegeben, wenn der CE-Eingang auf 0-Signal liegt. DerCE-Eingang ist direkt mit dem NOR-Ausgang verbunden und für den Adressierbe-reich gilt Tabelle 1.17. Der OE-Eingang wird mit dem PSEN-Ausgang verbundenund schaltet der Mikrocontroller seinen PSEN-Ausgang auf 0-Signal, gibt derEPROM-Baustein seine gespeicherten Informationen aus.

1.3.7 Signal PSEN

PSEN ist das Freigabesignal beim Zugriff auf den externen Programmspeicher; zumLesen des internen Programmspeichers wird dieses Signal nicht aktiviert. BeimZugriff der Zentraleinheit auf den externen Programmspeicher wird PSEN währendeines jeden Zyklus zweimal aktiviert (außer bei einem MOVX-Befehl), und zwarunabhängig davon, ob das geholte Byte gerade für den momentan abzuarbeitendenBefehl benötigt wird oder nicht. Der zeitliche Verlauf des (aktivierten) Signals PSENist nicht derselbe wie von RD. Ein vollständiger Zyklus von RD, einschließlich Akti-vierung und Deaktivierung von ALE und RD, dauert 12 Oszillatorperioden, ein voll-ständiger Zyklus von PSEN, einschließlich Aktivierung und Deaktivierung von ALEund PSEN, jedoch nur sechs Oszillatorperioden. Die Impulsdiagramme für diesebeiden Arten von Lesezyklen sind zum Vergleich in Abbildung 1.21 dargestellt.

1.3.8 Signal ALE

Die Hauptaufgabe des Signals ALE besteht darin, während des Zugriffs auf denexternen Programmspeicher für die Aufnahme des unteren Adressbytes aus PortP0 in dem zugehörigen externen Zwischenspeicher zu sorgen. Hierfür wird ALEzweimal während eines jeden Zyklus aktiviert. Dies geschieht auch dann, wennder Zyklus keinen externen Zugriff beinhaltet. ALE fällt jedoch dann einmal aus,wenn auf den externen Datenspeicher zugegriffen werden soll, und zwar fehlt daserste ALE-Signal des zweiten Zyklus eines MOVX-Befehls. Daraus folgt, dass injedem System ohne externen Datenspeicher ALE stets mit einer konstanten Fre-quenz von 1/6 der Oszillatorfrequenz auftritt und daher für externe Takt- oderZeitgeberschaltungen verwendet werden kann.

Bei einigen Anwendungen kann es wünschenswert sein, ein Programm in dem-selben physischen Speicher abzulegen, der auch zum Speichern von Daten dient.Beim Mikrocontroller 8051 können die externen Programm- und Datenspeicher-bereiche dadurch kombiniert werden, dass man eine UND-Verknüpfung vonPSEN und RD durchführt. Die UND-Verknüpfung (positive Logik) dieser beidenSignale erzeugt ein Lese-Strobesignal, das im aktiven Zustand auf 0-Signal ist undfür den kombinierten Speicher verwendet werden kann. Da der PSEN-Zyklus kür-zer als der RD-Zyklus ist, muss der externe Speicher schnell genug sein, um sichan den PSEN-Zyklus anpassen zu können.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 49: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

74

Abb. 1.21: Impulsdiagramme zum Lesen aus dem externen Programmspeicher ohne MOVX-Befehl und mit MOVX-Befehl

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 50: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.4Zeitgeber und Zähler im 8051

75

1.4 Zeitgeber und Zähler im 8051

Im 8051 sind zwei 16-Bit-Zeitgeber/Zähler (0 und 1) integriert, die entweder alsZeitgeber oder Zähler sowie in vier Betriebsarten (0,1, 2 und 3) arbeiten können.Zu den Zeitgebern/Zählern gehören die speziellen Funktionsregister TMOD (Zeit-geber/Zähler-Betriebsartregister von Tabelle 1.18) und TCON (Zeitgeber/Zähler-Steuer/Statusregister von Tabelle 1.19). Sie dienen zur Festlegung von Funktionund Betriebsart bzw. zur Steuerung und Kennzeichnung der Zeitgeber/Zähler(z.B. für einen Interrupt oder bei einem Überlauf). Änderungen des Inhalts vonTMOD oder TCON – sei es durch Hardware oder Software, abhängig von den einzel-nen Bits dieser Register – wirken sich ab S1P1 im ersten Zyklus des nächstenBefehls aus. Sämtliche Bits der genannten Register werden durch Rücksetzengelöscht. Die genauen Funktionen der einzelnen Bits dieser Register sind ausTabelle 1.18 und Tabelle 1.19 zu ersehen.

höchst-wertiges

Bit

niedrigst-wertiges

Bit

GATE C/T M1 M0 GATE C/T M1 M0

Zeitgeber/Zähler 1 Zeitgeber/Zähler 0

Kennzeichnungsbit Bit-Speicherstelle Funktion von GATE und C/T

GATE TMOD.7.3 Steuerung durch eine Logikschaltung. Wird es gesetzt, so ist der Zeitgeber/Zähler nur dann aktiviert, wenn der Anschluss INTx ein 1-Signal hat und das Steuerbit TRx gesetzt ist (x = 0,1). Ist GATE gelöscht, so wird der Zeit-geber/Zähler durch Setzen von TRx stets akti-viert.

C/T TMOD.6.2 Festlegung, ob Betrieb als Zeitgeber oder Zähler erfolgt. Falls gelöscht, Betrieb als Zeit-geber (Eingangsimpulse vom internen Takt-geber). Falls gesetzt, Betrieb als Zähler (Eingangsimpulse vom Anschluss Tx).

M1 (TMOD.5.1)

M0 (TMOD.4.0)

Betriebs-art

Funktion in der gewählten Betriebsart

0 0 0 Die Bits 4 bis 0 stellen den Vorteiler dar (Division durch 32).

0 1 1 THx und TLx sind in Kaskade zum 16-Bit-Zeitgeber/Zähler zusammengeschaltet; einen Vorteiler gibt es nicht.

Tabelle 1.18: Zeitgeber/Zähler-Betriebsartregister (TMOD)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 51: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

76

Die Steuerbits C/T (TMOD.2 und TMOD.6) entscheiden darüber, ob die Zeitge-ber/Zähler 0 bzw. 1 als Zeitgeber bzw. Zähler betrieben werden. Wenn die Einheitals Zeitgeber (O/T = 0) arbeitet, wird ihr Register bei jedem Maschinenzyklusinkrementiert, so dass diese praktisch gezählt werden. Da ein Maschinenzyklusaus 12 Oszillatorperioden besteht, beträgt die Zählrate 1/2 der Oszillatorfrequenz.

1 0 2 Der 8-Bit-Zeitgeber/Zähler THx mit automati-scher Rückladung enthält einen Wert, der nach TLx rückgeladen wird, wenn dort ein Überlauf erfolgt.

1 1 3 Zeitgeber/Zähler 0: TL0 ist ein 8-Bit-Zeitge-ber/Zähler, der durch die Standard-Steuerbits von Zeitgeber/Zähler 0 gesteuert wird. TH0 ist ein 8-Bit-Zeitgeber, der nur durch die Steuerbits von Zeitgeber/Zähler 1 gesteuert wird.

1 1 3 Zeitgeber/Zähler 1: Dieser ist gestoppt.

höchst-wertiges

Bit

niedrigst-wertiges

Bit

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Kennzeichnungsbit Bit-Speicherstelle Funktion

TF1 TCON.7 Kennzeichnungsbit für Überlauf von Zeitge-ber/Zähler 1. Wird beim Überlauf durch Hard-ware gesetzt und durch Hardware gelöscht, wenn der Prozessor eine Interrupt-Routine anspringt.

TR1 TCON.6 Steuerbit zur Inbetriebnahme von Zeitgeber/Zähler 1. Wird durch Software gesetzt/gelöscht, um Zeitgeber/Zähler 1 an- bzw. abzuschalten.

TF0 TCON.5 Kennzeichnungsbit für Überlauf von Zeitge-ber/Zähler 0. Wird beim Überlauf durch Hardware gesetzt und durch Hardware gelöscht, wenn der Prozessor eine Interrupt-Routine anspringt.

TR0 TCON.4 Steuerbit zur Inbetriebnahme von Zeitgeber/Zähler 0. Wird durch Software gesetzt/gelöscht, um Zeitgeber/Zähler 0 an- bzw. abzuschalten.

Tabelle 1.19: Zeitgeber/Zähler-Steuer/Statusregister (TCON)

Tabelle 1.18: Zeitgeber/Zähler-Betriebsartregister (TMOD) (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 52: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.4Zeitgeber und Zähler im 8051

77

Arbeitet dieser als Zähler (C/T = 1), so wird das Register bei jeder 1-0-Flanke andem entsprechenden externen Anschluss (T0 oder T1) inkrementiert. Bei dieserBetriebsweise wird der externe Anschluss während des Zeitabschnitts S5P2 einesjeden Maschinenzyklus abgefragt. Ergibt sich hierbei in einem Zyklus 1-Signalund im nächsten 0-Signal, wird der Zähler inkrementiert. Der neue Zählwerterscheint im Register während des Zeitabschnitts S3P1 in dem Zyklus unmittelbarnach jenem, in dem der Übergang erkannt wurde. Da es zwei Maschinenzyklen(24 Oszillatorperioden) dauert, um eine 1-0-Flanke (negativ) zu erkennen, beträgtdie Zählrate maximal 1/24 der Oszillatorfrequenz. Bezüglich der Zyklen äußererEingangssignale gibt es keine Beschränkungen; um jedoch sicherzustellen, dassein gegebener Pegel wenigstens einmal abgefragt wird, bevor er sich ändert, sollteer mindestens bei einem vollen Maschinenzyklus stehen bleiben.

Außer der Möglichkeit, zwischen der Funktion als Zeitgeber oder Zähler zu wäh-len, gibt es noch vier verschiedene Betriebsarten, die durch die Bitpaare M1, M0 imspeziellen Funktionsregister TMOD festgelegt werden. Die Betriebsarten 0, 1 und 2sind bei beiden Zeitgebern/Zählern dieselben, Betriebsart 3 ist unterschiedlich.Die vier Betriebsarten werden im Folgenden beschrieben. Abbildung 1.22 zeigtden Mikrocontroller 8051 in einer simulierten Schaltung mit externem Taktgeberund interner Zählfunktion.

IE1 TCON.3 Kennzeichnungsbit für externen Interrupt an INT1. Wird durch Hardware gesetzt, wenn eine 1-0-Flanke zur Auslösung eines externen Interrupts an INT1 erkannt wird, und bei der Ausführung des Interrupts gelöscht.

IT1 TCON.2 Steuerbit für Interrupt an INT1. Wird durch Software gesetzt oder gelöscht, um entweder einen flankenaktivierten (1-0-Übergang) oder einen pegelaktivierten (aktiv 0-Signal) exter-nen Interrupt zuzulassen.

IE0 TCON.1 Kennzeichnungsbit für externen Interrupt an INT0. Wird durch Hardware gesetzt, wenn eine 1-0-Flanke zur Auslösung eines externen Interrupts an INT0 erkannt wird, und bei Aus-führung des Interrupts gelöscht.

IT0 TCON.0 Steuerbit für Interrupt an INT0. Wird durch Software gesetzt oder gelöscht, um entweder einen flankenaktivierten (1-0-Übergang) oder einen pegelaktivierten (aktiv 0-Signal) exter-nen Interrupt zuzulassen.

Tabelle 1.19: Zeitgeber/Zähler-Steuer/Statusregister (TCON) (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 53: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

78

Abb. 1.22: Mikrocontroller 8051 mit externem Taktgeber und interner Zählfunktion

Betriebsart 0: Wie im vorigen Abschnitt dargelegt, ist die Betriebsart 0 beim Zeit-geber/Zähler 0 und beim Zeitgeber/Zähler 1 identisch. Bei der zur Erläuterungdieser Betriebsart dienenden Abbildung 1.23 wird auf Zeitgeber/Zähler 1 Bezuggenommen; für Zeitgeber/Zähler 0 sind lediglich die Bezeichnungen T0, TF0,INT0, TL0 und TH0 anstelle der entsprechenden, zum Zeitgeber/Zähler 1 gehö-renden Bezeichnungen einzusetzen. Für die Zeitgeber/Zähler 0 und 1 gibt es jeein Bit GATE (TMOD.3 und TMOD.7).

Abb. 1.23: Blockschaltung von Zeitgeber/Zähler in Betriebsart 0 (13-Bit-Zähler)

In Betriebsart 0 verhält sich der Zeitgeber/Zähler 0 oder 1 wie der 8048-Zeitgeber,der ein 8-Bit-Zähler mit Vorteilung durch 32 ist. Wie Abbildung 1.23 zeigt, ist das

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 54: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.4Zeitgeber und Zähler im 8051

79

Zeitgeber/Zähler-Register in dieser Betriebsart ein 13-Bit-Register. Wenn bei derZählung ein Überlauf vom Zustand »Nur Einsen« in den Zustand »Nur Nullen«erfolgt, setzt dieses Register das Zeitgeber-Interrupt-Kennzeichnungsbit TF1. DieZählung am Eingang des Zeitgebers/Zählers 1 ist dann freigegeben, wenn TR1 = 1gesetzt ist und außerdem entweder GATE = 0 oder INT1 = 1 gilt. (Mit GATE = 1kann der Zeitgeber/Zähler über den externen Eingang INT1 gesteuert werden,wodurch Pulsbreitenmessungen erleichtert werden.)

TR1 ist ein Steuerbit im speziellen Funktionsregister TCON (Tabelle 1.19) undGATE ist ein Steuerbit im speziellen Funktionsregister TMOD (Tabelle 1.18).

Das 13-Bit-Register besteht aus sämtlichen acht Bits des speziellen Funktionsregis-ters TH1 und den unteren fünf Bits des speziellen Funktionsregisters TL1. Dieoberen Bits von TL1 sind unbestimmt und sollten nicht beachtet werden. DurchSetzen des Kennzeichnungsbits »Inbetriebnahme« (TR1) werden die Registernicht gelöscht.

Betriebsart 1: Betriebsart 1 ist mit Betriebsart 0 identisch, ausgenommen, dass dasZeitgeber/Zähler-Register in Betriebsart 1 im 16-Bit-Format betrieben wird.

Betriebsart 2: Bei dieser Betriebsart wird das Zeitgeber/Zähler-Register zu einem8-Bit-Zähler (TL1) mit automatischer Rückladung, wie in Abbildung 1.24 darge-stellt ist. Ein Überlauf von TL1 setzt nicht nur TF1‚ sondern lädt auch den Inhaltvon TH1 nach TL1 zurück; TH1 wird vorher per Software eingestellt. TH1 wirddurch den Rückladevorgang nicht geändert.

Abb. 1.24: Blockschaltung von Zeitgeber/Zähler in Betriebsart 2 (automatische Rückladung)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 55: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

80

Betriebsart 2 von Zeitgeber/Zähler 1 und Betriebsart 2 von Zeitgeber/Zähler 0sind gleich.

Betriebsart 3: Wird Zeitgeber/Zähler 1 in Betriebsart 3 gebracht, so ändert sich seinInhalt nicht. In den anderen Betriebsarten lässt sich dies durch TR1 = 0 erreichen.

Abb. 1.25: Blockschaltung des Zeitgebers/Zählers

Zeitgeber/Zähler 0 in Betriebsart 3 richtet TL0 und TH0 als zwei getrennte Zählerein. Abbildung 1.25 zeigt die Logik von Zeitgeber/Zähler 0 und 1 in dieserBetriebsart. Daraus ist ersichtlich, dass TL0 die Steuerbits C/T, GATE, TR0, INT0und TF0 von Zeitgeber/Zähler 0 verwendet und TH0 somit nur als Zeitgeberbenutzt werden kann (Zählen von Maschinenzyklen). Dabei nimmt TH0 jetzt TR1und TF1 von Zeitgeber/Zähler 1 in Anspruch, so dass TH0 nun den Interrupt vonZeitgeber/Zähler 1 steuert.

Betriebsart 3 ist für solche Anwendungen vorgesehen, die einen weiteren 8-Bit-Zeitgeber oder -Zähler benötigen. Mit dem Zeitgeber/Zähler 0 in Betriebsart 3stellt sich der 8051 als Mikrocontroller mit drei Zeitgebern/Zählern dar. Befindetsich Zeitgeber/Zähler 0 in Betriebsart 3, so lässt sich Zeitgeber/Zähler 1 ein- undausschalten, indem man ihn aus seiner Betriebsart 3 herausnimmt bzw. ihn in

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 56: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.5Serielle Schnittstelle

81

diese hineinbringt. Außerhalb Betriebsart 3 kann er dann vom seriellen Port alsBaudratengenerator verwendet werden oder in jeder anderen Anwendung arbei-ten, die keinen Interrupt erfordert (TF1 ist für ihn jetzt nicht verfügbar).

1.5 Serielle Schnittstelle

Der serielle Port ist ein Vollduplex-Port, der also gleichzeitig senden und empfan-gen kann. Er ist außerdem empfängerseitig gepuffert, das heißt, er kann bereitsmit dem Empfang eines zweiten Bytes beginnen, bevor das vorher empfangeneByte vom Empfängerregister gelesen wurde. Ist jedoch das erste Byte dann nochnicht gelesen, wenn das zweite Byte vollständig ist, so geht eines der Bytes verlo-ren. Sowohl das serielle Sender- als auch das Empfängerregister des Ports werdenüber das spezielle Funktionsregister SBUF angesprochen; Schreiben in SBUF lädtdas Senderegister, und Lesen aus SBUF greift auf ein räumlich getrenntes Emp-fängerregister zu. Abbildung 1.26 zeigt die simulierte Schaltung einer seriellenSchnittstelle mit dem Mikrocontroller 8051 und dem SchnittstellenbausteinMAX232.

Abb. 1.26: Simulierte Schaltung einer seriellen Schnittstelle mit dem Mikrocontroller 8051 und dem Schnittstellenbaustein MAX232

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 57: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

82

1.5.1 Betriebsarten des seriellen Ports

Der serielle Port kann in einer von vier Betriebsarten arbeiten, was durch das spe-zielle Funktionsregister SCON (Steuer- und Statusregister für den seriellen Port)vorgegeben wird. Außer den hierfür erforderlichen Bits zur Betriebsart-Auswahlenthält dieses Register auch das 9. Datenbit, das beim Senden und Empfangenbestimmte Funktionen erfüllt (TB8 bzw. RB8), sowie die Interrupt-Kennzeich-nungsbits des seriellen Ports (TI und RI), ein Bit zur Empfangsfreigabe seriellerDaten (REN) und eine weitere Bitstelle. Die Funktionen der Bits in SCON sind inTabelle 1.20 aufgelistet; in ihrem unteren Teil sind die vier Betriebsarten des seri-ellen Ports angegeben. Abbildung 1.27 zeigt den Aufbau der Datenblöcke bei typi-schen Anwendungen mit Angabe der Betriebsarten. Diese werden im Folgendennäher beschrieben.

Abb. 1.27: Aufbau typischer Datenblöcke für einige Anwendungen

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 58: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.5Serielle Schnittstelle

83

höchst-wertiges

Bit

niedrigst-wertiges

Bit

SM0 SM1 SM2 REN TB8 RB8 TI RI

Kennzeichnungsbit Bit-Speicherstelle Funktion

SM0, SM1 SCON.6,7 siehe Seite 84

SM2 SCON.5 Bit für Multiprozessor-Datenübertragung. Es gibt die Datenübertragung in einem Multi-prozessorsystem in den Betriebsarten 2 und 3 frei. Ist SM2 in den Betriebsarten 2 oder 3 auf 1-Signal gesetzt, so wird RI nicht akti-viert, wenn das empfangene 9. Datenbit (RB8) den Wert Null hat. Ist SM2 in Betriebs-art 1 auf 1-Signal gesetzt, so wird RI nicht aktiviert, wenn kein gültiges Stoppbit emp-fangen wurde. In Betriebsart 0 sollte SM2 auf 0-Signal sein.

REN SCON.4 Bit für Empfangsfreigabe. Wird durch Soft-ware gesetzt/gelöscht, um den Empfang seri-eller Daten zuzulassen/nicht zuzulassen.

TB8 SCON.3 9. Datenbit, das in den Betriebsarten 2 und 3 gesendet wird. Kann durch Software gesetzt oder gelöscht werden.

RB8 SCON.2 9. Datenbit, das in den Betriebsarten 2 und 3 empfangen wurde. Ist SM2 in Betriebsart 1 auf null gesetzt, so stellt RB8 das empfan-gene Stoppbit dar. In Betriebsart 0 wird RB8 nicht verwendet.

TI SCON.1 Sende-Interrupt-Kennzeichnungsbit. Wird in Betriebsart 0 durch Hardware am Ende der für das 8. Bit vorgesehenen Zeit gesetzt, bei den übrigen Betriebsarten am Anfang des Stoppbits. Dies gilt für jedes serielle Senden. Löschen muss durch Software erfolgen.

RI SCON.0 Empfänger-Interrupt-Kennzeichnungsbit. Wird in Betriebsart 0 durch Hardware am Ende der für das 8. Bit vorgesehenen Zeit gesetzt, bei den übrigen Betriebsarten in der Mitte der für das Stoppbit vorgesehenen Zeit. Dies gilt für jeden seriellen Empfang. Aus-nahmen werden zu SM2 erläutert. Löschen muss durch Software erfolgen.

Tabelle 1.20: Steuer-/Statusregister des seriellen Ports (SCON)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 59: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

84

Die Funktionen der Bits in SCON sind in Tabelle 1.20 aufgelistet; in ihrem unte-ren Teil sind die vier Betriebsarten des seriellen Ports angegeben. Abbildung 1.27zeigt den Aufbau der Datenblöcke bei typischen Anwendungen mit Angabe derBetriebsarten. Diese werden im Folgenden näher beschrieben.

Betriebsart 0: Serielle Daten werden durch RXD sowohl empfangen als auch ausge-geben. TXD ist der Ausgang für den Schiebetaktimpuls. Es werden acht Datenbitsempfangen oder ausgegeben, und zwar das niedrigstwertige Bit zuerst. Die Baud-rate ist zu 1/12 der Oszillatorfrequenz festgelegt.

1.5.2 Senden und Empfangen von Informationen

Der Empfang von Daten wird durch die Bedingungen REN = 1 und RI = 0 einge-leitet. Während S6P2 des nächsten Maschinenzyklus schreibt die Steuereinheit RXdie Bits 11111110 in das Empfänger-Schieberegister und aktiviert in der nächs-ten Taktphase das Signal »RECEIVE«.

Sobald Datenbits von rechts hineingeschoben werden, fallen Einsen nach linksheraus. Ist die Null, die ursprünglich in die Speicherstelle ganz rechts geladenworden war, ganz links im Schieberegister angekommen, so wird die Steuerein-heit RX veranlasst, eine letzte Verschiebung um eine Speicherstelle vorzunehmenund SBUF zu laden. Während S1P1 des 10. Maschinenzyklus nach dem Schreibenin SCON durch RI gelöscht wurde, wird »RECEIVE« deaktiviert und RI gesetzt.

Betriebsart 1: Hier werden zehn Bits ausgegeben (über TXD) oder empfangen (überRXD): ein Startbit (0), acht Datenbits (das niedrigstwertige Bit zuerst) und einStoppbit (1). Beim Empfang nimmt RB8 in SCON das Stoppbit auf. Die Baudratewird durch die Überlaufrate von Zeitgeber 1 festgelegt.

Die Ausgabe wird durch jeden Befehl eingeleitet, der SBUF als Zielregister ver-wendet. Das Signal »Schreiben in SBUF« lädt auch ein 1-Signal in die 9. Bitposi-tion des Sender-Schieberegisters und teilt der Steuereinheit TX mit, dass eineAusgabe verlangt wird. Diese beginnt dann während S1P1 desjenigen Maschinen-zyklus, der auf den nächsten Überlauf des die Überläufe von Zeitgeber/Zähler 1

SM0(SCON.7)

SM1(SCON.6)

Betriebs-art

Funktion in der gewählten Betriebsart

0 0 0 E/A-Erweiterung durch Schieberegister, Baudrate 1/12 der Taktfrequenz

0 1 1 8-Bit-UART, variable Baudrate

1 0 2 9-Bit-UART, die Baudrate beträgt entweder 1/32 oder 1/64 der Taktfrequenz

1 1 3 9-Bit-UART, variable Baudrate

Tabelle 1.20: Steuer-/Statusregister des seriellen Ports (SCON) (Forts.)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 60: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.5Serielle Schnittstelle

85

durch 16 dividierenden Zählers folgt. Somit sind die Bitzeiten in Bezug auf diesenZähler synchronisiert, nicht in Bezug auf das Signal »Schreiben in SBUF«.

Die Ausgabe beginnt mit der Aktivierung von SEND, wodurch das Startbit an TXDerscheint. Eine Bitzeit später wird DATA aktiviert, was zur Freigabe der auszuge-benden Bits des Sender-Schieberegisters nach TXD führt. Der erste Schiebeim-puls tritt eine Bitzeit danach auf.

Sobald Datenbits nach rechts hinausgeschoben werden, kommen Nullen von linksentsprechend den Taktimpulsen hinein. Ist das höchstwertige Bit des Datenbytesam Ausgang des Schieberegisters angekommen, so befindet sich ein 1-Signal, dasursprünglich in die 9. Speicherstelle geladen worden war, unmittelbar links nebendem höchstwertigen Bit, und alle übrigen Speicherstellen links davon enthaltennur Nullen. Diese Konstellation veranlasst die Steuereinheit TX, eine letzte Ver-schiebung um eine Speicherstelle vorzunehmen, danach SEND zu deaktivierenund TI zu setzen. Dies erfolgt beim 10. Überlauf des durch 16 dividierenden Zäh-lers nach dem Signal »Schreiben in SBUF«.

Der Empfang von Daten wird eingeleitet, sobald ein Übergang von 1 nach 0 anRXD entdeckt ist. Zu diesem Zweck erfolgt – unabhängig von der eingestelltenBaudrate – eine 16-malige Abfrage von RXD. Ist ein Übergang entdeckt worden, sowird der durch 16 dividierende Zähler sofort zurückgesetzt und 1FFH in das Emp-fänger-Schieberegister geschrieben. Das Rücksetzen des durch 16 dividierendenZählers führt zur Synchronisation seiner Überläufe mit den Zeiten, die für dieankommenden Bits zur Verfügung stehen.

Die 16 Zählerschritte teilen jede Bitzeit in Sechzehntel ein. Während des 7., 8. und9. Zählerschritts jeder Bitzeit überprüft der Bitdetektor den an RXD stehendenWert. Der akzeptierte Wert ist derjenige, der bei wenigstens zwei der drei Abfragenfestgestellt wurde. Dies geschieht zur Rauschunterdrückung. Beträgt der währendder 1. Bitzeit akzeptierte Wert nicht null, so werden die Empfangsschaltungenzurückgesetzt, und die Einheit wartet auf einen weiteren Übergang von 1 nach 0.Dies dient zur Rückweisung falscher Startbits. Ist das Startbit als gültig erkannt,wird es in das Empfänger-Schieberegister übernommen und danach ebenfalls derrestliche Datenblock.

Sobald Datenbits von rechts hineingeschoben werden, fallen Einsen nach linksheraus. Ist das Startbit ganz links im Schieberegister angekommen (bei Betriebs-art 1 ein 9-Bit-Register), so wird die Steuereinheit RX veranlasst, eine letzte Ver-schiebung um eine Speicherstelle vorzunehmen, SBUF mit RB8 zu laden sowieRI zu setzen. Das Signal zum Laden von SBUF und RB8 sowie zum Setzen vonRI wird dann und nur dann erzeugt, wenn folgende Bedingungen während derErzeugung des letzten Schiebeimpulses erfüllt sind:

1. RI = 0

2. entweder ist SM2 = 0 oder das empfangene Stoppbit = 1.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 61: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

86

Ist eine dieser zwei Bedingungen nicht erfüllt, so ist der empfangene Block unwie-derbringlich verloren. Bei Erfüllung beider Bedingungen nimmt RB8 das Stoppbitauf, SBUF die acht Datenbits, und RI wird aktiviert. Unabhängig davon, ob dieobigen Bedingungen erfüllt sind oder nicht, beginnt die Einheit zu dieser Zeit wie-der, auf einen Übergang von 1 nach 0 an RXD zu warten.

Betriebsarten 2 und 3: Hier werden elf Bits ausgegeben (über TXD) oder empfan-gen (über RXD): ein Startbit mit 0-Signal gekennzeichnet, acht Datenbits (dasniedrigstwertige Bit zuerst), ein programmierbares 9. Datenbit und ein Stoppbitmit 1-Signal gekennzeichnet. Soll ausgegeben werden, so kann dem 9. Datenbit(TB8) der Wert 0 oder 1 zugewiesen werden. Beim Empfang wird das 9. Datenbitvon RB8 in SCON aufgenommen. In Betriebsart 2 beträgt die Baudrate entweder1/32 oder 1/64 der Oszillatorfrequenz, in Betriebsart 3 wird sie von der durch 16oder 32 dividierten Überlaufrate des Zeitgebers 1 festgelegt.

Hierdurch ist eine automatische Inbetriebnahme von Slave-Prozessoren durcheine Adressblock-Erkennung möglich. Diese erfolgt mittels Interrupts, was zueiner Vereinfachung des Datenaustausches zwischen den Mikrocontrollern (8051)führt. Die Ausgabe wird durch jeden Befehl eingeleitet, der SBUF als Zielregisterverwendet. Das Signal »Schreiben in SBUF« lädt auch TB8 in die 9. Bitpositiondes Sender-Schieberegisters und teilt der Steuereinheit TX mit, dass eine Ausgabeverlangt wird. Diese beginnt dann während S1P1 desjenigen Maschinenzyklus, derauf den nächsten Überlauf in dem durch 16 dividierenden Zähler folgt. Somit sinddie Bitzeiten in Bezug auf diesen Zähler synchronisiert, nicht in Bezug auf dasSignal »Schreiben in SBUF«.

Die Ausgabe beginnt mit der Aktivierung von SEND, wodurch das Startbit an TXDerscheint. Eine Bitzeit später wird DATA aktiviert, was zur Freigabe des auszuge-benden Bits des Sender-Schieberegisters nach TXD führt. Der erste Schiebeim-puls tritt eine Bitzeit danach auf; er taktet ein 1-Signal (das Stoppbit) in die9. Bitposition des Schieberegisters. Danach werden nur Nullen hineingetaktet.Sobald daher Datenbits nach rechts hinausgeschoben werden, kommen Nullenvon links entsprechend den Taktimpulsen hinein. Ist TB8 am Ausgang des Schie-beregisters angekommen, so befindet sich das Stoppbit unmittelbar links dane-ben, und alle übrigen Speicherstellen links davon enthalten nur Nullen. DieseKonstellation veranlasst die Steuereinheit TX, eine letzte Verschiebung um eineSpeicherstelle vorzunehmen, danach SEND zu deaktivieren und TI zu setzen.Dies erfolgt beim 11. Überlauf des durch 16 dividierenden Zählers nach dem Sig-nal »Schreiben in SBUF«.

Der Empfang von Daten wird eingeleitet, sobald ein Übergang von 1 nach 0 (nega-tive Flanke) an RXD entdeckt wurde. Zu diesem Zweck erfolgt – unabhängig vonder eingestellten Baudrate – eine 16-malige Abfrage von RXD. Ist ein Übergangentdeckt worden, so wird der durch 16 dividierende Zähler sofort zurückgesetztund 1FFH in das Empfangs-Schieberegister geschrieben.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 62: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.5Serielle Schnittstelle

87

Während des 7., 8. und 9. Zählerschritts jeder Bitzeit überprüft der Bitdetektor denan RXD stehenden Wert. Der akzeptierte Wert ist derjenige, der bei wenigstens zweider drei Abfragen festgestellt wurde. Beträgt der während der ersten Bitzeit akzep-tierte Wert nicht null, so werden die Empfangsschaltungen zurückgesetzt, und dieEinheit wartet auf einen weiteren Übergang von 1 nach 0 (negative Flanke). Ist dasStartbit als gültig erkannt, wird es in das Empfänger-Schieberegister übernommenund danach ebenfalls der restliche Datenblock.

Sobald Datenbits von rechts hineingeschoben werden, fallen Einsen nach linksheraus. Ist das Startbit ganz links im Schieberegister angekommen (bei denBetriebsarten 2 und 3 ein 9-Bit-Register), so wird die Steuereinheit RX veranlasst,eine letzte Verschiebung um eine Speicherstelle vorzunehmen, SBUF und RB8 zuladen sowie RI zu setzen. Das Signal zum Laden von SBUF und RB8 sowie zumSetzen von RI wird dann und nur dann erzeugt, wenn folgende Bedingungenwährend der Erzeugung des letzten Schiebeimpulses erfüllt sind:

1. RI = 0 und

2. entweder ist SM2 = 0 oder das empfangene 9. Datenbit = 1.

Ist eine dieser Bedingungen nicht erfüllt, so ist der empfangene Block unwieder-bringlich verloren, und RI wird nicht gesetzt. Bei Erfüllung beider Bedingungennimmt RB8 das empfangene 9. Datenbit auf und SBUF die ersten acht Datenbits.Unabhängig davon, ob die obigen Bedingungen erfüllt sind oder nicht, beginnt dieEinheit eine Bitzeit später erneut auf einen Übergang von 1 nach 0 (negativeFlanke) an RXD zu warten.

Man beachte, dass der Wert des empfangenen Stoppbits ohne Einfluss auf SBUF,RB8 oder RI ist.

1.5.3 Datenverkehr in Multiprozessorsystemen

Die Betriebsarten 2 und 3 beinhalten eine spezielle Vorkehrung zum Datenver-kehr in Multiprozessorsystemen. Bei diesen Betriebsarten werden neun Bits emp-fangen, wobei das 9. Bit von RB8 aufgenommen wird. Danach kommt dasStoppbit. Der Port kann so programmiert werden, dass nach Empfang des Stopp-bits ein Interrupt des seriellen Ports nur dann ausgelöst wird, wenn RB8 = 1 ist.Dies wird durch Setzen von SM2 in SCON erreicht.

Eine Möglichkeit zur Verwendung dieses Merkmals in Multiprozessorsystemenbesteht in Folgendem: Wenn der Master-Mikrocontroller einen Datenblock aneinen von mehreren Slaves übertragen will, sendet er zunächst ein Adressbyte aus,das den betreffenden Slave identifiziert. Ein Adressbyte unterscheidet sichdadurch von einem Datenbyte, dass das 9. Bit des Adressbytes eine Eins enthält,das 9. Bit des Datenbytes dagegen ein 0-Signal. Ist SM2 = 1 gesetzt, so wird bei denSlaves kein Interrupt durch ein Datenbyte ausgelöst, durch ein Adressbyte dage-gen erfolgt ein Interrupt bei allen Slaves. Somit kann jeder Slave das empfangene

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 63: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

88

Adressbyte daraufhin überprüfen, ob er adressiert wurde. Der adressierte Slavelöscht sein Bit SM2 und trifft Vorbereitungen, um die ankommenden Datenbytesin Empfang zu nehmen. Die nicht adressierten Slaves lassen hingegen ihre BitsSM2 gesetzt und fahren mit der Bearbeitung ihrer Aufgaben fort. AnkommendeDatenbytes werden dabei nicht berücksichtigt.

Abb. 1.28: Serieller Datenverkehr in einem 8051-Multicontroller-System

Die beschriebenen Vorgänge (Abbildung 1.28) lassen sich durch ein Protokoll fürden seriellen Datenverkehr in Multicontroller-Systemen beschreiben:

1. Der serielle Port eines jeden Slaves ist per Hardware bereit, eine Adresse ent-gegenzunehmen. Der Empfang eines Adressblocks ruft einen Interrupt hervor,wenn das Bit SM2 des Slaves auf 1-Signal gesetzt ist (einen nur vom Adress-block ausgelösten Interrupt).

2. Der Master übermittelt dann einen Block, der die 8-Bit-Adresse desjenigen Slavesenthält, der die folgenden Anweisungen und Daten erhalten soll. Bei dem über-mittelten Adressblock ist das 9. Datenbit (TB8) auf 1-Signal gesetzt.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 64: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.5Serielle Schnittstelle

89

3. Nach dem Empfang des Adressblocks bewirkt der serielle Port jedes Slaveseinen Interrupt bei seiner Zentraleinheit. Diese vergleicht die empfangeneAdresse mit der eigenen.

4. Der adressierte, als Slave arbeitende 8051 setzt sein Bit SM2 auf 0-Signal zurückund erhält dadurch alle folgenden Informationen. Sämtliche anderen Slave-Mikrocontroller 8051 belassen ihr Bit SM2 im Zustand 1 und ignorieren somitalle weiteren Informationen, bis eine neue Adresse erscheint.

5. Der Master überträgt nun die Steuerinformationen und Daten, die von dem vor-her adressierten 8051 (der sein Bit SM2 auf null gesetzt hat) aufgenommen wer-den.

In Betriebsart 0 bleibt das Bit SM2 wirkungslos, in Betriebsart 1 kann es zurPrüfung der Gültigkeit des Stoppbits dienen. Ist in Betriebsart 1 beim EmpfangSM2 = 1, so wird der beim Empfang sonst auftretende Interrupt nicht aktiviert,bevor ein gültiges Stoppbit empfangen wurde.

1.5.4 Baudraten (Übertragungsraten)

Die Baudrate in Betriebsart 0 des Ports beträgt:

Die Baudrate in Betriebsart 2 hängt vom Wert des Bits SMOD im speziellen Funk-tionsregister PCON ab. Bei SMOD = 0 (Wert nach dem Rücksetzen) beträgt dieBaudrate 1/64 der Oszillatorfrequenz, bei SMOD = 1 ist sie 1/32 der Oszillatorfre-quenz. Also gilt:

Wird Zeitgeber/Zähler 1 als Generator für die Baudrate verwendet, so sind dieBaudraten bei den Betriebsarten 1 und 3 durch die Überlaufraten dieses Zeitge-bers/Zählers sowie durch den Wert von SMOD wie folgt festgelegt:

Bei dieser Anwendung sollten Interrupts von Zeitgeber/Zähler 1 nicht zugelassensein. Der Zeitgeber/Zähler kann entweder als Zeitgeber oder als Zähler arbeiten,und zwar in jeder der drei Betriebsarten, in denen er laufen kann. Bei den meisten

BaudrateOszillatorfrequenz

Betriebsart 0 12

Baudrate OszillatorfrequenzBetriebsart

SMOD

2

2

64

Baudrate ÜberlaufrateBetriebsarten und

SMOD

1 3232

= ⋅

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 65: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

90

typischen Anwendungen arbeitet er als Zeitgeber mit automatischer Rückladung(oberes Halbbyte von TMOD ist 0010B). In diesem Fall ergibt sich die Baudrate aus:

Man kann mit dem Zeitgeber 1 sehr niedrige Baudraten erreichen, wenn manInterrupts bei diesem Zeitgeber zulässt, ihn so einstellt, dass er als 16-Bit-Zeitge-ber läuft (oberes Halbbyte von TMOD ist 0001B), und ihn somit als Zeitgeber mit16-Bit-Rückladung durch Software verwendet. Die Baudrate beträgt dann:

In Tabelle 1.21 sind einige gebräuchliche Baudraten sowie Möglichkeiten zu ihrerErzeugung unter Verwendung von Zeitgeber 1 angegeben.

1.6 Interrupt-Verarbeitung

Dem Mikrocontroller 8051 sind fünf Interrupt-Quellen zugeordnet, wie aus Abbil-dung 1.29 zu ersehen ist. Jeder der externen Interrupts INT0 und INT1 kann ent-weder pegel- oder flankenaktiviert sein, was von den Bits IT0 und IT1 im RegisterTCON abhängt. Die Kennzeichnungsbits, die diese Interrupts dann auslösen, sind

Baudrate(kBaud)

Betriebsart des seriellen Ports

Oszillator-frequenz (MHz)

SMOD Zeitgeber/Zähler 1

C/T Betriebsart Rückladewert

max. 1000 0 12 X X X X

max. 375 2 12 1 X X X

62,5 1,3 12 1 0 2 FFH

19,2 1,3 11,059 1 0 2 FDH

9,6 1,3 11,059 0 0 2 FDH

4,8 1,3 11,059 0 0 2 FAH

2,4 1,3 11,059 0 0 2 F4H

1,2 1,3 11,059 0 0 2 E8H

0,1375 1,3 11,986 0 0 2 1DH

0,110 1,3 6 0 0 2 72H

0,110 1,3 12 0 0 1 FEEBH

Tabelle 1.21: Häufig verwendete, durch Zeitgeber/Zähler 1 erzeugte Baudraten

BaudrateOszillatorfrequenz

Betriebsarten und

SMOD

1 3

2

32 12 256

-- TH1

BaudrateOszillatorfrequenz

Betriebsarten und

SMOD

1 3

2

32 12 655

336 1 0- ,TH TH

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 66: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.6Interrupt-Verarbeitung

91

IE0 und IE1 in TCON. Sie werden nur dann mittels Hardware beim Anspringender Subroutinen-Adresse gelöscht, wenn der Interrupt flankenaktiviert war. Ist derInterrupt dagegen pegelaktiviert, dann ist es die anfordernde externe Quelle, diedas Kennzeichnungsbit steuert und nicht die Hardware auf dem Chip.

Abb. 1.29: Interrupt-Quellen des 8051

Die Interrupts von Zeitgeber/Zähler 0 und 1 werden durch die Bits TF0 und TF1erzeugt, die durch einen Überlauf in den entsprechenden Registern dieser Zeitge-ber/Zähler gesetzt werden (ausgenommen Zeitgeber/Zähler 0 in Betriebsart 3).Bei einem Zeitgeber/Zähler-Interrupt wird das ihn erzeugende Kennzeichnungs-bit durch die Hardware auf dem Chip gelöscht, sobald die Subroutinen-Adresseangesprungen wurde.

Der Interrupt des seriellen Ports wird durch eine logische ODER-Verknüpfungvon RI und TI hervorgerufen. Keines dieser Kennzeichnungsbits wird durchHardware gelöscht, nachdem die Subroutinen-Adresse angesprungen wurde. Inpraktischen Fällen muss die Subroutine im Allgemeinen darüber entscheiden, obRI oder TI den Interrupt hervorgerufen hat, und das betreffende Bit muss dannmittels Software gelöscht werden.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 67: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

92

1.6.1 Interrupt-Register

Alle Bits, die Interrupts erzeugen, können durch Software gesetzt oder gelöschtwerden, und zwar mit derselben Auswirkung, als ob sie durch Hardware gesetztoder gelöscht worden wären. Dies bedeutet, dass Interrupts mittels Softwareerzeugt oder anstehende Interrupts verhindert werden können.

Jede dieser Interrupt-Quellen kann einzeln durch Setzen oder Löschen eines Bitsim speziellen Funktionsregister IE freigegeben oder nicht freigegeben werden(Tabelle 1.22). Man beachte, dass IE auch ein allgemeines Nicht-Freigabebit (EA)enthält, mit dem alle Interrupts auf einmal gesperrt werden können.

Jeder Interrupt-Quelle kann durch Programmieren eine hohe oder niedrige Priori-tätsstufe zugewiesen werden, indem ein bestimmtes Bit im speziellen Funktions-register IP (Tabelle 1.23) gesetzt oder gelöscht wird. Ein Interrupt niedrigerPriorität kann durch einen Interrupt hoher Priorität unterbrochen werden, abernicht durch einen anderen Interrupt niedriger Priorität. Ein Interrupt hoher Prio-rität kann durch eine andere Interrupt-Quelle nicht unterbrochen werden.

höchst-wertiges

Bit

niedrigst-wertiges

Bit

EA – – ET1 ES EX1 ET0 EX0

Symbol Bit-Speicherstelle Funktion

EA IE.7 kann alle Interrupts sperren. Ist EA = 0, wird kein Inter-rupt zugelassen; ist EA = 1, wird jede Interrupt-Quelle individuell freigegeben oder nicht freigegeben, indem ihr Freigabebit gesetzt bzw. gelöscht wird.

- IE.6 in Reserve

- IE.5 in Reserve

ES IE.4 gibt Interrupts vom seriellen Port frei (ES = 1) oder nicht frei (ES = 0)

ET1 IE.3 gibt Interrupts vom Überlauf des Zeitgebers/Zählers 1 frei (ET1 = 1) oder nicht frei (ET1 = 0)

EX1 IE.2 gibt externe Interrupts von Anschluss INT1 frei (EX1 = 1) oder nicht frei (EX1 = 0)

ET0 IE.1 gibt Interrupts vom Überlauf des Zeitgebers/Zählers 0 frei (ET0 = 1) oder nicht frei (ET0 = 0)

EX0 IE.0 gibt externe Interrupts von Anschluss INT0 frei (EX0 = 1) oder nicht frei (EX0 = 0)

Tabelle 1.22: Interrupt-Freigaberegister (IE)

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 68: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.6Interrupt-Verarbeitung

93

Falls Interrupt-Anforderungen verschiedener Prioritätsstufen gleichzeitig auftre-ten, wird die Interrupt-Anforderung der höheren Prioritätsstufe abgearbeitet.Erscheinen jedoch Interrupt-Anforderungen derselben Prioritätsstufe gleichzeitig,bestimmt ein interner Auswahlprozess, welcher Interrupt abgearbeitet werdensoll. Somit gibt es innerhalb einer Prioritätsstufe eine weitere Prioritätsskala, diedurch den internen Auswahlprozess bestimmt wird und folgende Reihenfolgefestlegt, wie Tabelle 1.24 zeigt.

höchst-wertiges

Bit

niedrigst-wertiges

Bit

- – – PS PT1 PX1 PT0 PX0

Symbol Bit-Speicherstelle Funktion

– IP.7 in Reserve

- IP.6 in Reserve

- IP.5 in Reserve

PS IP.4 bestimmt die Prioritätsstufe des Interrupts des seriellen Ports. PS = 1 bedeutet die höhere Prioritätsstufe.

PT1 IP.3 bestimmt die Prioritätsstufe des Interrupts von Zeitge-ber/Zähler 1. PT1 = 1 bedeutet die höhere Prioritäts-stufe.

PX1 IP.2 bestimmt die Prioritätsstufe des externen Interrupts von Anschluss INT1. PX1 = 1 bedeutet die höhere Prioritäts-stufe.

PT0 IP.1 bestimmt die Prioritätsstufe des Interrupts von Zeitge-ber/Zähler 0. PT0 = 1 bedeutet die höhere Prioritäts-stufe

PX0 IP.0 bestimmt die Prioritätsstufe des externen Interrupts von Anschluss INT0. PX0 = 0 bedeutet die höhere Prioritäts-stufe.

Tabelle 1.23: Interrupt-Prioritätenregister (IP)

Quelle Bit Priorität innerhalb einer Stufe

Externer Interrupt 0 IE0 höchste

Überlauf an Zeitgeber/Zähler 0 TF0

Externer Interrupt 1 IE1

Überlauf an Zeitgeber/Zähler 1 TF1

Serieller Port RI + TI niedrigste

Tabelle 1.24: Reihenfolge der Interrupt-Anforderungen

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 69: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

94

Es sei nochmals betont, dass die angegebene »Priorität innerhalb einer Stufe« nurdann zur Geltung kommt, wenn gleichzeitige Anforderungen derselben Prioritäts-stufe vorliegen.

1.6.2 Prioritäten der Interruptfolge

Die Interrupt-Kennzeichnungsbits werden während eines jeden Maschinenzyklusabgefragt und die Ergebnisse während des nächsten Maschinenzyklus einer Prio-rität zugeordnet. War während des erstgenannten Zyklus eines der Kennzeich-nungsbits gesetzt, so wird dies im zweiten erkannt, und das Interrupt-Systemerzeugt den Befehl LCALL für die entsprechende Subroutinen-Adresse, vorausge-setzt, dass die Abarbeitung des durch Hardware erzeugten Befehls LCALL nichtdurch eine der folgenden Bedingungen gesperrt ist:

1. Ein Interrupt gleicher oder höherer Priorität wird gerade abgearbeitet.

2. Der gegenwärtige, der Zuordnung einer Priorität dienende Maschinenzyklus istnicht der letzte bei der Ausführung des gerade laufenden Befehls.

3. Der gerade auszuführende Befehl ist RETI oder stellt einen Zugriff auf das spe-zielle Funktionsregister IE oder IP dar.

Jede dieser drei Bedingungen blockiert den Befehl LCALL für die Interrupt-Rou-tine. Bedingung 2 stellt sicher, dass der gerade laufende Befehl vollständig abgear-beitet wird, bevor irgendeine Subroutine angesprungen wird. Durch Bedingung 3ist Folgendes gewährleistet: Wenn der gerade auszuführende Befehl RETI ist odereinen Zugriff auf IE oder IP darstellt, wird wenigstens noch ein weiterer Befehlausgeführt, bevor die Durchführung des Interrupts beginnt.

Die Zuordnung zu einer Priorität wird in jedem Maschinenzyklus wiederholt, unddie verglichenen Werte sind diejenigen, die während des vorangegangenenMaschinenzyklus vorhanden waren. Ist ein Interrupt-Kennzeichnungsbit gesetzt,das aber wegen einer der obigen Sperrbedingungen nicht bedient werden kann,und ist es bei Aufhebung der Sperrbedingung nicht mehr gesetzt, so wird derzurückgewiesene Interrupt nicht mehr ausgeführt. Mit anderen Worten: Das Sys-tem erinnert sich nicht daran, dass das Kennzeichnungsbit gesetzt war, aber nichtbedient wurde. Jeder Zyklus, in dem eine Prioritätenzuordnung erfolgt, muss indiesem Sinn für sich betrachtet werden.

Somit akzeptiert der Prozessor eine Interrupt-Anforderung, indem er durch denmittels Hardware erzeugten Befehl LCALL die entsprechende Subroutine aufruft.In einigen Fällen löscht er auch das Kennzeichnungsbit, das den Interrupt ausge-löst hat, in anderen Fällen nicht. Niemals löscht er das Kennzeichnungsbit desseriellen Ports; dies muss durch die Software des Anwenders erfolgen. Die Kenn-zeichnungsbits der externen Interrupts (IE0 und IE1) werden nur dann gelöscht,wenn der Interrupt flankenaktiviert war. Der mittels Hardware erzeugte Befehlveranlasst, dass der Inhalt des Programmzählers in den Stack übernommen wird

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 70: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.6Interrupt-Verarbeitung

95

(rettet jedoch nicht das Programmstatuswort) und lädt den Programmzähler miteiner Adresse, die von der Interrupt-Quelle abhängt, wie Tabelle 1.25 zeigt.

Die Abarbeitung der Subroutine setzt sich von dem angegebenen Speicherplatzaus fort, bis der Befehl RETI auftritt. Dieser informiert den Prozessor darüber,dass die Interrupt-Routine beendet ist, holt dann die zwei oberen Bytes aus demStack und lädt damit den Programmzähler. Die weitere Ausführung des unterbro-chenen Programms erfolgt dann von der Stelle aus, wo es aufgehört hatte.

Man beachte, dass ein einfacher Befehl RET zwar auch die Programmausführungan das unterbrochene Programm zurückgibt, das Interrupt-Steuersystem jedochin der Annahme belässt, dass der Interrupt weiterhin abgearbeitet wird.

1.6.3 Externe Interrupt-Quellen

Externe Quellen können einen Interrupt entweder durch ein 0-Signal oder durcheine negative Flanke von 1 nach 0 (pegelaktivierte oder flankenaktivierte Inter-rupts) auslösen, was durch Programmieren, d.h. durch Setzen oder Löschen vonIT1 oder IT0 im Register TCON, festgelegt wird. Ist ITx = 0, wird ein externerInterrupt x durch Erkennen des 0-Signals am Anschluss INTx eingeleitet, ist dage-gen ITx = 1, erfolgt die Interrupt-Auslösung durch Erkennen einer Flanke desPegels. In diesem Fall wird, wenn aufeinanderfolgende Abfragen von INTx ein1-Signal in einem Zyklus und von einem 0-Signal im nächsten Zyklus ergebenhaben, das Kennzeichnungsbit für externe Interrupt-Anforderungen IEx in TCONgesetzt. Dies löst dann den Interrupt aus.

Da die externen Interrupt-Anschlüsse während eines jeden Maschinenzyklus ein-mal abgefragt werden, sollte ein Eingangssignal (1- oder 0-Signal) wenigstenszwölf Oszillatorperioden am Eingang anliegen, um eine sinnvolle Abfrage zugewährleisten. Wenn daher der externe Interrupt flankenaktiviert ist, muss dieexterne Quelle wenigstens einen Zyklus eines 1-Signals am entsprechendenAnschluss stehen lassen und danach wenigstens einen Zyklus eines 0-Signals,damit die Flanke erkannt und das Kennzeichnungsbit für externe Interrupt-Anfor-derungen IEx gesetzt werden kann. Ex wird durch die Zentraleinheit automatischgelöscht, wenn die Interrupt-Routine aufgerufen ist.

Interrupt-Quelle Startadresse

Externer Interrupt 0 0003H

Überlauf des Zeitgebers/Zählers 0 000BH

Externer Interrupt 1 0013H

Überlauf des Zeitgebers/Zählers 1 001BH

Serieller Port 0023H

Tabelle 1.25: Startadressen für Interrupt-Routinen

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 71: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

96

Ist der externe Interrupt pegelaktiviert, muss die externe Quelle die Anforderungso lange aufrechterhalten, bis der angeforderte Interrupt tatsächlich erzeugt wor-den ist. Danach muss er die Anforderung deaktivieren, bevor die Interrupt-Rou-tine abgearbeitet ist; andernfalls wird ein weiterer Interrupt erzeugt.

Die Pegel an INT0 und INT1 werden invertiert und während eines jeden Maschi-nenzyklus in IE0 bzw. IE1 zwischengespeichert. Bis zum nächsten Maschinen-zyklus erfolgt keine Zuordnung der gefundenen Werte zu Prioritäten durch dieSchaltung. Liegt eine Interrupt-Anforderung vor und lassen die sonstigen Bedin-gungen die Annahme dieser Forderung zu, so ist ein mittels Hardware ausgelösterSubroutinen-Aufruf der gewünschten Interrupt-Routine der nächste auszufüh-rende Befehl. Der Aufruf selbst nimmt zwei Zyklen in Anspruch. Somit vergehenminimal drei vollständige Maschinenzyklen zwischen der Aktivierung einer exter-nen Interrupt-Anforderung und dem Ausführungsbeginn des ersten Befehls derInterrupt-Routine.

Eine längere Ansprechzeit ergibt sich dann, wenn die Interrupt-Anforderungdurch eine Bedingung blockiert ist. Wird gerade ein Interrupt gleicher oder höhe-rer Priorität abgearbeitet, so hängt die zusätzliche Wartezeit von der anderen Inter-rupt-Routine ab. Befindet sich der gerade auszuführende Befehl nicht in seinemletzten Zyklus, so kann trotzdem die zusätzliche Wartezeit nicht mehr als dreiZyklen betragen, da die längsten Befehle (MUL und DIV) nun vier Zyklen langsind. Ist schließlich der gerade auszuführende Befehl RETI oder stellt er einenZugriff auf das spezielle Funktionsregister IE oder IP dar, so kann die zusätzlicheWartezeit nicht mehr als fünf Zyklen betragen (maximal einen weiteren Zyklus,um den laufenden Befehl zu beenden, sowie vier Zyklen für den nächsten Befehl,falls es sich um MUL und DIV handelt).

Somit beträgt die Ansprechzeit in einem System mit einem einzelnen Interruptstets mehr als drei und weniger als acht Zyklen.

1.7 Einzelschrittbetrieb

Die Interrupt-Struktur des 8051 gestattet Einzelschrittbetrieb mit sehr geringemzusätzlichem Softwareaufwand. Wie bereits dargelegt, wird eine Interrupt-Anfor-derung so lange nicht bedient, wie ein Interrupt gleicher oder höherer Prioritätläuft oder bis nach einem Befehl RETI wenigstens ein weiterer Befehl ausgeführtworden ist. Somit kann, sobald eine Interrupt-Routine begonnen hat, sie nichterneut einsetzen, bevor nicht wenigstens ein Befehl des unterbrochenen Pro-gramms ausgeführt wurde. Eine Möglichkeit, diese Tatsache für den Einzelschritt-betrieb zu nutzen, besteht darin, einen der externen Interrupt-Anschlüsse (z.B.INT0) so zu programmieren, dass er pegelaktiviert ist. Die Interrupt-Routine wirddann mit folgender Codierung abgeschlossen:

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 72: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.8Rücksetzen des 8051

97

Wird jetzt der Anschluss INT0 (gleich dem Anschluss P3.2) normalerweise auf0-Signal gehalten, so startet die Zentraleinheit die durch den externen Interrupt0 ausgelöste Routine und bleibt so lange in dieser, bis INT0 gepulst wird (von0- nach 1- und von dort nach 0-Signal). Dann führt die Zentraleinheit den BefehlRETI aus, geht ins Hauptprogramm zurück, führt dort einen einzigen Befehl ausund beginnt sofort erneut mit der Routine des externen Interrupts 0, um auf dennächsten Impuls von P3.2 zu warten. Bei jedem Impuls an P3.2 führt die Zentral-einheit einen Schritt des Hauptprogramms aus.

1.8 Rücksetzen des 8051

Der Anschluss RST stellt den Rücksetzeingang dar und ist Eingang eines Schmitt-Triggers. Ein Rücksetzvorgang lässt sich dadurch erreichen, dass man den An-schluss RST für wenigstens zwei Maschinenzyklen (24 Oszillatorperioden) auf ein1-Signal bringt, während der Oszillator läuft. Die Zentraleinheit reagiert darauf,indem sie einen internen Rücksetzvorgang einleitet, und richtet auch die An-schlüsse ALE und PSEN als Eingänge ein (diese sind bidirektional). Der interneRücksetzvorgang wird während eines zweiten Zyklus ausgeführt, in dem RST ein1-Signal hat, und so lange während eines jeden Zyklus wiederholt, bis RST ein0-Signal annimmt. Nach dem Rücksetzvorgang weisen die Register folgendenInhalt auf, wie Tabelle 1.26 zeigt.

JNB P3.2,$ ;WARTE HIER, BIS INT0 HIGH IST

JB P3.2,$ ;WARTE JETZT HIER, BIS INT0 LOW IST

RETI ;SPRINGE ZURUECK UND FUEHRE EINEN BEFEHL AUS

PC 000H TMOD 00H

ACC 00H TCON 00H

B 00H TH0 00H

PSW 00H TL0 00H

SP 07H TH1 00H

DPTR 0000H TL1 00H

P0...P3 0FFH SCON 00H

IP (XXX00000) SBUF unbestimmt

IE (0XX00000) PCON (0XXX0000)

Tabelle 1.26: Registerinhalt nach Rücksetzvorgang

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 73: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

98

Das interne RAM wird durch einen Rücksetzvorgang nicht berührt. Wenn UCC

eingeschaltet wird, ist der RAM-Inhalt unbestimmt, es sei denn, dass vorher einBetrieb mit reduzierter Leistung erfolgt ist.

Ein automatischer Rücksetzvorgang wird eingeleitet, wenn RST über einen 10-F-Kondensator mit UCC (+5 V) und über einen 8,2-k-Widerstand mit UCC verbun-den wird (Abbildung 1.30). Voraussetzung für die Einleitung des Rücksetzvor-gangs ist jedoch, dass die Anstiegszeit von UCC ca. 1 ms und dass die Zeit für dieInbetriebnahme des Taktgenerators 10 ms nicht überschreitet.

Abb. 1.30: Prinzipschaltung für Rücksetzen durch Einschalten

Wenn die Spannung eingeschaltet wird, beginnt der über RST fließende Stromden Kondensator aufzuladen. Die Spannung an RST ist gleich der Differenz zwi-schen UCC und der Kondensatorspannung. Diese Spannung nimmt von UCC ausab, wenn sich der Kondensator auflädt. Je größer der Kondensator ist, desto lang-samer nimmt die Spannung an RST ab. Diese Spannung muss eine bestimmteMindestzeit oberhalb des unteren Schwellwerts des Schmitt-Triggers bleiben, umeinen vollständigen Rücksetzvorgang herbeizuführen; die erforderliche Mindest-zeit ist gleich der Zeit zur Inbetriebnahme des Taktgenerators plus zwei Maschi-nenzyklen.

1.9 Betriebsarten mit reduzierter Leistungsaufnahme

Bei Anwendungen, bei denen die Leistungsaufnahme einen kritischen Gesichts-punkt darstellt, kann sowohl die NMOS- als auch die CMOS-Version mit reduzier-ter Leistung betrieben werden. Die CMOS-Version (80C51) lässt den Betrieb mitreduzierter Leistung (Idle- und Power-Down-Betriebsart) standardmäßig zu, beider NMOS-Version (8051) ist der Betrieb mit reduzierter Leistung zwar auch mög-lich, aber nicht standardmäßig vorgesehen.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 74: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.9Betriebsarten mit reduzierter Leistungsaufnahme

99

Die Betriebsart mit reduzierter Leistung gestattet es dem Anwender der NMOS-Version, die Betriebsspannung UCC auf 0 V zu reduzieren und dabei den Inhaltdes RAM durch eine Hilfsspannung am Anschluss RST zu retten. Zur Ausnut-zung dieses Vorteils muss das Anwendersystem, sobald es einen bevorstehendenSpannungsausfall erkennt, in irgendeiner Weise einen Interrupt bei dem Mikro-controller anfordern. Hierdurch werden wichtige Betriebsdaten in das RAM aufdem Chip gerettet, und es wird die Spannungsversorgung über den AnschlussRST aufgenommen, bevor UCC unter seinen unteren Grenzwert absinkt. Wenn dieBetriebsspannung wiederkommt, muss die Hilfsspannung noch lange genuganliegen, damit ein Rücksetzvorgang erfolgen kann. Danach wird der normaleBetrieb wieder aufgenommen.

Bei der CMOS-Version gibt es zwei Betriebsarten mit reduzierter Leistung, dieIdle- und die Power-Down-Betriebsart. Der Eingangsanschluss, über den dieStromversorgung bei reduzierter Leistung erfolgt, ist UCC. Abbildung 1.31 zeigt dieinterne Schaltung, mit der diese Eigenschaften erreicht werden. Bei der Idle-Betriebsart (IDL = 1) arbeitet der Taktgenerator weiter, und die Bereiche Interrupt,serieller Port sowie Zeitgeber/Zähler werden weiterhin mit Taktimpulsen ver-sorgt; nur die Zentraleinheit wird vom Takt abgetrennt. Bei der Power-Down-Betriebsart (PD = 1) wird der Taktgenerator stillgelegt. Die Idle- und die Power-Down-Betriebsart werden durch Setzen bestimmter Bits im speziellen Funktions-register PCON aktiviert. Die Adresse dieses Registers ist 87H; die Einzelheiten sindaus Tabelle 1.27 zu ersehen.

Abb. 1.31: Schaltungsaufbau für den Betrieb mit reduzierter Leistung (Idle- und Power-Down-Betriebsart) beim 80C51

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 75: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

100

Ein Befehl, der PCON.0 setzt, ist der letzte vor dem Übergang in die Idle-Betriebsart.

Bei dieser Betriebsart wird der interne Takt von der Zentraleinheit abgetrennt, abernicht die Bereiche Interrupt, Zeitgeber/Zähler und serieller Port. Der Status derZentraleinheit bleibt vollständig erhalten: Stackpointer, Programmzähler, Pro-grammstatuswort, Akkumulator und alle anderen Register behalten ihre Wertewährend der Betriebsart. Die Portanschlüsse behalten die logischen Pegel, die siebei der Aktivierung von Idle hatten. ALE und PSEN nehmen ihre inaktiven Pegel an.

Es gibt zwei Möglichkeiten, den Idle-Betrieb zu beenden. Durch Aktivierung einesbeliebigen zugelassenen Interrupts wird PCON.0 mittels Hardware gelöscht, waszur Beendigung des Idle-Betriebs führt. Der Interrupt wird ausgeführt, und dernächste, auf RETI folgende Befehl folgt dem Befehl des Hauptprogramms, derden Mikrocontroller in die Idle-Betriebsart versetzte.

Mit den Kennzeichnungsbits GF0 und GF1 ist es möglich anzuzeigen, ob einInterrupt während des normalen Betriebs oder während des Idle-Betriebs aufge-treten ist. Zum Beispiel kann ein Befehl, mit dem die Idle-Betriebsart aktiviert

höchst-wertiges

Bit

niedrigst-wertiges

Bit

- – – PS PT1 PX1 PT0 PX0

Symbol Bit-Speicherstelle Funktion

SMOD PCON.7 verdoppelt die Übertragungsrate. Ist SMOD = 1, wird die Übertragungsrate verdoppelt, wenn der serielle Port in den Betriebsarten 1, 2 oder 3 verwendet wird.

PCON.6 in Reserve

PCON.5 in Reserve

PCON.4 in Reserve

GF1 PCON.3 Kennzeichnungsbit für allgemeine Zwecke

GF0 PCON.2 Kennzeichnungsbit für allgemeine Zwecke

PD PCON.1 Bit für Power-Down-Betriebsart, PD = 1*) aktiviert diese Betriebsart (CMOS-Version).

IDL PCON.0 Bit für Idle-Betriebsart. DL = 1*) aktiviert diese Betriebs-art.

Tabelle 1.27: Steuerregister (PCON) für die Leistung*) Sind PD und IDL gleichzeitig auf 1-Signal gesetzt, hat PD Vorrang. Der Rücksetzwert von PCON ist bei der NMOS-Version 0XXXXXXXX, bei der CMOS-Version 0XXX0000.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 76: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.10Speicherorganisation und Adressierungsarten

101

wird, auch eines der beiden Kennzeichnungsbits setzen. Wird der Idle-Betriebdann durch einen Interrupt beendet, kann die Interrupt-Routine die Kennzeich-nungsbits abfragen.

Die andere Möglichkeit zur Beendigung des Idle-Betriebs besteht in einem Rück-setzvorgang mittels Hardware. Da der Taktgenerator weitergearbeitet hat, brauchtder Rücksetzvorgang mittels Hardware nur während zweier Maschinenzyklen (24Oszillatorperioden) aktiv gehalten zu werden, um ihn vollständig ablaufen zulassen.

Wird mit einem Befehl PCON.1 gesetzt, so geht der Mikrocontroller sofort in diePower-Down-Betriebsart über. In dieser Betriebsart wird der Taktgenerator aufdem Chip angehalten, so dass alle funktionalen Abläufe gestoppt werden; dasRAM auf dem Chip sowie die speziellen Funktionsregister behalten jedoch ihreWerte. An den Portanschlüssen stehen die in den entsprechenden speziellenFunktionsregistern enthaltenen Werte zur Verfügung. ALE und PSEN befindensich auf 0-Pegel.

Die einzige Möglichkeit, aus dem Power-Down-Betrieb wieder herauszukommen,besteht in einem Rücksetzvorgang mittels Hardware. Dieser bringt alle speziellenFunktionsregister in einen definierten Anfangszustand, ändert aber den Inhalt desRAM auf dem Chip nicht.

Bei der Power-Down-Betriebsart kann UCC herabgesetzt werden, um die Energie-aufnahme auf ein Minimum zu reduzieren. Es muss jedoch darauf geachtet wer-den, dass UCC mit Sicherheit nicht vermindert wird, bevor der Power-Down-Betrieb aufgenommen ist, und dass UCC seinen normalen Betriebswert wiedererreicht hat, bevor der Power-Down-Betrieb beendet ist. Der Rücksetzvorgang, derden Power-Down-Vorgang abschließt, setzt auch den Taktgeber in Betrieb. DerRücksetzvorgang sollte nicht eingeleitet werden, bevor UCC den normalenBetriebswert wieder erreicht hat, und muss lange genug aktiviert bleiben, um demTaktgeber die Wiederaufnahme und Stabilisierung seines Betriebs zu ermöglichen(im Allgemeinen weniger als 10 ms).

1.10 Speicherorganisation und Adressierungsarten

Die Architektur der Mikrocontroller der Familie 8051 sieht Möglichkeiten vor, dieSpeicherkapazitäten sowohl auf dem Chip als auch außerhalb des Chips zu erwei-tern. Durch verschiedene Adressierungsmechanismen wird ein optimaler Befehls-vorrat erreicht.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 77: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

102

Der 8051 hat im Prinzip folgende Speicher-Adressierbereiche:

� 64-Kbyte-Programmspeicher (extern)

� 4-Kbyte-Programmspeicher (intern)

� 64-Kbyte-Datenspeicher (extern)

� 256-Byte-Datenspeicher (intern)

In Abbildung 1.32 sind die Adressierbereiche übersichtlich dargestellt.

Abb. 1.32: Adressierbereiche des Programm- und Datenspeichers

Der Programmspeicher-Adressierbereich besteht aus einem inneren und einemäußeren Teil. Wird der Anschluss EA auf 1-Signal gehalten, so greift die CPU aufden internen Programmspeicher zu, es sei denn, die Adresse ist höher als 0FFFH.Informationen aus den Speicherplätzen 1000H bis FFFFH werden aus dem exter-nen Programmspeicher geholt. Hält man den Anschluss EA jedoch auf 0-Signal,so holt die CPU alle Befehle aus dem externen Programmspeicher. In jedem Fallerfolgt die Adressierung über den 16-Bit-Programmzähler.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 78: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.10Speicherorganisation und Adressierungsarten

103

Die Speicherplätze 00 bis 23H im Programmspeicher werden für Interrupt-Routi-nen verwendet; die Startadressen sind aus Tabelle 1.17 zu ersehen. Der Datenspei-cher-Adressierbereich besteht aus einem internen und einem externen Teil. Aufden externen Teil wird bei der Ausführung eines MOVX-Befehls zugegriffen. Derinterne Datenspeicher besteht aus zwei getrennten Blöcken: den 128 Bytes desRAM und den 128 Bytes der speziellen Funktionsregister.

Abb. 1.33: Adressierbereich des internen Datenspeichers

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 79: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

104

Abb. 1.34: Adressen der bitadressierbaren Speicherstellen im RAM

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 80: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.10Speicherorganisation und Adressierungsarten

105

Abb. 1.35: Adressen der bitadressierbaren Speicherstellen im speziellen Funktionsregister (SFR)

Abbildung 1.33 zeigt die Gliederung des internen Datenspeicher-Adressierbe-reichs. Vier 8-Registerbänke belegen die Speicherplätze 0 bis 31 im RAM-Bereich.Zu einer bestimmten Zeit kann nur eine dieser vier Bänke in Betrieb sein (überein 2-Bit-Feld im Programmstatuswort). Die nächsten 16 Bytes, die Speicherplätze32 bis 47, enthalten 128 bitadressierbare Speicherstellen, deren Adressen in Abbil-

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 81: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

106

dung 1.34 angegeben sind. Im Bereich des speziellen Funktionsregisters gibt esebenfalls bitadressierbare Speicherstellen, die in Abbildung 1.35 dargestellt sind.

Man beachte, dass das Lesen aus nicht benutzten Speicherplätzen im internenDatenspeicher zu zufälligen Daten führt.

1.11 Boole’scher Prozessor

Der Boole’sche Prozessor stellt einen integrierten Bitprozessor innerhalb des 8051dar. Er hat seinen eigenen Befehlsvorrat, seinen eigenen Akkumulator (das Über-tragsbit) sowie seinen eigenen bitadressierbaren Speicher (RAM) und E/A-Port.

Die Bitverarbeitungsbefehle erlauben folgende Bitoperationen: Setzen; Löschen;Komplementieren; Springen, wenn gesetzt; Springen, wenn nicht gesetzt; Sprin-gen; und dann Löschen sowie Transportieren vom und zum Übertragsbit. Adres-sierbare Bits oder ihre Komplemente können durch eine logische Operation UNDoder ODER mit dem Inhalt des Übertragsbits verknüpft werden und das Ergebniswird zum Übertragsregister zurückgebracht.

1.12 CMOS-Mikrocontroller-Familie AT89C51

Die Eigenschaften und Funktionen von tragbaren Geräten werden ständig verbes-sert. Die Kunden wollen die Leistungsfähigkeit ihrer Produkte erhöhen, was wie-derum eine höhere Rechenleistung erfordert. Gleichzeitig wird ein geringererLeistungsverbrauch angestrebt. Im Mittelpunkt dieser entgegengesetzten Forde-rungen steht der Mikrocontroller – typischerweise einer der größten Leistungsver-braucher in tragbaren Geräten.

Es gibt zwar viele leistungssparende Prozessoren, aber ihre Leistungsfähigkeit istoft eingeschränkt. Die Familie schneller Mikrocontroller von Dallas Semiconduc-tor und Atmel stellt einen guten Kompromiss zwischen Leistungsverbrauch undLeistungsfähigkeit dar. Sie basiert auf der Architektur des 8051 – einer der welt-weit verbreitetsten Mikrocontroller. Die Entwicklungsingenieure wissen seine ein-fache Anwendung, die großzügig ausgelegte Ein-/Ausgangsstruktur und diebreite Akzeptanz zu schätzen. Mittlerweile hat er auch im Bereich der tragbarenProdukte Verbreitung gefunden, wo er in zahlreichen Anwendungen eingesetztwird.

Der wichtigste Faktor bei der Bestimmung des Leistungsverbrauchs in einerSchaltung mit Mikrocontroller ist die Taktfrequenz des Systems. Der Leistungs-verbrauch komplementärer Metalloxidhalbleiterbauelemente (CMOS) ist der Takt-frequenz direkt proportional. Daraus folgt, dass ein Mikrocontroller unter demGesichtspunkt des Leistungsverbrauchs mit der geringstmöglichen Frequenzbetrieben werden sollte.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 82: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.12CMOS-Mikrocontroller-Familie AT89C51

107

Die typische Leistungskurve für einen Mikrocontroller geht von 12 MHz und einerStromaufnahme von ca. 14 mA bis zu 22 mA bei 25 MHz, die allen Entwurfsinge-nieuren für tragbare Systeme bekannt ist. Der Kurve ist zu entnehmen, dass sichdie Stromaufnahme, mit einem DC-Offset, über der Frequenz linear verhält. Die-ser Ruhestrom wird durch die statischen Schaltungsteile auf dem Chip, wie Kom-paratoren, Operationsverstärkern usw., verursacht. Obwohl es sich dabei um einenrelativ geringen Strom (< 1 mA) handelt, stellt er doch eine konstante Belastungdar, die nicht vernachlässigt werden sollte.

Jede Schaltung, die für einen geringen Leistungsverbrauch ausgelegt ist, wird mitder geringstmöglichen Frequenz arbeiten. Die Festlegung der minimalen System-frequenz und damit des minimalen Leistungsverbrauchs hängt von mehrerenFaktoren ab, einschließlich des gewünschten Leistungsverhaltens und der Inter-rupt-Latenz. Unabhängig von den Kriterien bleibt das Ziel jedoch bestehen: diemöglichst genaue Anpassung der Betriebsfrequenz des Bausteins an die Leis-tungsanforderungen der Anwendung.

1.12.1 Schneller CPU-Kern im AT89C51

Das direkte Verfahren zur Reduzierung des Leistungsverbrauchs einer Schaltungmit dem 8051 ist die Erhöhung der Rechenleistung des Mikrocontrollers. DieGrundversion des 8051 basierte auf der 12-Takt-Architektur mit zwei Abrufen proLesezyklus. Die Familie schneller Mikrocontroller arbeitet jedoch mit einem Kernmit vier Takten oder einem Takt pro Lesezyklus. Dies ist rechnerisch effizienterund erfordert weniger Taktzyklen zur Ausführung eines Befehls. Daraus ergebensich kürzere Ausführungszeiten und höhere maximale Taktfrequenzen.

Gewöhnlich werden die Vorteile eines schnellen Kerns hinsichtlich des Leistungs-verhaltens betrachtet, sie wirken sich jedoch auch erheblich auf den Leistungsver-brauch aus. Wird die Befehlsausführung des Prozessors optimiert, wird wenigerZeit für die gleiche Aufgabe benötigt. Viele tragbare Produkte arbeiten im Stoßmo-dus, das heißt, auf kurze Aktivitätsperioden folgen längere Perioden der Inaktivi-tät, wie z.B. bei der Aufzeichnung von Umweltdaten oder beim Lesen einesStrichcodes. Durch die Reduzierung der Aktivitätszeit des Mikrocontrollers wirdeine entsprechende Reduzierung des Energieverbrauchs erreicht.

Eine weitere Folge aus dem verbesserten Wirkungsgrad ist, dass sich das gleicheLeistungsverhalten bei reduzierter Taktfrequenz erreichen lässt. Arbeitet ein ver-änderter Kern mit vier anstatt zwölf Takten pro Zyklus, heißt das, dass der gleicheLeistungsumfang bei reduzierter Taktfrequenz bewältigt wird. Da der Leistungs-verbrauch der Taktfrequenz direkt proportional ist, lässt er sich auf diese Art ohneBeeinträchtigung des Leistungsverhaltens reduzieren.

Vergleicht man den Leistungsverbrauch von drei Mikrocontrollern, die die gleicheAufgabe mit dem gleichen Leistungsverhalten ausführen, erkennt man die Unter-

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 83: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

108

schiede. Zwei Mikrocontroller sind vom Standardbaustein 8051 abgeleitet undarbeiten mit zwölf extern erzeugten Takten pro Abrufzyklus, während es sich beimdritten um einen Mikrocontroller AT89C51 handelt, der mit vier Takten pro Abruf-zyklus arbeitet. Für alle Bausteine wurde der Stromverbrauch gemessen und ver-glichen, wobei für den AT89C51 für die Verbesserung des Leistungsverhaltens einkonservativer Wert von 250 % angenommen wurde. Wie aus der Praxis bekanntist, ergibt sich bei dem Kern mit reduzierten Taktperioden pro Maschinenzykluseine erhebliche Stromreduzierung bei gleichem Durchsatz, besonders bei höhe-ren Leistungsdaten.

Ein weiteres Verfahren zur Leistungseinsparung ist die Integration periphererFunktionen auf dem Chip. Beim Treiben eines Signals außerhalb des Chips mussder signalerzeugende Schaltkreis die zum Treiben der externen Lasten erforderli-che Schaltleistung aufbringen und die DC-Verluste ausgleichen. Unter Schaltleis-tung (PSW) ist die bei einer Signaländerung verbrauchte Leistung zu verstehen. Siewird näherungsweise wie folgt errechnet:

Dabei ist C die Gesamtkapazität des Empfangsgatters des Eingangspuffers undder Verbindung zwischen den beiden Gates, und der Wert T ist die Taktperiode desSignals. Eine typische Eingangskapazität eines CMOS-Eingangs ist 10 pF. DieErmittlung des genauen Werts der Schaltleistung eines Systems ist zwar schwie-rig, aber es liegt auf der Hand, dass jede zusätzliche externe Last oder jederAnschluss, den der Mikrocontroller zu treiben hat, zusätzliche Leistung ver-braucht.

Systeme auf Mikrocontrollerbasis arbeiten normalerweise mit mehreren periphe-ren Schaltkreisen. Diese reichen von externen UARTs und Einschalt-Resets bis zuWatchdog-Timern. Einer der Vorteile der Produktfamilie AT89C51 besteht in dergroßen Anzahl der auf dem Chip integrierten peripheren Funktionen. Neben derVereinfachung der Schaltung durch Eliminierung von Bauteilen können inte-grierte periphere Funktionen auch den Leistungsverbrauch reduzieren. ImGrunde kann man annehmen, dass die Kernfunktionen jedes peripheren Schalt-kreises, sei er im Prozessor integriert oder nicht, die gleiche Leistung verbrau-chen. Durch die Integration auf dem Chip werden jedoch die beim Treiben einesexternen Busses auftretenden Schaltleistungsverluste eliminiert.

1.12.2 Interner Programmspeicher und interner Datenspeicher

Eine weitere Funktion des 8051, die üblicherweise nicht als peripher betrachtetwird, ist der Programmspeicher. Alle Bausteine der Familie 8051 und AT89C51enthalten einen chipintegrierten Programmspeicher unterschiedlicher Kapazität.

P C U

TSW 2

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 84: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.12CMOS-Mikrocontroller-Familie AT89C51

109

Dies wird von vielen Anwendern gewünscht, um die Anzahl der Bauteile und denPlatzbedarf zu reduzieren, es verlängert aber auch die Batterielebensdauer in trag-baren Systemen. Wie bereits erwähnt, wird der Leistungsverbrauch hier reduziert,da kein externer Bus zu treiben ist. Ein auf dem Chip integrierter Speicher ergibtnoch eine weitere Leistungseinsparung. Die 8051-Architektur erfordert den Ein-satz eines Registers des Typs 74373 für das Demultiplexen des niederwertigenAdressbytes. Ein Vergleich zwischen dem Einsatz eines internen und eines exter-nen Programmspeichers ergibt eine Stromreduzierung von 45 mA bei 12 MHz auf16 mA. Beim ersten System wird ein schneller Mikrocontroller des Typs AT89C51mit einem Register 74AC573 und einem EPROM 27C256 mit einer Zugriffszeitvon 70 ns verwendet. Das zweite System benutzt den gleichen Mikrocontroller,arbeitet aber mit internem Speicher. Beide Systeme arbeiten mit 11,0592 MHzund führen ein kurzes Programm aus. Aus dem Versuch geht hervor, dass beihohen Frequenzen durch Eliminierung des externen EPROM und des Registersbis zu 49 mA eingespart werden können.

Wie bereits erwähnt, wird durch einen chipintegrierten Speicher anstelle einesexternen RAM Leistung gespart. Der erweiterte Scratchpad-Speicher der Baustein-familie 80C32 (256 Bytes) reicht als Stack- und Datenspeicher in kleinen Program-men aus, wodurch ein externes RAM entfallen kann.

Für Entwicklungen, die einen größeren Datenspeicher oder einen externen Stackerfordern, kann jedoch ein zusätzlicher SRAM-Speicher notwendig werden. Leis-tungssparende SRAMs sind zwar verfügbar, aber es entstehen zusätzliche Leis-tungsverluste durch das 74373-Register und die kapazitiven Verluste beim Treibendes externen Busses. Dies lässt sich durch den Einsatz von Bausteinen mit erwei-tertem auf dem Chip integrierten RAM vermeiden. Es soll der Leistungsverbrauchvon zwei Systemen, bei denen das SRAM in den MOVX-Datenspeicher des 8051aufgenommen wurde, untersucht werden. Das erste System benutzt einen schnel-len Mikrocontroller des Typs AT89C51 mit einem 74AC573-Register und einem8-Kbyte-SRAM. Das zweite System benutzt den gleichen Mikrocontroller, aber1 Kbyte des internen MOVX-Datenspeichers. Beide Mikrocontroller arbeiten mit11,0592 MHz und führen ein kurzes Programm aus, das Lese- und Schreibopera-tionen im MOVX-Datenspeicherbereich vornimmt. Man kann feststellen, dass beihohen Frequenzen durch Eliminierung des externen SRAM und des Registers biszu 9 mA gespart werden können.

1.12.3 Taktquelle

Eine weitere wichtige Systemkomponente hinsichtlich des Leistungsverbrauchsist die Taktquelle. Standardschaltungen mit dem 8051 benutzen üblicherweise ent-weder einen externen Quarz mit einem internen Oszillatorverstärker oder einenexternen Quarzoszillator. Im letzteren Fall kann die Wellenform des Taktgebersden Leistungsverbrauch beeinflussen. Die Eingangsstufe des XTAL1-Anschlusses,

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 85: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

110

der die externen Taktsignale für den 8051 aufnimmt, arbeitet normalerweise mitkomplementären Treiberstufen. Während der Übergänge des Eingangstaktgeberszwischen H-Pegel und L-Pegel werden kurzzeitig beide Treiber eingeschaltet, waseinen erheblichen Stromstoß verursacht. Bei einem Rechtecksignal finden dieÜbergänge praktisch sofort statt, was die Zeit des gleichzeitigen Ein-Zustands bei-der Treiber minimiert. Bei einer Signalform mit langsameren Übergängen, wiez.B. einem Sinus- oder Dreiecksignal, sind die Treiber für längere Zeit gleichzeitigeingeschaltet. Dies erhöht den Strom- und Leistungsverbrauch.

Als Taktquelle wurde ein programmierbarer Signalgenerator für Sinus-, Dreieck-und Rechtecksignale benutzt. Es wurde der Mittelwert von vier Bausteinen mitnormaler und hoher Geschwindigkeit dargestellt. Der Vergleich zeigt, dass derStromverbrauch der Anstiegs- und Abfallzeit der Taktwellenform direkt proportio-nal ist. Das Dreiecksignal hat die längste Flanke und das Rechtecksignal diehöchste. Für das Rechtecksignal ergibt sich ein um 0,75 mA geringerer mittlererStrom als für das Dreiecksignal. Daraus folgt, dass der Stromverbrauch bei Schal-tungen mit externem Taktgeber durch den Einsatz von Oszillatoren mit kurzenAnstiegs- und Abfallzeiten reduziert werden kann. Bei geringeren Frequenzen, wodie Übergänge mehr Zeit benötigen, ist dies von noch größerer Bedeutung.

Einige 8051-Derivate enthalten einen chipintegrierten Ringoszillator. Dabei han-delt es sich üblicherweise um hintereinander geschaltete Inverter, die ein Pulssig-nal durch die Schleife propagieren lassen. Dafür steht eine interne Taktquelle vonca. 2 MHz bis 4 MHz zur Ansteuerung des Bausteins zur Verfügung. Da hier keinQuarz erforderlich ist, ist diese Taktquelle äußerst leistungssparend. Die Bewer-tung eines schnellen Mikrocontrollers AT89C51 zeigt, dass beim Betrieb miteinem Ringoszillator ein Leistungsverhalten erreicht wird, das einem 7-MHz-8051bei ca. 3,6 mA entspricht. Obwohl sie nicht die Stabilität eines piezoelektrischenQuarzes aufweisen, sind Ringoszillatoren aufgrund ihres geringen Leistungsver-brauchs und der vernachlässigbaren Einschaltverzögerung ein wichtiger Faktorbei der Leistungseinsparung.

Wie oben erläutert, ist die Betriebsfrequenz des Mikrocontrollers der bestim-mende Faktor für seinen Leistungsverbrauch. Die Taktfrequenz des Systems istzwar hauptsächlich eine Hardwarefunktion, aber der 8051 besitzt die Fähigkeit,sie in bestimmten Grenzen zu steuern. Diese Methoden verlangsamen dieBetriebsfrequenz des Bausteins oder halten sie für den ganzen Baustein oder fürTeilschaltung an. Die herkömmliche 8051-Architektur benutzt zwei Modi zurTaktsteuerung: Leerlauf und Stopp.

Der Stoppmodus ist der Zustand mit dem niedrigsten Leistungsverbrauch für den8051. Dabei wird der interne Oszillatorverstärker und damit auch der Betrieb desBausteins angehalten. Die Aufhebung des Stoppmodus geschieht normalerweisedurch einen externen Reset. Bei einigen Versionen ist die Aufhebung des Stopp-modus auch durch externe Interrupts möglich.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 86: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.12CMOS-Mikrocontroller-Familie AT89C51

111

Einer der Nachteile des Stoppmodus besteht im Leistungsverbrauch während der»Totzeit«, d.h. der Anlaufperiode des Quarzes. Ein Quarzoszillator basiert auf denSchwingungen eines Quarzes. Aufgrund physikalischer Eigenschaften benötigtdie Quarzschwingung eine bestimmte Zeit, um eine für den Betrieb genügendeAmplitude zu erreichen. Diese Anlaufzeit ist immer erforderlich, unabhängigdavon, ob ein externer Quarz und ein interner Oszillatorverstärker oder ein exter-ner Quarzoszillator verwendet wird. Sie kann, abhängig von den Eigenschaftendes Quarzes und des dazugehörigen Verstärkers, 3 ms bis 12 ms betragen.

Diese Anlaufzeit wirkt sich so aus, dass der Baustein Leistung verbraucht, auchwenn er während dieser Zeit seine eigentliche Funktion nicht ausführt. Geht derBaustein häufig in den Stoppmodus oder verlässt diesen, um kurzzeitig andereAufgaben auszuführen, kann dies Bedeutung erlangen. Ist die andere Aufgabesehr kurz (<5 ms), kann der Quarz während der Anlaufperiode mehr Leistungverbrauchen als während der Ausführung der Aufgabe selbst. Wird mittels einesRingoszillators ein »Schnellstart« vom Stoppmodus ausgeführt, kann diese Verzö-gerung eliminiert werden. Damit wird der Leistungsverbrauch beim Verlassen desStoppmodus erheblich reduziert.

Vergleicht man den Betrieb zweier Systeme, die den Stoppmodus verlassen, umeine kurze Aufgabe auszuführen, gibt es zwei Möglichkeiten: Der zweite Bausteinenthält einen internen Ringoszillator, während der erste mit einem herkömmli-chen externen Quarz arbeitet. Bei diesem Baustein tritt die Anlaufperiode desQuarzes auf. Während dieser Zeit verbraucht der Baustein weiterhin Leistung,führt aber keine eigentliche Funktion aus. Beim zweiten Baustein handelt es sichum einen schnellen Mikrocontroller des Typs AT89C51 mit einem internen Ring-oszillator. Damit kann der Baustein sofort nach dem Verlassen des Stoppmodusden Betrieb aufnehmen. In diesem Beispiel dauert die auszuführende Routineweniger als 4 ms bei einer Frequenz von ca. 2 MHz. Der Leistungsverbrauch kannbeim Verlassen des Stoppmodus zur Ausführung kurzer Aufgaben durch den Ein-satz eines Ringoszillators erheblich reduziert werden.

In einigen Anwendungen kann die Stabilität eines Quarzoszillators erst einekurze Zeit nach dem Verlassen des Stoppmodus gefordert sein. Auch in diesemFall bietet der Ringoszillator einen Vorteil. Sofort nach dem Verlassen des Stopp-modus sollte der Baustein den Quarzoszillator starten. Der Baustein kann dann,während der Quarz anläuft, erforderliche Daten oder Register initialisieren. Diemeisten schnellen Mikrocontroller arbeiten mit einem Statusbit, das anzeigt, obder Quarz sich stabilisiert hat oder nicht. Ist die Initialisierungsroutine für denQuarzoszillator abgelaufen, kann die Software das Statusbit abfragen und so fest-stellen, ob der Betrieb mit der genauen Taktfrequenz aufgenommen werden kann.

Ein weiteres Verfahren zur Reduzierung des Leistungsverbrauchs im Stoppmodusist, statt eines Resets einen Interrupt zum Verlassen des Stoppmodus zu benut-zen. Dies gibt dem Prozessor die Möglichkeit, den Betrieb sofort mit dem Befehl

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 87: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

112

aufzunehmen, der auf das Setzen des Stoppbits folgt, anstatt vom Reset-Vektorneu zu starten. Dadurch braucht die Reset-Quelle nicht ermittelt zu werden, undder Prozessor kann seine Funktion in kürzerer Zeit aufnehmen.

Der zweite Modus zur Taktsteuerung in der Architektur der Grundversion des8051 ist der »Idle-Mode« (Leerlaufmodus).

Dabei wird der Betrieb der CPU angehalten, während die chipinternen Timer inBetrieb bleiben. In einer Anwendung, wo Leistungseinsparungen wichtig sind,dienen diese Timer dazu, den Baustein periodisch hochzufahren, um eine Auf-gabe auszuführen oder abzufragen, ob dies erforderlich ist. Da die Standard-Timerdes 8051 nur über 16 Bit verfügen, gestattet dies eine maximale Timeout-Periodevon 31 ms bei einer Taktfrequenz von 16 MHz. Werden längere Perioden benötigt,sind mehrere Timer-Überläufe erforderlich. Dadurch wird zusätzliche Leistungverbraucht, da der Baustein ab und zu den vollen Betrieb aufnehmen muss, umeinen Zähler weiterzustellen, dabei aber keine eigentliche Funktion ausführt.

Sind längere Perioden erforderlich, ist ein interner Timer mit einer längeren Peri-ode einzusetzen. Einige Versionen der Familie 8051 enthalten einen Watchdog-Timer, der auch benutzt werden kann, um den Baustein aufzuwecken. Watchdog-Timer lassen sich für lange Timeout-Perioden (etwa bis zu 226 Taktzyklen) pro-grammieren. Damit lässt sich eine maximale Timeout-Periode von 4,2 Sekundenbei 16 MHz erreichen. Nehmen wir beispielsweise an, dass eine Anwendung alledrei Sekunden aus einem leistungssparenden Zustand hochzufahren ist, um eineAufgabe (Task) auszuführen. Werden dazu die internen Timer benutzt, müsste derBaustein 96-mal den »Idle-Mode« verlassen, ohne eine eigentliche Funktion aus-zuführen. Wird jedoch ein Watchdog-Timer mit einer langen Timeout-Periode ver-wendet, verlässt der Baustein den »Idle-Mode« nur einmal, führt die Aufgabe ausund kehrt in den leistungssparenden Zustand zurück.

Eine weitere Möglichkeit besteht im Einsatz eines Mikrocontrollers mit einer Real-Time Clock (RTC). Der schnelle Mikrocontroller AT89C51 enthält eine RTC, dieeine Alarmperiode von bis zu 24 Stunden erzeugen kann. Der durch diesen Alarmerzeugte interne Interrupt kann den Baustein aus dem Idle-Mode oder aus demStoppmodus hochfahren. Die Verwendung einer RTC zum Verlassen des Stopp-modus ist das effizienteste Verfahren zum Anhalten des Betriebs des Bausteinsfür längere Zeit.

1.12.4 Power-Management-Betriebsarten

Obwohl der »Idle-Mode« den Leistungsverbrauch durch Anhalten der Programm-ausführung reduziert, arbeiten die internen Timer weiter mit der externen Taktfre-quenz. Unter dem Gesichtspunkt, dass die Timer sich in einem Standby-Zustandbefinden, entsteht dadurch ein erheblicher Leistungsverbrauch.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 88: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.12CMOS-Mikrocontroller-Familie AT89C51

113

Eine bessere Lösung ist die Reduzierung der Taktfrequenz des gesamten Bau-steins. Dies kann mittels eines internen Frequenzteilers geschehen, der die externeTaktfrequenz teilt, bevor sie auf die CPU gegeben wird. Dieses Prinzip wird imschnellen Mikrocontroller AT89C51 angewandt. Dieser Baustein arbeitet mit zweiFrequenzteilerfunktionen: Power-Management-Modus 1, der die Takteingangs-quelle durch 64 teilt, und Power-Management-Modus 2, der die Takteingangs-quelle durch 1024 teilt. Diese Modi werden durch Setzen der entsprechenden Bitsin einem speziellen Funktionsregister (SFR) aktiviert.

Ein Vergleich zwischen dem Taktteiler und den Steuermodi des schnellen Mikro-controllers AT89C51 mit dem 8051 zeigt, dass der Stromverbrauch bei maximalerFrequenz (geteilt durch 4), im Power-Management-Modus 1 (geteilt durch 64), imPower-Management-Modus 2 (geteilt durch 1024), im »Idle-Mode« und im Stopp-modus sinkt. Wie erwartet, wird im Stoppmodus der geringste Strom aufgenom-men, da hier der gesamte interne Takt angehalten wird. Ein interessantes Ergebnisdieses Vergleichs ist, dass die beiden Power-Management-Modi weniger Stromverbrauchen als der »Idle-Mode«. Damit kann der Baustein nicht nur Leistungsparen, sondern er kann auch kontinuierlich mit reduzierten Funktionen weiter-laufen. Bei der herkömmlichen Architektur des 8051 gab es bei jeglicher CPU-Aktivität nur »alles oder nichts«. Der Baustein musste in jedem Fall mit der maxi-malen Leistungsfähigkeit arbeiten, selbst wenn dies nur für kurze Perioden erfor-derlich war. Dadurch wurde der Leistungsverbrauch unnötig erhöht. Durch dieAnwendung der Power-Management-Modi (PMM) kann der Baustein (und dasSystem) seinen Leistungsverbrauch an die benötigte Rechenleistung anpassen.

Eine mögliche Folge des Einsatzes eines internen Frequenzteilers ist eine beträcht-liche Erhöhung der Interrupt-Latenzen. Darüber hinaus würde das Verlangsamender internen Timer die Fähigkeit der seriellen Ports des 8051 beeinträchtigen, dieStandard-Baudrate zu erzeugen oder mit dieser zu synchronisieren. Dies könntewiederum die Reaktion des Bausteins auf externe Signale behindern. Eine Lösungdafür ist der Einbau einer Funktion, die den Baustein automatisch auf den vollenBetrieb hochfährt, wenn ein externer Interrupt oder die Aktivität eines seriellenPorts festgestellt wird. Ein solcher Mechanismus wurde in den AT89C51 implemen-tiert. Es handelt sich dabei um die »Switchback«- Funktion, mit deren Hilfe der Bau-stein rasch auf externe Interrupts reagiert. Sofort nach der Bestätigung desInterrupts schaltet der Baustein ohne Softwareeingriff automatisch auf die volleFrequenz (geteilt durch 4) zurück.

Die seriellen Schnittstellen arbeiten auf ähnliche Weise. Wenn eine fallendeFlanke (Startbit) am Empfangseingang der seriellen Schnittstelle ankommt, schal-tet der Baustein automatisch auf die volle Frequenz (geteilt durch 4) zurück. Dadies direkt am Anfang der Übertragung erfolgt, kann der Baustein den Rest derÜbertragung mit der vollen Frequenz empfangen. Bei der herkömmlichen 8051-Architektur konnten die seriellen Ports in einer leistungssparenden Konfiguration

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 89: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

114

lediglich im »Idle-Mode« benutzt werden. Die Power-Management-Modi bietenhier eine leistungssparende Alternative.

In leistungssparenden Systemen ist es üblich, das System vom Stoppmodus auf-zuwecken, bestimmte Aktivitäten auszuführen und dann zum Stoppmoduszurückzukehren. Eine Möglichkeit, den Leistungsverbrauch in derartigen Syste-men zu reduzieren, ist die Erhöhung der Betriebsfrequenz. Auf den ersten Blickscheint dies unserem Ziel entgegenzustehen. Während seiner Betriebszeit ver-braucht der Baustein mehr Leistung als ein mit niedrigerer Frequenz arbeitendesSystem. Der beim Betrieb des Systems verbrauchte Ruhestrom hängt jedoch nichtvon der Frequenz ab. Beim endgültigen Systementwurf wird der Energiever-brauch üblicherweise eingeschätzt, um die Batterielebensdauer zu bestimmen.Diese Unterscheidung ist bei der Bewertung eines leistungsfähigen Mikrocontrol-lers zu beachten, da dieser das Konzept von Zeit und Betriebsleistungsverbrauchvereint. Ist das Produkt aus Leistungsverbrauch und Zeit für ein bestimmtes Sys-tem kleiner, verbraucht dieses, unabhängig von den speziellen Bedingungen,weniger Energie. In vielen Fällen lässt sich nachweisen, dass ein schneller Mikro-controller den Energieverbrauch reduzieren kann, indem er für kurze Periodenmit hoher Frequenz arbeitet, anstatt für längere Zeit langsamer zu laufen.

Nehmen wir an, dass der AT89C51 nach dem Hochfahren aus dem Stoppmoduseinen I/O-Port lesen, eine mathematische Berechnung ausführen, das Ergebnis aneinem anderen Port ausgeben muss und dass dies 500 Operationszyklen CPU-Zeit erfordert. Gemäß dem Vergleich beträgt der Stromverbrauch 12,4 mA bei10 MHz bzw. 34,6 mA bei 30 MHz. Aus einem Vergleich geht hervor, dass beimBetrieb mit 30 MHz 6 % weniger Energie verbraucht wird, also erweist sich einehöhere Betriebsfrequenz hier als effizienter.

Bei vielen Anwendungen hängt die Hochfahrzeit aus dem Stoppmodus nicht nurvon der Geschwindigkeit ab. Oftmals muss der Baustein auf einen peripherenSchaltkreis mit einer festen Antwortzeit, wie z.B. einen A/D-Wandler oder einenThermostat, zugreifen. In diesem Fall ist der Mikrocontroller mit einer intensivenAktivität (Burst Activity) beschäftigt, normalerweise um einen Prozess zu initiali-sieren, worauf eine Periode geringer oder sogar keiner Aktivität folgt. Für einensolchen Fall kann eine Kombination verschiedener Leistungssparverfahren geeig-net sein.

Die Mikrocontroller der Familie 8051 gehören nach wie vor zu den weltweit verbrei-tetsten Prozessoren. Mit ihrem unkomplizierten Einsatz und der relativ hohenLeistungsfähigkeit eignen sie sich ideal für viele Anwendungen, einschließlich trag-barer und Handgeräte. Mit der Einführung schneller Mikrocontroller von DallasSemiconductor und Atmel ergibt sich die Möglichkeit, den Leistungsverbrauch exis-tierender 8051-Schaltungen ohne kostenaufwendige Neuentwürfe zu reduzieren.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 90: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.13Programmierung des 8751

115

Die Vorteile von leistungssparenden Mikrocontrollern lassen sich folgenderma-ßen zusammenfassen: Eine leistungsfähige CPU erlaubt eine Verringerung derProzessorfrequenz, wodurch die gleichen Leistungsmerkmale bei reduziertemLeistungsverbrauch erreicht werden. Andererseits lässt sich die Prozessorleistungeines existierenden Systems verbessern, ohne den Leistungsverbrauch zu erhö-hen.

Bei dem schnellen Mikrocontroller sind Funktionen wie Watchdog-Timer, zusätz-liche UARTs und genaue Reset-Schaltkreise integriert. Externe Schaltkreise ver-brauchen mehr Leistung.

Die Einführung von zwei neuen leistungssparenden Modi bietet eine bessereAlternative zum Idle Mode. Neben der Reduzierung des Stromverbrauchs ermög-lichen Power-Management-Modi, wie sie im AT89C51 Anwendung finden, demProzessor auch im leistungssparenden Modus die Ausführung bestimmter Funk-tionen, wie z.B. der Abfrage (Polling). Bei herkömmlichen 8051-Architekturenmuss der Prozessor immer mit der maximalen Betriebsfrequenz arbeiten, selbstwenn nur eine minimale Verarbeitungsleistung benötigt wird.

Durch die Kombination der Vorteile einer programmierbaren Taktfrequenz undeines leistungsfähigen Kerns mit dem Stoppmodus kann eine beträchtliche Leis-tungseinsparung erreicht werden. Es wurden Beispiele dafür gezeigt, wie der Leis-tungsverbrauch durch Anpassung der Taktfrequenz an die gewünschte Prozessor-leistung reduziert werden kann.

1.13 Programmierung des 8751

Die Programmierung des AT89C51 basiert im Wesentlichen auf dem Mikrocon-troller 8751, der zur Programmspeicherung ein EPROM verwendet. Im AT89C51wird dagegen ein EEPROM oder Flash-EPROM verwendet.

1.13.1 Programmierung des EPROM im 8751

Der Mikrocontroller 8751 ist die EPROM-Schaltung der Mikrocontroller-Familie8051. Der Programmspeicher auf dem Chip kann also elektrisch programmiertund durch UV-Licht wieder gelöscht werden. Außerdem sind beim 8751 Vorkeh-rungen getroffen, die einen Zugriff auf den Inhalt des Programmspeichers vonaußen verhindern können, so dass die Software gegen unberechtigte Verwendunggeschützt ist.

Bei der Programmierung muss der Mikrocontroller mit einer Oszillatorfrequenzvon 4 MHz bis 6 MHz arbeiten. Der Oszillator muss deshalb in Betrieb sein, weilder interne Bus Adressen und Daten in die zuständigen Register transportierensoll. Die Adresse des zu programmierenden EPROM-Speicherplatzes wird an Port 1

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 91: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

116

und die Anschlüsse P2.0 bis P2.3 an Port 2 gelegt, während das Datenbyte an Port0 gelegt werden muss. Die Anschlüsse P2.4 bis P2.6 sowie PSEN sollten auf L-Pegel und die Anschlüsse P2.7 und RST auf H-Pegel gehalten werden. Hierbeihandelt es sich um TTL-Pegel, ausgenommen RST, das 2,5 V für einen H-Pegelerfordert. EA/Upp wird normalerweise auf H-Pegel gehalten und mit ±21 Vgepulst. Während an EA/Upp 21 V liegen, wird der Anschluss ALE/PROG, der sichnormalerweise auf H-Pegel befindet, für 50 ms auf L-Pegel gepulst und danachEA/Upp wieder auf H-Pegel gelegt. Abbildung 1.36 zeigt die Funktion derAnschlüsse bei der Programmierung des 8751.

Abb. 1.36: Programmierung des 8751

Man beachte, dass am Anschluss EA/Upp zu keinem Zeitpunkt eine höhere Span-nung als der angegebene Grenzwert Upp = 21,5 V liegen darf. Selbst ein schmalerStörimpuls oberhalb dieses Spannungspegels kann zu dauerhafter Beschädigungdes Mikrocontrollers führen. Die Spannung Upp sollte geregelt und frei von Stör-impulsen sein.

Wenn das Programmsicherheitsbit nicht gesetzt ist, lässt sich der auf dem Chipbefindliche Programmspeicher für Prüfzwecke lesen, und zwar auf Wunsch ent-weder während oder nach der Programmierung. In Abbildung 1.37 ist die hierfürerforderliche Beschaltung des 8751 angegeben. Sie ist dieselbe wie bei der Pro-grammierung, ausgenommen, dass Anschluss P2.7 auf dem L-Pegel liegen mussoder als Lese-Strobe-Eingang (aktiver Zustand L-Pegel) verwendet wird.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 92: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.13Programmierung des 8751

117

Abb. 1.37: Programmüberprüfung beim 8751

Die Adresse des zu lesenden Programmspeicherplatzes wird an Port 1 und dieAnschlüsse P2.0 bis P2.3 gelegt. Die anderen Anschlüsse von Port 2 und PSENwerden auf L-Pegel gehalten, ALE, EA und RST sind auf H-Pegel zu halten. DerInhalt des adressierten Speicherplatzes erscheint an Port 0. Für diese Operationsind externe Pull-up-Widerstände an Port 0 erforderlich.

1.13.2 Programmsicherung

Der 8751 enthält ein Sicherheitsbit, das, sobald es gesetzt ist, jeglichen externenelektrischen Zugriff zum Programmspeicher auf dem Chip verhindert. DieBeschaltung und die Programmierung mit dem Sicherheitsbit sind dieselben wiebei der normalen Programmierung, ausgenommen, dass Anschluss P2.6 auf demH-Pegel gehalten wird. Abbildung 1.38 zeigt die Beschaltung. An den Anschlüssenvon Port 0, Port 1 und P2.0 bis P2.3 von Port 2 kann jeder Pegel liegen.

Sobald das Sicherheitsbit gesetzt ist, lässt es sich nur durch die vollständigeLöschung des Programmspeichers deaktivieren. Solange es gesetzt ist, kann derinterne Programmspeicher nicht gelesen werden, die Schaltung kann nicht weiterprogrammiert werden, und sie kann nicht auf externe Programmspeicher zugrei-fen. Durch Löschung des EPROM und die damit verbundene Deaktivierung desSicherheitsbits wird die volle Funktionsfähigkeit der Schaltung wiederhergestellt.Sie lässt sich danach erneut programmieren.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 93: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

118

Abb. 1.38: Setzen des Sicherheitsbits beim 8751

Die Löschung des EPROM auf dem 8751 setzt ein, wenn der Chip Licht ausgesetztwird, dessen Wellenlänge kleiner als 0,4 m ist. Da Licht dieser Wellenlängen vonder Sonne und von fluoreszierenden Lichtquellen abgestrahlt wird, kann eine(unbeabsichtigte) Löschung des EPROM erfolgen, wenn dieses einer derartigenQuelle über einen längeren Zeitraum (eine Woche im Sonnenlicht, drei Jahre beiZimmerbeleuchtung mit Leuchtstoffröhren) ausgesetzt wird. Wenn eine solcheBelichtung im Anwendungsfall möglich ist, empfiehlt es sich, das Fenster miteinem für UV-Licht undurchlässigen Aufkleber abzudecken.

Zur Löschung des EPROM auf dem 8751 wird empfohlen, es ultraviolettem Licht(0,2537 m) mit einer Gesamtdosis von wenigstens 15 W/cm2 auszusetzen. Eine20- bis 30-minütige Bestrahlung des 8751 mit einer UV-Lampe, die 12 mW/cm2

abgibt, dürfte bei einer Entfernung von ca. 2,5 cm zwischen Lampe und Chip zurLöschung ausreichen. Nach der Löschung befinden sich alle Speicherstellen imZustand 1.

1.13.3 Programmierung des AT89C51

Für die Programmierung des AT89C51 benötigt man eine Entwicklungssoftware,die kostenlos bei Atmel aus dem Internet direkt zu laden ist, und einen Program-mer. Abbildung 1.39 zeigt die Hardware für einen Programmer.

Die Hardware besteht aus dem Mikrocontroller AT89C51, der Quarzschaltung mitfünf Bauteilen, dem MAX232 und dem 9-poligen Sub-Stecker. Über die serielleSchnittstelle werden die Daten vom PC zum Mikrocontroller übertragen. Zwi-schen dem Sub-Stecker und dem AT89C51 befindet sich der MAX232, der die

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 94: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

1.13Programmierung des 8751

119

Pegel auf entsprechendes Spannungsniveau umsetzt. Der MAX232 enthält diePegelumsetzer und benötigt daher externe Kondensatoren, denn die Innenschal-tung arbeitet mit mehreren Spannungskonvertern.

Abb. 1.39: Hardware für einen Programmer des AT89C51

Der Mikrocontroller hat einen Flash-Speicher und es gilt die Programmprozedurvon Tabelle 1.28.

Betriebsart RST PSEN ALE/PROG EA/Upp P2.6 P2.7 P3.6 P3.7

Schreibdaten H L _ H/+12 V L H H H

Lesedaten H L H H L L H H

Schreib-sperre

Bit – 1 H L _ H/+12 V H H H H

Bit – 2 H L _ H/+12 V H H L L

Bit – 3 H L _ H/+12 V H L H L

Baustein löschen H L _* H/+12 V H L L L

Lese Signaturbyte H L H H L L L L

Tabelle 1.28: Programmierbetrieb des AT89C51*) Das Signal für den »Baustein löschen« soll 10 ms als Impuls am PROG-Eingang anliegen.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215

Page 95: Mikrocontrollerprogrammierung in Assembler und C - mitp.de · PDF file27 Kapitel 1 Mikrocontroller-8051-Familie und AT89C51 Was haben Analog Devices, Atmel, Cypr ess Semiconductor,

Kapitel 1Mikrocontroller-8051-Familie und AT89C51

120

Wenn das Programm assembliert ist und der Assembler keine Fehler beinhaltet,kann mit der Programmierung des Mikrocontrollers AT89C51 begonnen werden.Für die ersten Versuche wird die Datenübertragung mit der seriellen Schnittstelledurchgeführt.

© des Titels »Mikrocontrollerprogrammierung in Assembler und C« (ISBN 978-3-8266-9215-4) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9215