17
TFH-Berlin - Technische Informatik MC65 02.04.2003 Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 1/17 8051-Mikrocontroller-Familie 8051-Komponenten und -Eigenschaften

TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 1/17

8051-Mikrocontroller-Familie 8051-Komponenten und -Eigenschaften

Page 2: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 2/17

Page 3: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 3/17

Page 4: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 4/17

Page 5: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 5/17

8051-CPU Der 8051 ist eine 8-Bit-Maschine, da internes ROM, RAM, die Special-Function-Register (SFR), Recheneinheit (ALU = Arithmetic Logic Unit) und externer Datenbus 8 Bit breit sind. Die Datentypen des 8051 sind Bit, Halbbyte (Nibble), Byte und Doppelbyte. Der 8051 unterstützt Bytetransport-, Logik- und Arithmetikoperationen. Die leistungsfähigen Bit-Verarbeitungsbefehle erlauben auf der Bit-Ebene Datentransporte, Logik- und bedingte Sprungoperationen und können unmittelbar mit Booleschen Variablen arbeiten. Die CPU (Central-Processing-Unit) des 8051 besteht aus: o Befehlszähler o Befehlsdekoder o Rechenwerk (ALU) o Boolescher Prozessor o Programm-Control-Einheit Befehlszähler Der 16-Bit-Befehlszähler (PC) steuert die Reihenfolge des Programmablaufs. Über den Inhalt des PC wird der Op-Code aus der entsprechenden Adresse des Befehlsspeichers in den Baustein geholt und dem Befehlsdekoder zur Ausführung übergeben. Befehlsdekoder Diese Einheit analysiert das eingelesene Byte und generiert dann, wenn es sich um einen Befehl handelt, über die Programm-Control-Einheit die internen Signale, die alle Funktionen der CPU zur Ausführung der aktuellen Instruktion auslösen. Sie steuern Quelle und Ziel der Daten und die Funktion der ALU. Arithmetische und Logische Einheit (ALU) Die ALU des 8051, die mit den Registern A, B und PSW kommuniziert, führt alle Datenmanipulationen durch. Sie verarbeitet 8-Bit-Datenworte von einer oder zwei Quellen und generiert 8- oder 16-Bit-Ergebnisse. Des weiteren werden von ihr die arithmetischen Operationen Addition, Subtraktion, Multiplikation und Division, Inkrementieren und Dekrementieren, BCD-Dezimalkorrektur, Vergleiche, Rotieren und logische Operationen ausgeführt. Boolescher Prozessor Der Boolesche Prozessor ist ein „Bitrechner“ innerhalb der ALU. Das Carry-FIag ist hierbei das Arbeitsregister für Bitbefehle. Er verfügt über seinen eigenen Befehlsvorrat und über bitadressierbare Speicherplätze im RAM und in den Special-Function-Registern. Dieser „Prozessor“ ermöglicht schnelle Bitmanipulationen an den Ein-/Ausgabe-Ports und die logische Verknüpfung der Bits. Die möglichen Bitoperationen sind nachfolgend aufgeführt: • Setzen, Löschen, Komplementieren • Springen wenn gesetzt, Springen wenn nicht gesetzt, Springen wenn gesetzt, dann löschen • Transport vom und zum Carry • Logische UND-/ODER-Verknüpfung Programm-Control- Einheit Die Programm-Control-Einheit (Ablaufsteuerung) beeinflusst die Reihenfolge der Befehlsholphase und -ausführung. Die Logik zur Durchführung bedingter Sprünge ermöglicht es, durch externe oder interne Bedingungen den Programmablauf zu modizieren.

Page 6: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 6/17

Die CPU des 8051 arbeitet mit folgenden Speicherbereichen:

