# Intel MCS-48

MCS-48 ist die Bezeichnung einer 1976 von Intel vorgestellten Familie von 8-Bit-Mikrocontrollern. Bei einem Mikrocontroller sind im Optimalfall alle Teile eines Computersystems (Prozessor, Programmspeicher, Datenspeicher und Ein-/Ausgabeeinheiten) in einem einzigen Baustein zusammengefasst. Die MCS-48-Baureihe zählt zu den ersten derartigen Systemen. Zu Beginn hatte sie nur drei Mitglieder mit den Bezeichnungen 8048, 8035 und 8748. Beim 8035 befindet sich das Anwendungsprogramm in einem externen Baustein, wohingegen sich beim 8048 und 8748 das Anwendungsprogramm im Baustein selbst befindet – entweder in einem maskenprogrammierten ROM (8048) oder in einem EPROM (8748).
Bereits 1980 wurde mit Einführung des Intel 8051 eine leistungsfähigere Nachfolgefamilie vorgestellt, die unter dem Namen MCS-51 bekannt wurde. Der Erfolg der 8048-Serie in vielen Anwendungsbereichen sorgte aber dafür, dass er auch später noch massiv verwendet wurde und sogar bis heute Verwendung findet.

## Geschichte und Verwendung

Im Jahr 1976 erschienen der 8048, 8035 und 8748. Im Jahr 1978 folgten die „Low-cost“-Varianten 8020, 8021 und 8022, die weniger Anschlüsse hatten und deshalb nur mit internem Programmspeicher betrieben werden konnten. Gleichfalls 1978 wurden die entsprechenden Varianten 8039 und 8049, im Jahr 1981 der 8749 mit jeweils doppeltem ROM und RAM vorgestellt.
Im Jahr 1978 wurde auch die ergänzende Bausteinreihe UPI-41 (Universal Peripheral Interface) vorgestellt. Hier ist der 8-Bit-Datenbus direkt herausgeführt, so dass der Prozessor als Slave-Prozessor verwendet werden kann. Im Vergleich zum 8048 mit 96 Befehlen besitzt der 8041 nur 90 Befehle. Zu Beginn bestand die Reihe nur aus den beiden Mitgliedern mit den Bezeichnungen 8041 und 8741, der bekannteste Einsatz dürfte der des später erschienenen 8042 als Tastaturcontroller im 1984 vorgestellten IBM PC AT sein.
Die Familie wurde zunächst in NMOS-Technologie, ab Beginn der 1980er-Jahre dann auch in der heute üblichen CMOS-Technologie hergestellt.
Philips Semiconductors (heute NXP) hatte eine Lizenz, diese Familie herzustellen und hat auf Basis der Architektur die eigene MAB8400-Familie entwickelt, die u. a. das erste I²C-Interface enthielt und in den ersten Philips CD-Spielern (z. B. CD-100) eingesetzt wurde.
Auch für die in den 1980er-Jahren verbreiteten Genius-Computer-Mäuse wurde ein 8048 verwendet, ebenso wie er auch im Sinclair QL als Co-Prozessor Verwendung fand. Unsichtbar sind MCS-48-Bausteine auch heute noch in einer Unzahl von Geräten von der Nachttischuhr, über den Videorekorder bis hin zur Waschmaschine zu finden.

## Architektur

Die MCS-48-Baureihe ist grundsätzlich entsprechend der Harvard-Architektur aufgebaut, wobei zum Programm- und zum Datenadressraum noch ein eigener Ein-/Ausgabeadressraum hinzukommt. Die Länge der Programmadresse beträgt 12 Bit, womit 4 KByte adressiert werden können. Diese sind als zwei unabhängige 2-KByte-Programmbänke organisiert. Da Bank 2 immer extern liegt (Ausnahme 8050), kann durch Benutzung von Ausgabeleitungen zusätzlicher Programmspeicher adressiert werden.
Der interne Datenspeicher (64–256 Bytes) kann extern durch weitere 256 Bytes erweitert werden. Die Speicherzellen sind statisch ausgeführt, sie können über eine Standby-Versorgungsleitung auch im abgeschalteten Zustand mit Strom versorgt werden und so die Daten erhalten.
Eine Erweiterung der Ein-/Ausgabeleitungen erfolgt im einfachsten Fall über den Portextender-Baustein 8243, der vier 4-Bit-Ports zur Verfügung stellt. Dabei wird der 8243 mit speziell dafür vorgesehenen Befehlen in das Gesamtsystem eingebunden. Außerdem können Standard-MCS-80/85-I/O-Bausteine im Datenadressraum betrieben werden.
Bei der Entwicklung wurde besonders auf einen Befehlssatz geachtet, der leistungsfähige Bitbefehle bietet, andererseits aber auch so kompakt wie möglich ist. Die meisten Befehle sind nur 1 Byte lang mit implizitem Operanden, einige wenige haben einen Operanden in einem zweiten Byte codiert. Dadurch ergeben sich sehr kurze Programme, die auf die vorgegebene Speichergröße abgestimmt sind.
Ein großer Nachteil der Architektur war, dass bedingte Sprünge nur absolut innerhalb einer 256-Byte-Seite durchgeführt werden konnten. Dies führte bei Programmerweiterungen zu Nachjustierung nachfolgender bedingter Sprünge durch Nachschaltung direkter langer Sprünge, um die 256-Byte-Seitengrenze zu überwinden, was in der Folge zu weiteren Codeverschiebungen mit Korrekturen führte. Mehrere Eingriffe im Assemblercode und anschließende Assemblierungen waren die Folge. Beim nachfolgenden MCS-51 wurde dieser Nachteil beseitigt, indem die bedingen Sprünge relativ ± 127 Byte zum Sprungbefehl durchgeführt werden konnten und nicht an Seitengrenzen gebunden waren.
Gemeinsamkeiten aller MCS-48-Bausteine:
* 8-Bit-Prozessorkern
* min. 64 Bytes internes RAM
* optional externes RAM und ROM
* Intervallzeitgeber
* 2 Interrupt-Quellen

