L' Intel 8051 è un microcontrollore a 8 bit su singolo chip basato su architettura Harvard, prodotto da Intel nel 1980 come processore per sistemi integrati. La versione originale di Intel era popolare negli anni ottanta e i primi anni novanta ma è stata in seguito ampiamente sorpassata da una vasta gamma di dispositivi 8051-compatibili, più veloci e/o funzionali, prodotti da oltre 20 aziende indipendenti come Atmel, Infineon Technologies (precedentemente Siemens AG), Maxim Integrated Products (tramite la sua sussidiaria Dallas Semiconductor), NXP (precedentemente Philips Semiconductor), Nuvoton (precedentemente Winbond), ST Microelectronics, Silicon Laboratories (precedentemente Cygnal), Texas Instruments e Cypress Semiconductor.

Microcontrollore Intel P8051.
SAB-C515-LN della Infineon è basato sull' 8051

La designazione ufficiale di Intel per la famiglia 8051 di microcontrollori è MCS 51. La prima versione fu prodotta utilizzando tecnologia NMOS mentre le versioni successive, identificate da una lettera C nel loro nome (es., 80C51) usavano tecnologia CMOS ed erano quindi più efficenti dal punto di vista energetico dei loro predecessori NMOS. Ciò li rendeva particolarmente adatti per l'uso su dispositivi a batteria.

Applicazioni e funzioni importanti

 
Microarchitettura i8051.