• 64 Kbyte Befehlsspeicher. Der maximal mögliche Programmspeicher von 64 Kbyte ist bei der ROM-Version, dem 805l, in einen externen und einen internen Bereich aufgeteilt. Der interne Bereich belegt die unteren 4 Kbyte (4 Kbyte = > Adresse 0000H -0FFFH). Der externe (60 Kbyte = > Adresse 1000H - FFFFH) schließt sich daran an. Bei der ROM-losen Version, dem 8031, sind bis 64 Kbyte extern anschließbar (EA-Pin = > GND !). Dieser »Code-Speicher« wird über den 16-Bit-Befehlszähler (Programm-Counter = PC) angesprochen. Bedingte Sprünge beziehen sich relativ zur Adresse im Befehlszähler. Die Sprungweite umfasst den Bereich von der Adresse des Folgebefehls -128 bis +127. Bei Sprüngen (Jumps) und Unterprogrammaufrufen (Calls) wird der Befehlszähler vollständig (16 Bit) überschrieben, damit ist jede Adresse innerhalb der 64 Kbyte erreichbar.

• 64 Kbyte externer Datenspeicher. Interner und externer Datenspeicher haben keinen gemeinsamen Adreßbereich. Der externe Bereich ist hier auf bis zu 64 Kbyte ausbaubar und durch 8- und 16-Bit-Adressen anzusprechen.

• 128 Byte internes RAM. Auf diesen Teil wird über 8-Bit-Adressen zugegriffen. Er enthält 4 Registerbänke mit je 8 Registern und 128 direkt adressierbare Bits (16 Byte). Der Stack muss im internen (!) RAM liegen und ist somit auf 128 Byte limitiert. Auf ihn kann über den Stackpointer zugegriffen werden.

• 128 Byte Adressbereich für die Special-Function-Register. Diese Adressen liegen oberhalb des internen »Daten-RAM«. Die 21 Special-Function-Register sind nur direkt adressierbar ( auf das interne RAM kann direkt und indirekt zugegriffen werden). In diesem Bereich liegen alle Steuerregister, Rechenregister, Zähler, Ports usw., jedoch nicht der Program-Counter.

Der 8051 ermöglicht fünf Adressierungsarten: o Registeradressierung, o direkte Adressierung, o indirekte Adressierung, o Wertzuweisung und o indirekte indizierte Adressierung.

Der interne RAM (0 bis 7FH) kann direkt und über die Zeigerregister R0 oder R1 indirekt angesprochen werden. Auf die Special-Function-Register kann man nur direkt zugreifen. Für die Abarbeitung von Tabellen im Programmspeicher (Look-Up-Tables) wird die Basis-Register- mit Index-Register-Indirekt-Adressierung verwendet.

Page 7: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 7/17

Zeitverhalten der CPU

Ein Maschinenzyklus besteht aus 6 States (12 Oszillatorperioden). Jeder State ist wiederum geteilt in eine Phase 1, während der der Phase-1-Takt aktiv ist, und eine Phase 2, während der der Phase-2-Takt aktiv ist. Jede Phase dauert 1, jeder State 2 Oszillatorperioden. Die States und Phasen eines Maschinenzyklus werden von S1P1 (State 1, Phase 1) bis S6P2 (State 6, Phase 2) durchnumeriert.

Normalerweise laufen Arithmetik- und Logikoperationen während Phase 1 und interne Registertransporte während Phase 2 ab.

Die Diagramme in Bild 1.8 zeigen den zeitlichen Ablauf beim Holen und Ausführen von Befehlen, dargestellt in States und Phasen für die verschiedenen Befehlstypen. Das Oszillatorsignal an XTAL2 und das ALE-Signal (Address-Latch-Enable) sind die externen Referenzen. ALE ist normalerweise zweimal pro Maschinenzyklus aktiv: einmal während S1P2 bis S2P1 und wieder während S4P2 bis S5P1. Die Ausführung eines Einzyklus-Befehls beginnt bei S1P2, nachdem der OP-Code im Befehlsregister gespeichert ist. Bei einem 2-Byte-Befehl wird das zweite Byte während S4 desselben Maschinenzyklus gelesen. Falls es ein 1-Byte-Befehl ist, folgt in S4 trotzdem eine Holphase, das gelesene Byte wird jedoch nicht ausgewertet und der Befehlszähler wird nicht inkrementiert. In jedem Fall endet die Befehlsausführung mit dem Ende von S6P2. Die Diagramme in Bild 1.8 a) und b) zeigen den Zeitablauf eines 1-Byte- und eines 2-Byte-Einzyklusbefehls.

Die meisten Befehle des 8051 benötigen nur einen Zyklus. MUL (Multiplikation) und DIV (Division) sind die einzigen Befehle, die vier Maschinenzyklen benötigen.

