Intel MCS-51

<< Intel 8051  >>

Intel P8051
Produktion: | 1980 bis 1990er
Produzenten:

* Intel
* Philips Semiconductors
* NEC
* Siemens AG

Prozessortakt: | 12 MHz
Befehlssatz: | 8 Bit
Sockel: | 40-pin DIP

MCS-51 ist die Bezeichnung einer 1980 von Intel vorgestellten Familie von 8-Bit-Mikrocontrollern.[1][2] Bei einem Mikrocontroller sind im Optimalfall alle Teile eines Computersystems (Prozessor, Programmspeicher, Datenspeicher und Ein-/Ausgabeeinheiten) in einem einzigen Baustein zusammengefasst. Die MCS-51-Familie trat die Nachfolge der MCS-48-Familie an. Zu Beginn hatte sie nur drei Mitglieder mit den Bezeichnungen 8051, 8031 und 8751. Beim 8031 befindet sich das ROM in einem externen Baustein, wohingegen es sich beim 8051 und 8751 im Baustein selbst befindet – entweder in einem maskenprogrammierten ROM (8051) oder in einem EPROM (8751).[3] Im Jahr 1983 wurden die Varianten 8052, 8032 und 8752 mit jeweils doppeltem ROM wie RAM und einem zusätzlichen Timer vorgestellt.[3] Die Familie wurde zunächst in NMOS-Technologie, nach einigen Jahren dann auch in der heute üblichen CMOS-Technologie hergestellt.

Intel hat den MCS-51-CPU-Kern an viele Halbleiterhersteller lizenziert und damit die Basis für einen herstellerübergreifenden Industriestandard geschaffen. Seit langem werden MCS-51-kompatible Mikrocontroller nicht nur von Intel, sondern auch von Analog Devices, Atmel (Übernommen durch Microchip Technology), Infineon, Dallas Semiconductor (akquiriert durch Maxim Integrated), Oki, NXP Semiconductors (vormals Philips), Silicon Laboratories, Texas Instruments u. v. a. hergestellt.

Von Intel wurde der SDK-51 als Entwicklungssystem angeboten.

## Struktur

[Bearbeiten | Quelltext bearbeiten]

Blockdiagramm des i8051 Pinbelegung Intel P8031 Mikrocontroller 87C51 Mikrocontroller mit EPROM Der SAB-C515-LN von Infineon stammt aus der MCS-51-Familie. 89V54RD2 von Silicon Storage Technology mit SuperFlash Memory

Die MCS-51-Familie hat sehr viele Mitglieder hervorgebracht, u. a. den Siemens 80C517. Sie besitzen folgende Gemeinsamkeiten:

* 8-Bit-Prozessorkern mit einheitlichem Befehlssatz
* Mindestens 128 Bytes internes RAM
* Externes RAM und ROM
* Ein einheitliches Adressierungsmodell für so genannte Special Function Register (SFR)
* Full-Duplex-UART
* 5 Interrupt-Quellen
* 2 Interrupt-Prioritäten
* Diverse Timer

Aufgrund der unterschiedlichen Befehlslängen von einem bis zu drei Byte sowie den unterschiedlichen Ausführungszeiten für einen Befehl handelt es sich eindeutig um eine CISC-Architektur.

Ein Befehlszyklus entspricht in der ursprünglich von Intel entwickelten Struktur einem bis drei Maschinenzyklen (Multiplikation und Division benötigen 4). Ein Maschinenzyklus entspricht 12 Taktzyklen. Heute übliche Varianten des MCS-51 kommen hingegen meist fix mit nur 2 Taktzyklen pro Maschinenzyklus aus. Damit ist bei gleicher Taktfrequenz eine deutlich schnellere Befehlsabarbeitung möglich.

Eine Besonderheit dieses Prozessors ist der Bitprozessor, welcher im bitadressierbaren Bereich eine schnelle und einfache Bitmanipulation erlaubt.

Aufgrund der großen Verbreitung dieser Prozessorfamilie und damit verbunden großer Softwarebibliotheken gibt es auch eine Vielzahl von synthetisierbaren MCS-51-Implementierungen. Diese sind als so genannte IP-Cores in einer Hardwarebeschreibungssprache wie beispielsweise VHDL frei und im Quelltext verfügbar.[4] Sie eignen sich für den Einsatz in FPGAs und anwendungsspezifischen integrierten Schaltungen (ASICs). Typische Anwendungsbeispiele sind USB-Controller, wie sie in Druckern oder Schnittstellenadaptern eingesetzt werden. In diese sind zur Steuerung der diversen Protokolle MCS-51-Mikrocontroller integriert.

## Varianten

[Bearbeiten | Quelltext bearbeiten]

Die MCS-51-Baureihe umfasst folgende bekannte Mikrocontroller (alle Speicherangaben sind in Byte):

