De afgelopen 50 jaar hebben toegezien op verschillende parallelle ontwikkelingen in computer architectuur, chipfabricatie en massaproductie, met de microprocessor als tekenend resultaat. Deze microprocessor werd voor het eerst in 1971 een commercieel succes door de introductie van de 4-bit 4004 van een toen nog klein en onbekend bedrijfje genaamd Intel. Veel bedrijven volgden Intel’s voorbeeld en tegen het eind van de jaren ’70 kon je uit een half dozijn microprocessoren kiezen. In die jaren explodeerde het aantal computergebruikers van een handvol ondernemende hobbyisten en technisch onderlegde ‘hackers’ naar miljoenen zakelijke, industriële, ambtelijke, educatieve en enthousiaste thuisgebruikers, die allemaal de beschikbaarheid hadden over relatief betaalbare computeroplossingen.
Gelijktijdig aan de microprocessor, gebruikmakend van dezelfde ontwikkelingen, ontstond het concept microcontroller, met hierbij de TMS1000 van Texas Instruments als lichtend voorbeeld. Microcontrollers zijn voor het grote publiek minder als eindproduct bekend dan de veel vaker genoemde microprocessoren, hoewel termen als ‘Arduino‘ en ‘ESP32’ ook bij de gemiddelde consument bekend beginnen te raken. Het grote publiek is zich echter wel bewust van het feit dat ‘iets’ verantwoordelijk is voor de slimmigheid in huishoudelijke apparaten zoals broodroosters, koffiemachines, televisies, ovens, wasmachines, koelkasten, elektrische tandenborstels en ontelbare andere ‘gadgets’.
Een microcontroller bestaat intern uit een microprocessor, werkgeheugen, programmaopslaggeheugen en I/O voorzieningen. Dit maakt een microcontroller in veel opzichten een regelcomputer-in-een-chip, waarbij er slechts een externe voedingsspanning nodig is om een programma uit te voeren. De eerste microcontroller was de voornoemde TMS1000 van Texas Instruments (1974), gevolgd door de 8048 van Intel (1977). Een opvolger van de 8048 was de 8051 (1980), met als speciale uitvoering de hier beschreven 8052AH-BASIC (1986).
Het grootste verschil tussen microprocessoren en microcontrollers is gelegen in hun toepassingsgebieden: waar de microprocessor bedoeld is voor generieke toepassingen met veel aanvullende onderdelen zoals geheugen, invoer en uitvoer, video, audio en opslag is de microcontroller bedoeld voor besturingstoepassingen met minimale externe componenten. Zo heeft een microprocessor over het algemeen geen intern werk- of opslaggeheugen, terwijl een microcontroller dat wel heeft. Een microcontroller heeft meer bitvergelijkingsinstructies en vaak een beperktere instructieset, die ook nog eens vooral op verwerkingssnelheid is ingericht. Ook de mogelijkheden om met andere chips en direct met digitale en analoge elektronica te communiceren is bij een microcontroller vaak meer uitgemeten dan bij een microprocessor.
De MCS-51 is een familie van microcontroller IC’s, ontwikkeld, geproduceerd en op de markt gebracht door Intel, gebaseerd op hun archetype 8051. Andere IC-fabrikanten zoals Siemens, Advanced Micro Devices (AMD), Fujitsu en Philips zijn door Intel gelicenseerde fabrikanten van deze microcontrollers. De microcontrollers uit de MCS-51 familie zijn geoptimaliseerd voor besturingstoepassingen met in de instructieset een verscheidenheid aan adresseringsmodi, handige 8-bits rekenkundige instructies, ínclusief instructies voor vermenigvuldigen en delen en ondersteuning voor één-bit variabelen met bijbehorende bitmanipulatiemogelijkheden.
In de tabel zijn enkele van de MCS-51 microcontrollers weergegeven met hierbij aangegeven de hoeveelheid interne geheugen. Het interne gebeugen ligt in hetzelfde adresbereik als het externe geheugen, wat de uitwisselbaarheid van de microcontrollers vergroot.
Zoals in de tabel weergegeven is de 8052AH een microcontroller met 8K interne ROM en 256 bytes RAM geheugen. De interne ROM wordt bij het maken van de chip al geprogrammeerd. Een speciale variant van de 8052AH, de 8052AH-BASIC, heeft een af-fabriek in het ROM ondergebrachte drijvendekomma-BASIC genaamd MCS-BASIC, een terminalserver en een EPROM programmeercircuit voor de opslag van programma’s. Intel bracht deze speciale 40-pins microcontroller in 1986 op de markt.
De 8052AH-BASIC was bij de introductie in 1986 om verschillende redenen bijzonder: het bevatte een eenvoudige terminalserver met een ingebouwde editor, zodat programma’s met een seriële terminal of terminalemulatieprogramma beheerd konden worden. Ook de ingebouwde MCS-51 BASIC maakte deze microcontroller speciaal. Nog niet eerder was er een besturingschip met een ingebouwde hogere programmeertaal beschikbaar geweest.
Elektuur kwam met het november 1987 nummer met het ontwerp van een microcontrollerboard gebaseerd op de 8052AH-BASIC, ongeveer rondom de tijd waarin ik zelf ook voor mijn studie met deze microcontroller bezig was. Het ontwerp was opgebouwd rondom een 8052AH-BASIC V1.1, twee 6264 RAM’s, een 2764 of 27128 EEPROM, wat bus logica, een programmeerspanning-beveiliging, RS232 niveau-aanpassing en een reset-schakelaar.
De opgebouwde microcontroller was een dubbelzijdige, doorgemetaliseerde printplaat met afmetingen van 10×15 centimeter. Twee connectoren maakten I/O en busuitbreidingen mogelijk. Op de printplaat zaten, buiten de 8052AH-BASIC micocontroller, twee RAM-chips, een EPROM-voet en enkele logicachips. De seriële ansluiting voor een terminal of computer met terminalsoftware bestond uit een 5-polige DIN-aansluiting, in die tijd bekend als audioconnector waarmee audioapparaten onderling konden worden verbonden. De toepassing hiervan was niet standaard (een 9-polige D-connector was hier toepasselijker geweest), zodat er een kabel op maat gemaakt moest worden. Twee leds en een schakelaar maakten het geheel af. De printplaat was voorzien van montagegaten zodat het eenvoudig in een behuizing kon worden ingebouwd, een en ander overgelaten aan de creatieve vaardigheden van de constructeur.
Na het aansluiten van een geschikte terminal aan de 5-pins DIN-aansluiting en het inschakelen van de voeding start de ingebouwde BASIC programmeertaal en editor op, wordt een prompt via de seriële poort naar een aangesloten terminal verzonden en kan een programma worden ingetoetst:
*MCS-51(tm) BASIC V1.1* READY >10 FOR I=1 TO 3 >20 PRINT I >30 NEXT I >RUN 1 2 3 READY > |
Op de prompt kunnen enkele commando’s worden gegeven: RUN
, LIST
, NEW
, NULL
, RAM
, ROM
, XFER
, PROG
, BAUD
, CALL
en variaties hierop. Met LIST
(of LIST
met een regelbereik) wordt het programma (of een deel hiervan) naar de terminal teruggegeven. Een regel wordt gecorrigeerd door deze opnieuw in te voeren.
De geplaatste EPROM kan vanuit de controller worden geprogrammeerd met het commando PROG
en programma’s kunnen eenvoudig vanuit de EPROM worden opgestart met het commando ROM
:
>LIST 10 FOR I=1 TO 3 20 PRINT I 30 NEXT I READY >PROG 12 READY >NEW READY >LIST READY >ROM 12 READY >LIST 10 FOR I=1 TO 3 20 PRINT I 30 NEXT I READY > |
De EPROM technologie wordt tegenwoordig niet meer toegepast, omdat hiervoor EEPROM (of ‘flash’) voor in de plaats is gekomen: elektrisch wisbare EPROM’s. Maar de EPROM’s uit de tijd van de 8052AH-BASIC konden alleen met ultraviolet licht (vandaar het doorzichtig venster) worden gewist. Een programmeur in die tijd had altijd de beschikking over een wisapparaatje: een doosje met een UV lamp, waar de EPROM in werd geplaatst en een paar minuten belicht.
De Parallax BASIC Stamp is een goede opvolger van het Elektuur board, hoewel deze ondertussen aardig in de vergetelijkheid is geraakt. Ook een moderne(re) Espressif ESP32 microcontroller heeft een interne BASIC interpreter, een leuke buiging naar de Intel 8052AH-BASIC microcontroller.
Handleidingen, artikelen en projecten met MCS-51 microcontrollers
- Intel’s MCS BASIC-52 Operating and Reference Manual (Archive.org)
- Intel’s MCS BASIC-52 User’s Manual (Archive.org)
- The Microcontroller Idea Book: Circuits, Programs, & Applications featuring the 8052-BASIC Microcontroller (Jan Axelson, Archive.org), ook beschikbaar als gratis toegankelijke PDF
- 8052-BASIC-compuboard (Elektuur november 1987, Archive.org)
- BASIC-compuboard in CMOS (Elektuur januari 1990, Archive.org)
- 8032-mini-board (Elektuur april 1991, Archive.org)
- A Tiny 80(C)32 BASIC Board van Ronald Dekker
- 8052AH-BASIC
- Wouter’s 8052 BASIC Single Board Computer
- 8052 Single Board Computer
- Hein Pragt’s Intel 8052AH Basic computer
- Madis Kaal’s My very first first 8052 BASIC Project
- 8052AH-BASIC single-board computer (Hackaday)
- Intel 8052AH revisited part 1 – a little system archaeology (Alysson Rowan, met mijn 8052AH-BASIC board!)
- Paul’s 8051 Tools, Projects and Free Code
- 8051-projects (GitHub)
- 8051 Projects and Tools
- Turbo Pascal for 8051 microcontrollers