Normalerweise holt die CPU in jedem »Maschinentakt« 2 Befehlsbyte vom Programmspeicher. Die einzige Ausnahme bildet die Ausführung der MOVX-Befehle. Sie ermöglichen den Zugriff auf den externen Datenspeicher. MOVX ist ein 1-Byte- Zweizyklenbefehl. Während eines MOVX-Befehls entfallen zwei Befehls-Holphasen, da im zweiten Zyklus der externe Datenspeicher angesprochen wird. Die Diagramme c) und d) in Bild 1.8 zeigen das Zeitverhalten für einen 1-Byte-Zweizyklusbefehl ohne Zugriff auf den externen Datenspeicher und für einen MOVX-Befehl.

Bild 1.8: Befehlshol- und -ausführungsphasen

Page 8: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 8/17

Der 8051 liest die Bytes aus dem Programmspeicher immer paarweise aus. Wenn die Befehlsausführungszeit länger ist als die Befehlszeit, liest der Prozessor während der laufenden Befehlsbearbeitung schon das Byte vom nächsthöheren Speicherplatz. Braucht der laufende Befehl ein weiteres Byte, dann steht dieses sofort zur Verfügung. So können auch 2-Byte-Befehle innerhalb von 12 Taktzyklen abgearbeitet werden. Wird das zweite eingelesene Byte nicht zur Befehlsausführung gebraucht, dann wird es ignoriert und nach Beendigung des Befehls noch einmal eingelesen. Bei 2-Byte-Befehlen erspart sich der Prozessor die Einlesezeit des zweiten Bytes. Da in der Praxis viele 2- und 3-Byte-Befehle (#-, Bit-, Sprung-, Call-Befehle, direkte Adressierung) vorkommen, bringt dieses Einleseverfahren einen Zeitgewinn. Allerdings werden dann bei max. Taktfrequenz schnelle Programmspeicher notwendig.

Page 9: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 9/17

Speicher

Aufteilung und Handhabung der internen und externen Programm- und Datenspeicherbereiche des 8051 wurden im Kapitel CPU kurz beschrieben.

Programmspeicher Dieser Bereich besteht aus einem internen und einem externen Anteil. Der externe Code-Speicher des 8031 (ROM-lose Version) beträgt maximal 64 Kbyte. In diesem Fall muss der /EA-Pin auf LOW liegen. Beim 8051 (ROM-Version) wird für die unteren 4 Kbyte Adressraum das interne ROM angesprochen (0 bis 0FFFH), wenn der /EA-Pin auf HIGH liegt. Extern ist der Bereich bis auf 64 Kbyte erweiterbar. Der Adressbereich 0 bis 23H wird für die Interrupt-Einsprungvektoren benutzt. Bild 1.9 zeigt die Adressbereiche des Programmspeichers.

Datenspeicher Er gliedert sich in den externen (maximal 64 Kbyte) und den internen (128 Byte) Teil. Auf die externen Daten kann mittels 8- oder 16-Bit-Adressen zugegriffen werden. Das interne RAM ist direkt und indirekt adressierbar. Der untere RAM-Bereich enthält:

• viermal 8 Byte Registerbänke (durch 2 Bit im PSW-Register umschaltbar)

• 16 direkt bitadressierbare Byte (128 Bit) Außerdem gibt es noch 21 Special-Function-Register (SFR). Diese liegen in einem 128-Byte-Adressbereich oberhalb des internen RAM (von 80H bis FFH). Die SFR sind nur direkt adressierbar.

Die Bilder 1.9 und 1.10 zeigen die Datenspeicher- und Programmspeicher-Adressbereiche, das interne RAM und die direkt adressierbaren Bit im internen RAM. Die verschiedenen Registerbänke sind zum schnellen Umschalten der Programme bei Interrupts besonders nützlich. Der Stack kann an eine beliebige Adresse im 128-Byte-RAM gelegt werden. Nach Reset ist der Stackpointer mit 7H vorgeladen, d.h., der Stackbereich beginnt ab 8H (der Stackpointer wird um eins erhöht, bevor das erste Byte im Stackbereich abgelegt wird).

Bild 1.10: Adreßbereiche des Datenspeichers

Page 10: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 10/17

Page 11: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 11/17

Auf das externe Program-Memory des 8051 (ROM-Version) wird zugegriffen, wenn das Signal /EA aktiv ist oder der Befehlszählerinhalt größer als 0FFFH ist. Bei der ROM-losen Version 8031 ist das Signal /EA auf Masse (GND) zu legen, um auch auf die unteren 4 Kbyte des externen Programmspeichers zugreifen zu können. Das Signal /PSEN (Program-Store-Enable) dient als Lese-Signal. Der Zugriff auf das externe Code-Memory erfolgt immer über die 16-Bit-Adresse. Die 8 höherwertigen Bit werden dabei über Port 2 ausgegeben. Sie bleiben dort während der gesamten Dauer des Lesezyklus stehen. Nach dem Zugriff erscheint der ursprüngliche Port-2-Inhalt wieder an den Anschlüssen. Bei der Verwendung eines externen Programmspeichers ist Port 2 für Ein-/Ausgabe- Funktionen nicht verwendbar. Das gilt auch dann, wenn vom höherwertigen Adressbyte beispielsweise nur ein Anschluss für die Speicheradresse benötigt wird. Es gibt zwei Möglichkeiten auf externe Daten zuzugreifen; über eine 16-Bit-Adresse im Zeigerregister (DTPR) oder eine 8-Bit-Adresse im Zeigerregister (R0 oder R1). Das Signal /RD (P3.7) strobed den Speicherzugriff beim Lesen, das Signal /WR (P3.6) beim Schreiben.

Bild 1.11: Adressbereiche im internen RAM Bild 1.12: Bitadressen im internen RAM

Bei der Verwendung der 8-Bit-Adresse im R0 oder R1 ist Port 2 für die Ein-/Ausgabe-Funktionen frei; nicht jedoch, wenn über den Datenpointer, »DTPR« adressiert wird. Bei einem Zugriff mittels einer 16-Bit-Adresse (DPTR) erfolgt die Ausgabe des höherwertigen Adressbyte immer über Port 2. Die Information bleibt dort während der gesamten Dauer des Lese- bzw. Schreibvorgangs stehen. Nach dem Speicherzugriff erscheint der ursprüngliche Port-2-lnhalt wieder an den Anschlüssen. Bei allen Speicherzugriffen (Programm- und Datenspeicher) wird die niederwertige 8-Bit-Adresse im Zeitmultiplex mit den Daten über Port 0 ausgegeben. Mit dem Signal ALE (Address-Latch-Enable) lässt sich die Adresse in einem externen Register (Latch) zwischenspeichern. Dabei ist das Adressbyte bei der negativen ALE-Flanke gültig. Aus den Diagrammen in den Bildern 1.13 bis 1.15 lassen sich die Zeitverhältnisse bei den Programm- und Datenspeicherzugriffen (lesend und schreibend) entnehmen. Die spezifizierten Zeiten stehen in den Datenblättern im Anhang. Nach jedem Zugriff steht im Latch von Port 0 FFH.

Page 12: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 12/17

Page 13: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 13/17

SFR-Bereich

Page 14: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 14/17

Special-Function-Register

Page 15: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 15/17

Das Signal /PSEN PSEN (Program-Store-Enable) gibt mit negativem Pegel den Zugriff auf den externen Programmspeicher frei. Das Signal erscheint nicht bei internen Programmzugriffen. /PSEN wird bei jedem Zyklus zweimal aktiv (außer bei Ausführung eines MOVX- Befehls), auch wenn das zweite geholte Byte vom auszuführenden Befehl nicht gebraucht wird. Das Zeitraster von /PSEN und /WR ist den Impulsdiagrammen in den Bildern 1.13 bis 1.15 zu entnehmen.

Das Signal ALE ALE (Address-Latch-Enable) löst das Zwischenspeichern der niederwertigen Adresse an Port 0 in einem externen Register aus (in manchen Speicherbausteinen ist dieses Latch mit integriert). ALE wird während jedes Maschinenzyklus zweimal aktiv, auch wenn kein externer Speicherzugriff stattfindet. ALE entfällt nur dann einmal, wenn ein MOVX-Befehl ausgeführt wird. Ohne externen Datenzugriff ist die ALE-Frequenz konstant fosz : 6. Das ALE-Signal ist in diesem Fall als Takt für externe Schaltungen verwendbar . Zum Zeitverhalten von ALE siehe auch die Bilder 1.13 bis 1.15.

Überlappende externe Programm- und Datenspeicherbereiche Sollen sich Programm- und Datenspeicherbereiche überlappen, sind die Signale /PSEN und /RD durch ein logisches UND zu verknüpfen. Das Ergebnis ist ein Speicherlese-Signal (/MEMRD), das im aktiven Zustand LOW ist. Da der /PSEN-Zyklus kürzer als der /RD-Zyklus ist, sind entsprechend schnelle Speicher erforderlich.

Page 16: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 16/17

Special-Function-Register (SFR) Die SFR liegen im Adressbereich 128 bis 255 (80H bis FFH). Auf sie ist nur mittels direkt adressierter Befehle zuzugreifen. In diesem Bereich liegen alle Register außer den Register-Bänken und dem Befehlszähler. Von den im 8051 enthaltenen 21 SFR sind 11 bitadressierbar .

Akkumulator (ACC) Der Akkumulator (A) ist das Arbeitsregister der CPU. Das Übertragsbit (Carry-Flag) ist das Arbeitsregister des Booleschen Prozessors. Es befmdet sich im SFR PSW.

Register B Als Hilfsregister ergänzt es den ACC bei den Multiplikations- und Divisionsbefehlen. Abgesehen davon ist es als Zwischenspeicher verwendbar .

Programmstatusregister (PSW) Dieses Register hat verschiedene Funktionen. Tabelle 1.5 gibt darüber Auskunft.

Page 17: TFH-Berlin - Technische Informatik MC65 02.04.2003 8051 ...public.beuth-hochschule.de/~rozek/pdf/MC65-Teil1.pdf · Addition, Subtraktion, Multiplikation und Division, Inkrementieren

TFH-Berlin - Technische Informatik MC65 02.04.2003

Prof. Dr.-Ing. Alfred Rożek MC65-Teil1.doc 17/17

Stackpointer (SP) Der Stackpointer (8 Bit) dient zur Adressierung des Stackbereiches (indirekte Adressierung). Er wird inkrementiert, bevor Daten in den Stack abgelegt werden (durch PUSH oder CALL) und dekrementiert, nachdem die Daten aus dem Stack (durch POP, RET oder RETI) geholt wurden. Der Stackpointer wandert nach »oben«, wenn Daten im Stack abgelegt werden. Die Stack-Anfangsadresse ist beliebig im RAM platzierbar. Durch Reset wird der SP mit 07H vorgeladen. Der Stack belegt dann das interne RAM ab Adresse 08H.

Daten-Pointer (DPTR) Das 16-Bit-Register besteht aus den SFR DPH (HIGH) und DPL (LOW). Der DPTR muss für den Zugriff auf den externen Datenspeicher (indirekte Adressierung) mit der externen 16-Bit-Adresse geladen werden. Wird der DPTR nicht für externe Datenspeicherzugriffe eingesetzt, ist er als Register (zweimal 8 Bit) zu verwenden.

Port 0 bis 3 (P0 -P3) Die Special-Function-Register P0 bis P3 sind Ein-/Ausgaberegister. ZähIer-/Zeitgeber-Register (TH0, TL0 und TH1, TL1) Die Register TH0, TL0 und TH1, TL1 sind die entsprechenden HIGH- bzw. LOW-Bytes der 16-Bit-Zähler/Zeitgeber 0 und 1.

Serieller Datenpuffer (SBUF) [099H] Je nachdem, ob SBUF beschrieben oder gelesen wird, spricht die Hardware unter der gleichen Adresse verschiedene Register an. Schreibend wird auf das Senderegister zugegriffen, der Schreibvorgang löst gleichzeitig das Aussenden des SBUF-Inhalts aus. Lesend wird das Empfangsregister angesprochen.

Steuerregister Das Interruptsystem (IP: Interrupt-Priority, IE: Interrupt-Enable), die Zähler/Zeitgeber (TMOD, TCON) und die serielle Schnittstelle (SCON, PCON) sind über SFR zu steuern. Diese werden später beschrieben.