NMOS\- und CHMOS-Varianten

Typ | ROM
intern | RAM
intern | 16-bit
Timer | UART | ext. IRQ-
quellen | Bemerkung | NMOS | CHMOS
8031 | – | 128 | 2 |  1 |  2 | [5] | x | x
8032 | – | 256 | 3 | [5] | x | x
8051 | 4096 | 128 | 2 | maskenprogrammierbares ROM[5][6] | x | x
8052 | 8192 | 256 | 3 | maskenprogrammierbares ROM[5][7] | x | x
80C54 | 16384 | 256 | 3 | maskenprogrammierbares ROM[7] | – | x
80C58 | 32768 | 256 | 3 | maskenprogrammierbares ROM[7] | – | x
8751 | 4096 | 128 | 2 | EPROM als OTP oder mit UV-Fenster[5][6] | x | x
8752 | 8192 | 256 | 3 | EPROM als OTP oder mit UV-Fenster[5][7] | x | x
87C54 | 16384 | 256 | 3 | EPROM als OTP oder mit UV-Fenster[7] | – | x
87C58 | 32768 | 256 | 3 | EPROM als OTP oder mit UV-Fenster[7] | – | x
89C52 | 32768 | 256 | 3 | Flash-Speicher | – | x
8044 | 4096 | 192 | 2 |  ? | RUPI™-44 (Remote Universal Peripheral Interface), maskenprogrammierbares ROM[8] | x | –
8344 | – | 192 | 2 | RUPI™-44 (Remote Universal Peripheral Interface)[8] | x | –
8744 | 4096 | 192 | 2 | RUPI™-44 (Remote Universal Peripheral Interface), EPROM als OTP oder mit UV-Fenster[8][9] | x | –

Darüber hinaus gibt es von verschiedenen Firmen erweiterte MCS-51-Mikrocontroller, z. B. von Siemens (heute Infineon) entwickelt und in NMOS-Technologie hergestellt:

Typ | ROM
intern | RAM
intern | Bemerkung

|
|
|

SAB 80515 | 8192 | 256 | Hersteller: SIEMENS, 3× 16-Bit-Timer, 1 UART, 2 externe Interruptquellen, PWM,
8-fach A/D-Wandler, maskenprogrammierbares ROM
SAB 80535 | – | 256 | 3× 16-Bit-Timer, 1 UART, 2 externe Interruptquellen, PWM, 8-fach A/D-Wandler

Die CMOS-Varianten der Siemens MCS-51-Serie sind funktionsgleich, allerdings nicht in allen Varianten pinkompatibel.

Weitere moderne MCS-51-kompatible Mikrocontroller, welche in CMOS-Technologie mit Flash-Speicher hergestellt werden und meistens schnellere Befehlsverarbeitung, mehr Speicher oder spezielle Schnittstellen aufweisen:

Hersteller | Typ | Flash
intern | RAM
intern | Bemerkung

|
|
|
|

ATMEL | AT89C2051 | 2048 | 128 | Nur 20 Pins, kein externer Daten-/Adressbus, 2× 16-Bit-Timer, 1 UART,
1 Komparator, Flash-Speicher
ATMEL | AT89C4051 | 4096 | 128
ATMEL | AT89C51ED2 | 16384 | 256 | bis zu 6 Ports (je nach Gehäusegröße), 1792 Bytes internes MOVX-SRAM, RS232-Boot-
Loader im ROM, 2 KBytes internes Daten-EEPROM, 3× 16-Bit-Timer, 1 UART,
1 Komparator, 2 Datenzeiger, PWM, SPI, Flash-Speicher
MAXIM/DALLAS | DS89C430 | 16384 | 256 | 1 Taktzyklus/Befehl, max. 33 MIPS bei 33 MHz, 1 KB internes MOVX-SRAM, RS232-Boot-
Loader im ROM, 3× 16-Bit-Timer, 1 UART, 1 Komparator, 2 Datenzeiger, Flash-Speicher
MAXIM/DALLAS | DS89C450 | 65536 | 256

## Speicherorganisation

[Bearbeiten | Quelltext bearbeiten]

Special Function Register: Weiß: 8051, Blau: zusätzlich beim 8052 Internes Adressierungsschema

Der Stack befindet sich immer frei definierbar im internen RAM. Die Byte-Reihenfolge ist little-endian. In der ursprünglichen Form handelt es sich um eine Harvard-Architektur, jedoch besitzen viele neuere MCS-51-Entwicklerboards eine modifizierte Harvard-Architektur. Mit dieser Architektur wird ein Teil des XRAMs (extended data RAM) mittels eines Adressdekoders in den Programmspeicher gespiegelt. Das ermöglicht einer meist ab ROM laufenden Terminalsoftware z. B. per Serielle Schnittstelle kommende Software in den Programmspeicher zu laden und nach dem Übertragen auszuführen.

