# Intel MCS-51

Intel P8051.
O **Intel MCS-51**, tamén **Intel 8051,** é un microcontrolador de arquitectura de conxunto de instrucións complexas, desenvolvido pola compañía Intel en 1980 para uso en sistemas embebidos. É un microcontrolador moi popular no mercado, polo que moitos produtos son fabricados con el sendo o núcleo, como Philips, Atmel, Dallas Semiconductor, Winbond e outros.

## Especificacións

### Soporte físico

O microcontrolador ten o proxecto baseado na arquitectura Harvard, é dicir, existen espazos de direccións separados para código e datos. Malia ter sido deseñado orixinariamente para aplicacións simples, permítese direccionar 64 KB de ROM externa e 64 KB de RAM por medio de liña de selección separadas para programas e datos.

Adicionalmente, o microcontrolador contén unha memoria interna, dividida en dúas partes: os SFR e memoria de propósito xeral. Os SFR (rexistradores especiais de funcións) son os rexistros proporcionados polo microcontrolador, e teñen direccións atribuídas nesta memoria interna. O acceso á memoria interna é máis rápido có acceso á memoria externa, pero posúe o tamaño limitado. Parte da memoria interna ademais é usada coma pila durante as chamadas ás funcións e o proceso de interrupcións.

Unha característica particular do 8051 é a inclusión dunha unidade de proceso booleano que permite a feitura de operacións con bits (lóxica binaria) executadas directa e eficientemente en rexistros internos. Isto fixo con que o chip tornásese moi popular en aplicacións de control industrial.

Outra característica bastante valorada é haber catro conxuntos separados de rexistros. Úsase esta característica frecuentemente para reducir a latencia de interrupción (a rutina que manexa a interrupción declara usar outro conxunto de rexistros, evitándose desta maneira a necesidade de salvar na pila os rexistros orixinais).

A maioría dos MCS-51 inclúen unha ou dúas unidade de receptor transmisor universal asíncrono (UART), dúas ou tres de temporizadores, 128 ou 256 bytes de RAM interna (16 bytes dos cales son direccionables a nivel de bit), catro ou cinco rexistros de entrada/saída e ata 54KB de memoria interna de programa. O núcleo orixinal executa un ciclo máquina cada 12 ciclos de tempo, requirindo a maioría de instrucións un ou dous ciclos máquina. Pero actualmente a maioría de fabricantes ofrecen versións melloradas que só requiren de 2 a 4 ciclos de tempo por cada instrución máquina.

Os microcontroladores MCS-51 modernos ofrecen moitas melloras sobre o orixinal. Melloras comúns inclúen *watchdog timers* (un temporizador programable que reinicia o sistema caso no se actualice en certo tempo), osciladores internos, memoria de programa Flash ROM interna, código de inicialización en ROM, almacenamento en EEPROM interna, I²C, SPI, USB, xeradores PWM, conversores analóxicos A/D e D/A, reloxos de tempo real RTC, temporizadores e contadores extra, facilidades de depuración internas, máis fontes de interrupción, modos de baixo consumo, interface CAN etc.

### Soporte lóxico

Existen varios compiladores de linguaxe C dispoñibles para o MCS-51, así como en linguaxe ensambladora. A maioría engaden extensións á linguaxe que permiten ó programador especificar, por exemplo, o tipo de memoria onde se situará a variable, especificar controladores de interrupción, especificar o banco de rexistros, acceder a instrucións especiais de manipulación de bits.

O predecesor do MCS-51, o 8048, usouse no teclado do primeiro IBM PC, que convertía pulsaciones de tecla nun stream serie que se envía á unidade central do computador. O 8048 e os seus derivados aínda se usan actualmente en teclados básicos.

## Versións

O 8031 foi unha versión reducida do Intel **8051** orixinal que non contén memoria interna.

O 8052 foi unha versión mellorada do Intel **8051** orixinal con:

* 256 bytes de RAM interna, no canto de 128 bytes
* 8 kB de ROM, no canto de 4 kB
* un terceiro temporizador de 16-bit
* un segundo porto serie.

Ademais de todas as facilidades de temporizadores que posúen os controladores, estes contan con diferentes sistemas de comunicación serial e paralela.

## Notas

## Véxase tamén

* Intel MCS-48