Il chip dell' 8051 integrava tutte le funzionalità seguenti:

  • CPU a 8 bit
  • Registri, accumulatore e unità aritmetico-logica ALU a 8 bit
  • bus dati a 8 bit
  • Bus indirizzi a 16 bit (spazio indirizzabile complessivo: 216 = 64kB (65536 locazioni) indipendenti su RAM e ROM
  • RAM integrata - 128 byte (memoria dati)
  • ROM integrata - 4kB (memoria programma)
  • Quattro porte dati di I/O orientate al byte
  • UART (porte seriali) di tipo sincrono e asincrono
  • Due contatori/timer a 16 bit
  • Gestore di interrupt a due livelli di priorità
  • Modalità di risparmio energetico

Una caratteristica particolarmente utile dell' 8051 era la possibilità di elaborare direttamente e in modo efficiente variabili booleane a un solo bit, sui registri interni e RAM. Questa caratteristica ha contribuito a consolidare la popolarità delll' 8051 in applicazioni di controllo industriale. Un'altra caratteristica apprezzata era la presenza di quattro gruppi separati di registri di contesto, usati per ridurre drasticamente le latenze degli interrupt rispetto ai metodi tradizionali di immagazzinamento del contesto degli interrupt su uno stack.

Le porte seriali dell' 8051 rendevano semplice l'uso del chip come interfaccia di comunicazione. Era infatti possibile configurare la modalità di connessione tra i pin esterni e i registri a scorrimento interni, collegandoli anche ai timer interni, ottenendo così il supporto di diverse modalità di comunicazione seriale, di tipo sia sincrono che asincrono. Il chip era in grado di comunicare secondo i protocolli seriali più diffusi, in particolare era supportata anche una modalità compatibile con il protocollo RS-485 per comunicazioni multipunto. Questa capacità di interfacciamento verso altri dispositivi rendeva l' 8051 particolarmente adatto per applicazioni di tipo embedded.

Una volta che una UART, e un temporizzatore se necessario, è stata configurata, il programmatore deve solo scrivere una semplice routine di interrupt per riempire il registro shifter di invio ogni volta l'ultimo bit shiftato è inviato tramite la UART e/o riempie lo spazio vuoto nel registro shifte del destinatario. Il programma principale allora effettua letture e scritture seriali semplicemente leggendo e scrivendo dati a 8-bit sugli stacks.

I microcontrollori 8051 includono tipicamente uno o due UARTs, due o tre temporizzatori, 128 o 256 bytes di RAM interna (16 byte indirizzabili), fino a 128 bytes di I/O, da 512 bytes a 64 kB di memoria programmi interna, a volte, un quantitativo di RAM estesa (ERAM - Extended RAM) situato nella memoria esterna. L'originale core 8051 gira a 12 cicli di clock per ciclo macchina, eseguendo la maggior parte delle istruzioni in uno o due cicli macchina. Con una frequenza clock di 12 Mhz, l' 8051 potrebbe quindi eseguire un milione istruzioni (che richiedono 1 ciclo macchina) per secondo o 500,000 istruzioni (che richiedono 2 cicli macchina) per secondo. Il rinnovato 8051 è comunemente utilizzato, il quale gira a sei, quattro, due, o addirittura un clock per ciclo macchina, e ha una frequenza di clock di 100Mhz, ed è quindi in grado anche di eseguire un maggior numero di istruzioni al secondo. Tutti i SILabs, alcuni Dallas e pochi Atmel sono provvisti di un singolo ciclo macchina per core.

Velocità ancora più elevata negli 8051 a singolo ciclo macchina, la gamma da 130Mhz a 150Mhz, sono ora disponibili su internet in forma scaricabile per la programmazione logica di dispositivi quali FPGA, e per centinaia di Mhz in ASTCs, per sempio, la netlist da www.e8051.com. la velocità massima di clock degli 8051 raggiunge più di 200Mhz grazie alla tecnologia FPGA odierna - per esempio www.dcd.pl

Caratteistiche cumuni inclusi nei moderni microcontrollori basati sull' 8051 comprendono reset timers integrati con brown-out detection, oscillatori on-chip, Flash rom auto-programmabile, codice di avvio nella ROM (bootloader), EEPROM non-volatile, I²C, SPI, host interfaccia usb, generatori PWM, extra contatori e temporizzatori, utility di debugging in-circuit, altri interrupt sources, e extra power saving modes.

Programmazione

Oltre alla programmazione in linguaggio assembler nativo, erano disponibili anche diversi compilatori C, completi di estensioni per il controllo dell'allocazione delle variabili nei vari tipi di memoria e per l'accesso alle caratteristiche hardware specifiche dell' 8051, come ad esempio i banchi di registri per le variabili a singolo bit. Erano inoltre disponibili compilatori e interpreti di altri linguaggi di alto livello come Forth, BASIC, Pascal/Object Pascal, PL/M e Modula 2.

Processori correlati

 
Processore Intel 8031

Il predecessore dell' 8051, l' 8048, fu utilizzato nella tastiera del primo PC IBM, dove il suo compito era l'invio della codifica dei tasti verso l'unità primaria del computer. L' 8048 e i suoi derivati sono ancora in uso in alcuni modelli di tastiere semplici.

L' 8031 era una versione ridotta dell' 8051 priva ROM interna. Per usare questo chip, era quindi obbligatorio l'uso di una memoria programma esterna contenente il programma eseguibile.

L' 8751 era una versione leggermente potenziata dell' 8051 contenente 8kB di EEPROM adibita a memoria programma, piuttosto di 4Kb di ROM

L' 8052 era una versione potenziata dell'originale 8051 che implementava 256 byte di RAM interna invece di 128 byte, 8kB di ROM invece di 4kB e un terzo timer a 16 bit.

L' 8032 era una versione ridotta dell' 8052 priva ROM interna (similmente a quanto succedeva con l' 8031 rispetto all' 8051).

Infine, l' 8752 (similmente all' 8751 rispetto l' 8051) conteneva 8kB di EEPROM invece che ROM

Montando EEPROM invece che ROM l' 8751 e l' 8752 erano solitamente utilizzati come versioni di prova e sviluppo del programma, in quanto quel tipo di memoria programma le rendeva più costose, ma riprogrammabili

Note


Bibliografia

  • (English) William Payne, Embedded Controller Forth for the 8051 Family (hardcover), Elsevier, December 19, 1990, p. 528, ISBN 978-0125475709. Lingua sconosciuta: English (aiuto); Formato sconosciuto: hardcover (aiuto)

Collegamenti esterni