### Datenspeicher

[Bearbeiten | Quelltext bearbeiten]

Interrupt-Adressen

Die 4 Registerbänke enthalten jeweils 8 Register, die entweder als Register oder über ihre Adresse ansprechbar sind. Vorteile der Register gegenüber dem „RAM zur allgemeinen Verwendung“ sind die kürzeren Befehle. Register 0 und 1 können als 8-Bit-Datenpointer im internen und externen RAM verwendet werden. Durch geschickte Verwendung der Registerbänke lässt sich die Reaktionszeit auf einen Interrupt verkürzen, da die Daten nicht in den Stack verschoben werden müssen.

Da sich das obere RAM und die Special Function Register die Adressen teilen, dient die Adressierungsart zur Unterscheidung. Das obere RAM lässt sich nur indirekt mittels Register 0 und Register 1 ansprechen, während die Special Function Register mittels direkter Adressierung ansprechbar sind.

Bei der Programmierung wird das erweiterte RAM (engl. extended data RAM oder kurz XRAM) vom normalen RAM durch den Befehl unterschieden. `MOV` spricht das interne RAM an, während `MOVX` das XRAM anspricht. Das XRAM ist nur indirekt adressierbar, dafür jedoch linear. Bei den frühen Varianten war das XRAM immer extern, bei neueren Varianten kann es teilweise oder vollständig integriert sein.

Aufgrund der Adressbusbreite von 16 Bit sind bis zu 65536 Byte XRAM möglich.

Die Special Function Register bzw. Speicheradressen des XRAM werden von bestimmten Varianten von Controllern bzw. Controllerboards für Erweiterungen aller Art verwendet. Als Beispiel:

* Weitere Ein- und Ausgänge
* 16-Bit-Recheneinheit
* USB-Controller
* …

Besonders bei den synthetisierbaren MCS-51-Implementierungen bietet sich das an, weil der Befehlssatz der MCS-51-Familie nicht verändert wird, womit die Kompatibilität zu deren Entwicklungstools erhalten bleibt.

### Programmspeicher

[Bearbeiten | Quelltext bearbeiten]

Da der Adressbus 16 Bit breit ist, kann der externe Programmspeicher bis zu 65536 Byte umfassen. Es kann entweder der interne oder der externe Programmspeicher verwendet werden. Ein gleichzeitiges Betreiben ist nicht möglich.

Mittels `MOVC` kann das Programm vom Programmspeicher lesen, was bei der Implementierung von Tabellen hilfreich ist.

## Ports

[Bearbeiten | Quelltext bearbeiten]

Ein Bit von Port 1 bzw. Port 3

Alle Ports können als Ein- oder Ausgang betrieben werden, wobei die Ports 1 bis 3 einen internen Pull-up Widerstand besitzen. Port 0 ist ein echter Tri-State-Port, der zusammen mit Port 2 für externe Speicherzugriffe verwendet wird. Dabei wird Port 0 im Zeitmultiplex für die Ausgabe des unteren Adressbytes bzw. Ein- und Ausgabe der Daten verwendet. Gleichzeitig erscheint an Port 2 das obere Adressbyte.[10]

RMW-Befehle lesen den Wert aus dem Speicher, während alle anderen Befehle die Werte vom Pin holen.

## Erweiterungen

[Bearbeiten | Quelltext bearbeiten]

### MCS-151

[Bearbeiten | Quelltext bearbeiten]

Im Jahr 1991 kündigte Intel die MCS-151-Familie an, eine bis zu 6-mal schnellere Variante des MCS-51, welche vollständig binär- und befehlssatzkompatibel ist. Im Aufbau und im Gegensatz zum 8051 weist der 80151 intern eine Pipeline mit einem 16 Bit breiten Datenbus auf.[11]

### MCS-251

[Bearbeiten | Quelltext bearbeiten]

Im Jahr 1996 wurde der 8/16/32-Bit-Mikrocontroller MCS-251 von Intel vorgestellt, welcher über einen 24 Bit breiten (linearen) Adressraum verfügt und wie der Vorgänger MCS-151 auf einer Pipeline-Struktur basiert. Auch der MCS-251 ist zum 8051 binärkompatibel, verfügt über zusätzliche Maschinenbefehle und hat darüber hinaus einen begrenzten Satz von 32 Bit Befehlen, weitere 16 8- und 16-Bit-Register, 16 16-Bit-Register und 10 32-Bit-Register.[11] Der MCS-251 ist auch als IP-Core verfügbar und ist in dieser Form von verschiedenen Herstellern wie Atmel oder Temic lizenziert.[12] Auch die Familie der Kryptoprozessoren SLE78 von Infineon basieren auf dem MCS-251.

## Literatur und Datenblätter

[Bearbeiten | Quelltext bearbeiten]