## Varianten

MCS-48-Varianten :
| Typ | ROM intern | RAM intern | Bemerkung |
| 8020 | 1024 | 64 | maskenprogrammierte Low-Cost-CPU: keine Interrupts, kein externer Programmspeicher, abgespeckter 8048-Befehlssatz, 20 Anschlüsse, 13 Ein-/Ausgänge |
| 8021 | 1024 | 64 | maskenprogrammierte Low-Cost-CPU: keine Interrupts, kein externer Programmspeicher, abgespeckter 8048-Befehlssatz, 28 Anschlüsse, 21 Ein-/Ausgänge |
| 8022 | 2048 | 64 | maskenprogrammierte Low-Cost-CPU: A/D-Wandler, Spannungskomparator-Eingänge, kein externer Programmspeicher, abgespeckter 8048-Befehlssatz |
| 8035 | – | 64 | ROM-lose Version des 8048, Programm in externem Baustein |
| 8039 | – | 128 | ROM-lose Version des 8049, Programm in externem Baustein |
| 8040 | – | 256 | ROM-lose Version des 8050, Programm in externem Baustein |
| 8048 | 1024 | 64 | erster Mikrocontroller von Intel, begründete die MCS-48-Familie |
| 8049 | 2048 | 128 | Weiterentwicklung des 8048 mit größerem Daten- und Programmspeicher |
| 8050 | 4096 | 256 | Weiterentwicklung des 8049 mit größerem Daten- und Programmspeicher |
| 8648 | 1024 | 64 | einmalig programmierbarer 8048, Factory OTP |
| 8748 | 1024 | 64 | reprogrammierbarer 8048, EPROM statt ROM |
| 8749 | 2048 | 128 | reprogrammierbarer 8049, EPROM statt ROM |
| 87P50 | – | 256 | Piggyback(Huckepack)-Version, bei der im Chipgehäuse ein Sockel für ein 2716-EPROM (2 KB) vorhanden ist |
UPI-41-Varianten :
| Typ | ROM intern | RAM intern | Bemerkung |
| 8041 | 1024 | 64 | vom 8048 abgeleiteter Slave-Prozessor mit asynchronem Datenregister zur Kommunikation mit einem Master-Prozessor (bspw. 8048/49/50) |
| 8042 | 2048 | 128 | vom 8049 abgeleiteter Slave-Prozessor mit asynchronem Datenregister zur Kommunikation mit einem Master-Prozessor (bspw. 8048/49/50) |
| 8641 | 1024 | 64 | einmalig programmierbarer 8041, Factory OTP |
| 8741 | 1024 | 64 | reprogrammierbarer 8041, EPROM statt ROM |
| 8742 | 2048 | 128 | reprogrammierbarer 8042, EPROM statt ROM |
| 8271 | | | Programmierbarer Floppy-Disk-Steuerbaustein (festprogrammierter Schnittstellenbaustein auf Basis 8041) |
| 8273 | | | Programmierbarer HDLC/SDLC-Steuerbaustein (festprogrammierter Schnittstellenbaustein auf Basis 8041) |
| 8278 | | | Programmierbarer Tastatur-Schnittstellenbaustein (festprogrammierter Schnittstellenbaustein auf Basis 8041) |
| 8292 | | | IEC-Steuerbaustein (festprogrammierter Schnittstellenbaustein auf Basis 8041) |
| 8294 | | | Datenverschlüsselungs-Baustein (festprogrammierter Schnittstellenbaustein auf Basis 8041) |
| 8295 | | | Steuerbaustein für Punktmatrix-Drucker (festprogrammierter Schnittstellenbaustein auf Basis 8041) |

## Bekannte Geräte mit MCS-48-Bausteinen

* Philips G7000, Spielkonsole (1978), als Hauptprozessor
* Sinclair QL, Homecomputer (1984), als Coprozessor für Peripherie
* IMSAI 8080, Computer (1979), zur Abfrage des Bedienpanels
* Nintendo Donkey Kong, Spielautomat (8035-Clone MB8884 als Sound-Prozessor)
* Kosmos CP1, Lerncomputer
* Entex Adventure Vision, Spielkonsole (1982)
* Motorsteuergerät Digijet VW T3 (2,1 Liter Einspritzmotor Kennbuchstabe: DJ)
* Roland CR-78, Drumcomputer (1978), arbeitet mit einem 8048
* Roland Jupiter-4, Synthesizer (1978), arbeitet mit zwei 8048 zur Parametersteuerung und Keyboard-Abfrage
* Roland ProMars, Synthesizer (1979), arbeitet mit zwei 8048 zur Parametersteuerung und Keyboard-Abfrage
* Korg Poly-61, Synthesizer (1982), arbeitet mit zwei 8049 zur Parametersteuerung und Keyboard-Abfrage
* Korg Polysix, Synthesizer (1981), arbeitet mit einem 8048 zur Parametersteuerung und einem 8049 zur Keyboard-Abfrage
* Sequential Circuits Pro One, Synthesizer (1981), arbeitet mit einem 8021, u. a. für den Sequenzer