* J. Koch (Bearb.): Die 8bit-Mikrocontroller-Familie 8051, 1. Eigenschaften. Philips/Valvo, 1984. ISBN 3-87095-260-1
* J. Koch (Bearb.): Die 8bit-Mikrocontroller-Familie 8051, 2. Befehlsvorrat. Philips/Valvo, 1984. ISBN 3-87095-261-X
* Mikrocomputer SAB 8051 Befehlsliste. Hrsg. von der Siemens AG, Bereich Bauelemente, Balanstraße 73, 8000 München 80 (Best-Nr. B/2591)
* Andreas Roth: Das Microcontroller Kochbuch MCS51, 6. Auflage, mitp Verlag, Januar 2002, ISBN 978-3-8266-0722-6
* R. Leicht: Das große 51er Anwendungsbuch. Franzis Verlag 2005, ISBN 3-7723-5419-X
* J. Walter: Mikrocomputertechnik mit der 8051-Controller-Familie. 3. Auflage, Springer 2008, ISBN 978-3-540-66758-2
* M. Baldischweiler: Der Keil C51-Compiler, ISBN 3-9804331-8-8
* K. Köhn, R. Schultes: 8051-Prozessoren: Einführung – Applikationen – Programmierung, Franzis'-Verlag 1992, ISBN 3-7723-4331-7
* B. Vom Berg, P. Groppe, J. Klein: C-Programmierung für 8051er, Band 1–3, Elektor-Verlag 2003–2005
* Intel MCS-51™ Family of Single Chip Microcontrollers User's Manual, January 1981
* Microcontroller Handbook, Intel Corporation 1984, Order number 210918-002
* 8-Bit Embedded Controllers, Intel Corporation 1991, Order number 270645-003
* MCS® 51 Microcontroller Family User's Manual, February 1994, Publication number 121517, Intel Corporation; PDF (14,9 MB)
* MCS-51™ Macro Assembler User's Guide, Publication number 9800937, Intel Corporation

## Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]

1. ↑ John Wharton: An Introduction to the Intel® MCS-51™ Single-Chip Microcomputer Family, Application Note AP-69, May 1980, Publication number 121518, Intel Corporation; PDF (Memento des Originals vom 24. Februar 2013 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.eetasia.com.
2. ↑ John Wharton: Using the Intel® MCS-51™ Boolean Processing Capabilities, Application Note AP-70, May 1980, Publication number 203830-001, Intel Corporation; PDF.
3. ↑ a b Intel's CPU family trees (Memento vom 14. März 2011 im Internet Archive)
4. ↑ Vollständige Implementierung eines MCS-51-Mikrocontrollers in VHDL unter GNU Lesser General Public License.
5. ↑ a b c d e f MCS® 51 8-Bit Control-Oriented Microcontroller
6. ↑ a b 8XC51FX CHMOS Single-Chip 8-Bit Microcontrollers
7. ↑ a b c d e f 8XC52/54/58 CHMOS SINGLE-CHIP 8-BIT MICROCONTROLLER
8. ↑ a b c 8044AH/8344AH/8744H High Performance 8-Bit Microcontroller With On-Chip Serial Communication Controller
9. ↑ M8744H RUPI™-44: Remote Universal Peripheral Interface
10. ↑ J. Koch: Die 8bit-Mikrocontroller-Familie 8051, Band 1 (Eigenschaften), Valvo/Boysen + Maasch, Oktober 1984, S. 21ff, ISBN 3-87095-260-1
11. ↑ a b Intel MCS® 151 and MCS® 251 Microcontrollers. Abgerufen am 8. September 2024.
12. ↑ Kenneth J. Ayala: The 8051 Microcontroller. Thomson Delmar Learning, 2005, ISBN 978-1-4018-6158-2 (englisch).

## Weblinks

[Bearbeiten | Quelltext bearbeiten]

Commons: MCS-51 – Sammlung von Bildern, Videos und Audiodateien

Intel-Mikroarchitekturen

x86-Mikroarchitekturen: 8086 | 80186 | 80286 | 80386 | 80486 | P5 | P6 | NetBurst | Core Solo/Core Duo | Core 2 | Nehalem/Westmere | Sandy/Ivy Bridge | Haswell | Broadwell | Skylake | Kaby Lake | Coffee Lake | Whiskey Lake | Cannon Lake | Cascade Lake | Ice Lake | Comet Lake | Tiger Lake | Rocket Lake | Alder Lake | Raptor Lake | Meteor Lake | Lunar Lake | Arrow Lake | Bartlett Lake | Panther Lake | Nova Lake • Atom

Non-x86-Mikroarchitekturen: Mikrocontroller: MCS-48 | MCS-51 | MCS-96 | XScale • Server: Itanium | Itanium 2

GPU-Mikroarchitekturen: Larrabee | Intel HD Graphics | Alchemist | Battlemage