stringtranslate.com

MCS-51

El Intel MCS-51 (comúnmente denominado 8051 ) es una serie de microcontroladores (MCU) de un solo chip desarrollados por Intel en 1980 para su uso en sistemas integrados . El arquitecto del conjunto de instrucciones Intel MCS-51 fue John H. Wharton . [1] [2] Las versiones originales de Intel fueron populares en la década de 1980 y principios de la de 1990, y los derivados compatibles con binarios mejorados siguen siendo populares en la actualidad. Es una computadora con un conjunto de instrucciones complejo con espacios de memoria separados para las instrucciones del programa y los datos.

La familia MCS-51 original de Intel se desarrolló utilizando tecnología de semiconductores de óxido metálico ( NMOS ) de tipo N, al igual que su predecesora Intel MCS-48 , pero las versiones posteriores, identificadas por una letra C en su nombre (por ejemplo, 80C51) utilizan tecnología de semiconductores de óxido metálico complementario ( CMOS ) y consumen menos energía que sus predecesoras NMOS. Esto las hizo más adecuadas para dispositivos alimentados por batería.

La familia continuó en 1996 con el MCS-151 mejorado de 8 bits y la familia MCS-251 de 8/16 bits / 32 bits de microcontroladores compatibles con binarios. [3] Aunque Intel ya no fabrica la familia MCS-51, MCS-151 y MCS-251, los derivados compatibles con binarios mejorados fabricados por numerosos proveedores siguen siendo populares en la actualidad. Algunos derivados integran un procesador de señal digital (DSP) o una unidad de punto flotante (coprocesador, FPU). Más allá de estos dispositivos físicos, varias empresas también ofrecen derivados MCS-51 como núcleos IP para su uso en diseños de matriz de puertas programables en campo (FPGA) o circuitos integrados específicos de la aplicación (ASIC).

Características y aplicaciones importantes

Microarquitectura i8051

La arquitectura 8051 proporciona muchas funciones ( unidad central de procesamiento (CPU), memoria de acceso aleatorio (RAM), memoria de solo lectura (ROM), puertos de entrada/salida (E/S), puerto serie, control de interrupciones , temporizadores ) en un solo paquete :

Una característica del núcleo 8051 es la inclusión de un motor de procesamiento booleano, que permite que las operaciones lógicas booleanas a nivel de bit se realicen de manera directa y eficiente en registros internos seleccionados , puertos y ubicaciones de RAM seleccionadas . Otra característica es la inclusión de cuatro conjuntos de registros de trabajo seleccionables por banco , que reducen en gran medida el tiempo necesario para realizar los cambios de contexto para entrar y salir de las rutinas de servicio de interrupción . Con una instrucción, el 8051 puede cambiar de banco de registros, evitando la tarea que consume mucho tiempo de transferir los registros críticos a la RAM.

Una vez que se ha configurado un UART y, si es necesario, un temporizador, el programador solo necesita escribir una rutina de interrupción simple para rellenar el registro de desplazamiento de envío cada vez que el último bit se desplaza hacia afuera por el UART y/o vaciar por completo el registro de desplazamiento de recepción (copiar los datos en otro lugar). El programa principal realiza entonces lecturas y escrituras en serie simplemente leyendo y escribiendo datos de 8 bits en las pilas.

Características derivadas

A partir de 2013 , muchos de los principales fabricantes de chips aún siguen desarrollando nuevos derivados y los principales proveedores de compiladores como IAR Systems , Keil y Altium Tasking [6] publican actualizaciones continuamente.

Los microcontroladores basados ​​en MCS-51 incluyen típicamente uno o dos UART , dos o tres temporizadores, 128 o 256 bytes de RAM de datos interna (16 bytes de los cuales son direccionables por bits), hasta 128 bytes de E/S , de 512 bytes a 64 KB de memoria de programa interna y, a veces, una cantidad de RAM de datos extendida (ERAM) ubicada en el espacio de datos externo. La RAM y la ROM externas comparten los buses de datos y direcciones. El núcleo 8051 original funcionaba a 12 ciclos de reloj por ciclo de máquina, y la mayoría de las instrucciones se ejecutaban en uno o dos ciclos de máquina. Con una frecuencia de reloj de 12 MHz , el 8051 podía ejecutar 1 millón de instrucciones de un ciclo por segundo o 500.000 instrucciones de dos ciclos por segundo. En la actualidad, se utilizan comúnmente núcleos 8051 mejorados que funcionan a seis, cuatro, dos o incluso un reloj por ciclo de máquina (denominados "1T") y tienen frecuencias de reloj de hasta 100 MHz, por lo que son capaces de ejecutar una cantidad aún mayor de instrucciones por segundo. Todos los dispositivos de Silicon Labs , algunos de Dallas (ahora parte de Maxim Integrated ) y algunos de Atmel (ahora parte de Microchip ) tienen núcleos de ciclo único . [7] [8] [9]

Las variantes del 8051 pueden incluir temporizadores de reinicio integrados con detección de caídas de tensión, osciladores en chip, memoria de programa flash ROM autoprogramable, RAM externa integrada, almacenamiento de programa interno adicional, código de cargador de arranque en ROM, almacenamiento de datos no volátil EEPROM , interfaces de host I2C , SPI y USB , bus CAN o LIN , módulos de radio Zigbee o Bluetooth , generadores PWM , comparadores analógicos , convertidores analógico-digitales y digital-analógicos , RTC , contadores y temporizadores adicionales, instalaciones de depuración en circuito , más fuentes de interrupción, modos de ahorro de energía adicionales, más/menos puertos paralelos, etc. Intel fabricó una versión programada por máscara, 8052AH-BASIC, con un intérprete BASIC en ROM, capaz de ejecutar programas de usuario cargados en RAM.

Los microcontroladores basados ​​en MCS-51 se han adaptado a entornos extremos. Ejemplos de variantes de alta temperatura son la familia Tekmos TK8H51 para −40  °C a +250  °C [10] o el Honeywell HT83C51 para −55  °C a +225  °C (con funcionamiento durante hasta 1 año a +300  °C). [11] Los microcontroladores MCS-51 resistentes a la radiación para su uso en naves espaciales están disponibles; por ejemplo, de Cobham (anteriormente Aeroflex ) como el UT69RH051 [12] o de NIIET como el 1830VE32 ( en ruso : 1830ВЕ32 ). [13]

En algunas escuelas de ingeniería, el microcontrolador 8051 se utiliza en cursos introductorios de microcontroladores. [14] [15] [16] [17]

Convenciones de nombres familiares

El primer microcontrolador MCS-51 de Intel fue el 8051, con 4 KB de ROM y 128 bytes de RAM. Las variantes que comienzan con 87 tienen una EPROM programable por el usuario, a veces borrable mediante rayos UV. Las variantes con una C como tercer carácter son algún tipo de CMOS . 8031 ​​y 8032 son versiones sin ROM, con 128 y 256 bytes de RAM. El último dígito puede indicar el tamaño de la memoria, p. ej., 8052 con 8 KB de ROM, 87C54 con 16 KB de EPROM y 87C58 con 32 KB de EPROM, todas con 256 bytes de RAM.

Arquitectura de memoria

El MCS-51 tiene cuatro tipos distintos de memoria: RAM interna, registros de funciones especiales, memoria de programa y memoria de datos externa. Para acceder a ellas de manera eficiente, algunos compiladores [18] utilizan hasta 7 tipos de definiciones de memoria: RAM interna, acceso de un solo bit a la RAM interna, registros de funciones especiales, acceso de un solo bit a registros de funciones especiales seleccionados (divisibles por 8), RAM de programa, RAM externa a la que se accede mediante un acceso indirecto a registros, utilizando uno de los registros estándar de 8 bits, y acceso indirecto a la RAM externa a registros utilizando el registro de acceso indirecto de 16 bits.

El conjunto de instrucciones del 8051 está diseñado como una arquitectura Harvard con memoria segregada (datos e instrucciones); solo puede ejecutar código obtenido de la memoria de programa y no tiene instrucciones para escribir en la memoria de programa. Sin embargo, el bus que sale del CI tiene una única dirección y ruta de datos, y se parece mucho a un bus de arquitectura Von Neumann .

La mayoría de los sistemas 8051 respetan el conjunto de instrucciones y requieren funciones personalizadas para descargar nuevos programas ejecutables, por ejemplo, en la memoria flash.

RAM interna

La memoria RAM interna (IRAM) tiene un espacio de direcciones de 8 bits, que utiliza las direcciones de 0 a 0xFF. La IRAM de 0x00 a 0x7F contiene 128 registros de 1 byte direccionables directamente, a los que se puede acceder utilizando una dirección absoluta de 8 bits que forma parte de la instrucción. Alternativamente, se puede acceder a la IRAM de forma indirecta: la dirección se carga en R0 o R1, y se accede a la memoria utilizando la sintaxis @R0 o @R1, o como memoria de pila a través del puntero de pila SP, con las operaciones PUSH y POP; y las operaciones *CALL y RET.

El 8051 original tiene solo 128 bytes de IRAM. El 8052 agregó IRAM de 0x80 a 0xFF, a la que solo se puede acceder de manera indirecta (por ejemplo, para usarla como espacio de pila). La mayoría de los clones del 8051 también tienen 256 bytes completos de IRAM.

Los accesos directos a las direcciones IRAM 0x80–0xFF, en cambio, se asignan a los registros de funciones especiales (SFR), donde se encuentran los acumuladores A, B, el bit de transporte C y otros registros especiales para control, estado, etc.

Registros de funciones especiales

Los registros de funciones especiales (SFR) se encuentran en el mismo espacio de direcciones que la IRAM, en las direcciones 0x80 a 0xFF, y se accede a ellos directamente utilizando las mismas instrucciones que para la mitad inferior de la IRAM. No se puede acceder a ellos indirectamente a través de @R0 o @R1 o mediante el puntero de pila SP; el acceso indirecto a esas direcciones accederá a la segunda mitad de la IRAM.

Los registros de funciones especiales (SFR) incluyen los acumuladores A (o ACC, en E0) y B (en F0) y la palabra de estado del programa (o PSW, en D0), así como el puntero de datos de 16 bits DPTR (en 82, como DPL y 83 como DPH). Además de estos, un pequeño núcleo de otros registros de funciones especiales, incluido el IE de habilitación de interrupción en A8 y la IP de prioridad de interrupción en B8; los puertos de E/S P0 (80), P1 (90), P2 (A0), P3 (B0); el control de E/S en serie SCON (98) y el búfer SBUF (99); el registro de control de CPU/energía PCON (87); y los registros para el control de los temporizadores 0 y 1 (TCON en 88) y el modo de operación (TMOD en 89), el temporizador 0 de 16 bits (TL0 en 8A, TH0 en 8C) y el temporizador 1 (TL1 en 8B, TH1 en 8D) – están presentes en todas las versiones del 8051. Otras direcciones dependen de la versión; en particular, los registros del temporizador 2 para el 8052, el registro de control T2CON (en C8), la captura/enganche de 16 bits (RCAP2L en CA, RCAP2H en CB) y el temporizador 2 (TL2 en CC y TH2 en CD) no están incluidos con el 8051.

Ventanas de registro

Los 32 bytes en IRAM de 0x00 a 0x1F contienen espacio para cuatro ventanas de registro de 8 bytes , a las que se asignan los ocho registros R0 a R7. La ventana activa en ese momento está determinada por una dirección de dos bits contenida en la palabra de estado del programa.

Registros de bits

Los 16 bytes (128 bits) en las ubicaciones IRAM 0x20–0x2F contienen espacio para 128 registros de 1 bit, que se pueden direccionar por separado como registros de bits 00–7F.

Los registros de bits restantes, direccionados como 80–FF, se asignan a los 16 registros de función especial 80, 88, 90, 98, ..., F0 y F8 (aquellos cuyas direcciones son múltiplos de 8), y por lo tanto incluyen los bits que comprenden los acumuladores A, B y la palabra de estado del programa PSW. La dirección de la ventana de registro, que son los bits 3 y 4 de la PSW, es direccionable como registros de bits D3 y D4, respectivamente; mientras que el bit de acarreo C (o CY), en el bit 7 de la PSW, es direccionable como registro de bits D7.

Memoria del programa

La memoria de programa (PMEM, aunque su uso es menos común que el de IRAM y XRAM) es de hasta 64 KB de memoria de solo lectura, que comienza en la dirección 0 en un espacio de direcciones separado. Puede estar dentro o fuera del chip, según el modelo particular de chip que se utilice. La memoria de programa es de solo lectura, aunque algunas variantes del 8051 utilizan memoria flash dentro del chip y proporcionan un método para reprogramar la memoria en el sistema o en la aplicación.

Además del código, es posible almacenar datos de solo lectura, como tablas de búsqueda , en la memoria del programa, que se recuperan mediante las instrucciones o . La dirección se calcula como la suma del acumulador de 8 bits y un registro de 16 bits (PC o DPTR).MOVC A,@A+DPTRMOVC A,@A+PC

Las instrucciones especiales de salto y llamada ( AJMPy ACALL) reducen ligeramente el tamaño del código que accede a la memoria del programa local (dentro de los mismos 2 KB). [19]

Cuando se requiere un código de más de 64 KB, un sistema común hace que el código se conmute entre bancos, y la E/S de propósito general selecciona los bits de dirección superiores. Algunos compiladores 8051 [18] incorporan disposiciones para acceder automáticamente al código paginado. En estos sistemas, los vectores de interrupción y la tabla de paginación se ubican en los primeros 32 KB de código y siempre residen allí.

Memoria de datos externa

La memoria de datos externa (XRAM) es un tercer espacio de direcciones, que también comienza en la dirección 0 y permite 16 bits de espacio de direcciones. También puede estar dentro o fuera del chip; lo que la hace "externa" es que se debe acceder a ella mediante la MOVXinstrucción (mover externamente). Muchas variantes del 8051 incluyen los 256 bytes estándar de IRAM más unos pocos kilobytes de XRAM en el chip.

Se puede acceder a los primeros 256 bytes de la XRAM mediante las instrucciones , , y . Se puede acceder a los 64 KB completos mediante y . La dirección de 16 bits requiere que el programador cargue el registro de índice de 16 bits. Por este motivo, los accesos a la RAM con direcciones de 16 bits son sustancialmente más lentos.MOVX A,@R0MOVX A,@R1MOVX @R0,AMOVX @R1,AMOVX A,@DPTRMOVX @DPTR,A

Algunas CPU [20] permiten que la dirección indirecta de 8 bits utilice cualquier registro de propósito general de 8 bits.

Para permitir el uso de esta característica, algunos microcontroladores compatibles con 8051 con RAM interna mayor a 256 bytes, o con incapacidad para acceder a RAM externa, [20] acceden a la RAM interna como si fuera externa, y tienen un registro de función especial (por ejemplo, PDATA) que les permite establecer la dirección superior de la página de 256 bytes. Esto emula el modo MCS8051 que puede paginar el byte superior de una dirección de RAM configurando los pines de E/S de propósito general.

Cuando se requiere una memoria RAM mayor a 64 KB, un sistema común hace que la memoria RAM se conmute entre bancos, y que la E/S de propósito general seleccione los bits de dirección superiores. Algunos compiladores 8051 [18] tienen disposiciones para acceder automáticamente a los datos paginados.

Registros

El único registro de un 8051 que no está asignado a la memoria es el contador de programa (PC) de 16 bits. Este especifica la dirección de la siguiente instrucción que se ejecutará. Las instrucciones de bifurcación relativa proporcionan un desplazamiento con signo de 8 bits que se agrega al PC.

Se puede acceder a ocho registros de propósito general R0–R7 con instrucciones un byte más cortas que las demás. Se asignan a la IRAM entre 0x00 y 0x1F. Solo se utilizan ocho bytes de ese rango en un momento dado, lo que está determinado por los dos bits de selección de banco en la PSW.

La siguiente es una lista parcial de los registros del 8051, que están mapeados en la memoria en el espacio de registro de función especial:

Puntero de pila, SP (0x81)
Este es un registro de 8 bits que se utiliza en las instrucciones de llamada y retorno de subrutinas. La pila crece hacia arriba; el SP se incrementa antes de insertar un valor y se decrementa después de extraerlo.
Puntero de datos, DP (0x82–83)
Este es un registro de 16 bits que se utiliza para acceder a PMEM y XRAM.
Palabra de estado del programa, PSW (0xD0)
Contiene indicadores de estado importantes, por número de bit:
  1. Paridad, P. Da la paridad ( XOR de los bits) del acumulador, A.
  2. Definido por el usuario, UD. Puede leerse y escribirse mediante software; no se ve afectado de ninguna otra forma por el hardware.
  3. Indicador de desbordamiento , OV. Se establece cuando la suma produce un desbordamiento con signo.
  4. Selección de registro 0, RS0. El bit de orden inferior del banco de registros. Se establece cuando los bancos 0x08 o 0x18 están en uso.
  5. Selección de registro 1, RS1. El bit de orden superior del banco de registros. Se establece cuando los bancos 0x10 o 0x18 están en uso.
  6. Bandera 0, F0. Puede leerse y escribirse mediante software; no se ve afectada de ninguna otra forma por el hardware.
  7. Acarreo auxiliar , CA. Se activa cuando la suma produce un acarreo del bit 3 al bit 4.
  8. Bit de acarreo , C. A menudo se utiliza como registro general para cálculos de bits, o "acumulador booleano".
Acumulador, A (0xE0)
Este registro es utilizado por la mayoría de las instrucciones.
Registro B (0xF0)
Esto se utiliza como una extensión del acumulador para instrucciones de multiplicación y división.

Se pueden direccionar directamente 256 bits individuales. Se trata de las 16 ubicaciones IRAM de 0x20 a 0x2F y los 16 registros de funciones especiales 0x80, 0x88, 0x90, ..., 0xF8. Se puede acceder directamente a cualquiera de estos bits mediante una variedad de operaciones lógicas y ramificaciones condicionales.

Tenga en cuenta que el PSW no contiene los indicadores comunes negativo (N) o cero (Z) . Para el primero, el bit más significativo del acumulador se puede direccionar directamente, ya que es un SFR direccionable por bits. Para el último, hay instrucciones explícitas para saltar si el acumulador es cero o no. También hay una operación de comparación y salto de dos operandos.

El bit de paridad (P) se utiliza a menudo para implementar modos seriales que incluyen paridad. Para ello, los UART MCS51 estándar podrían enviar 9 bits.

Microarquitectura

La microarquitectura del Intel MCS8051 es propietaria, pero las características publicadas [21] sugieren cómo funciona. Es un procesador multiciclo . El MCS8051 usaba 12 ciclos de reloj [21] para la mayoría de las instrucciones. Muchas instrucciones utilizan un acumulador. [21] En contraste, la mayoría de las computadoras compatibles ejecutan instrucciones en uno a tres ciclos, excepto las instrucciones de multiplicación y división. La velocidad mucho más alta es una razón importante por la que estos han reemplazado al MCS8051 en la mayoría de las aplicaciones.

Cada interrupción tiene cuatro prioridades. [21] Dentro de cada prioridad, las interrupciones de los dispositivos tienen una prioridad fija. [21]

Conjunto de instrucciones

Las instrucciones tienen una longitud de entre 1 y 3 bytes y constan de un byte de código de operación inicial, seguido de hasta 2 bytes de operandos.

14 de los bytes del código de operación, x 0– x 3 , se utilizan para códigos de operación irregulares.

34 de los bytes del código de operación, x 4– x F , se asignan a 16 instrucciones ALU básicas con 12 operandos posibles. El nibble menos significativo del código de operación selecciona el operando principal de la siguiente manera:

El nibble más significativo especifica la operación de la siguiente manera. No todos admiten todos los modos de direccionamiento; el modo inmediato en particular no está disponible cuando se escribe en el operando principal. Los mnemónicos de instrucción utilizan el orden de los operandos de destino y origen .

0 años :INC operand
Incrementa el operando especificado. El modo inmediato (código de operación 0x04) especifica el acumulador .INC A
1 año :DEC operand
Disminuye el operando especificado. El modo inmediato (código de operación 0x14) especifica el acumulador .DEC A
2 años :ADD A,operand
Agregue el operando al acumulador, A. El código de operación 0x23 ( , "rotar a la izquierda" pero en realidad un desplazamiento a la izquierda ) puede considerarse como .RL AADD A,A
3 años :ADDC A,operand
Agregue el operando, más el bit C, al acumulador. El código de operación 0x33 ( , rotar a la izquierda mediante acarreo) puede considerarse como .RLC AADDC A,A
4 años :ORL A,operand
El operador OR lógico introduce el operando en el acumulador. Los códigos de operación 0x43 y 0x42 especifican dos formas de destino de memoria de esta operación, y .ORL address,#dataORL address,A
5 años :ANL A,operand
AND lógico del operando en el acumulador. Dos formas de destino de memoria de esta operación, y , se especifican mediante los códigos de operación 0x53 y 0x52.ANL address,#dataANL address,A
6 años :XRL A,operand
Operación lógica O exclusiva del operando en el acumulador. Los códigos de operación 0x63 y 0x62 especifican dos formas de destino de memoria de esta operación, y .XRL address,#dataXRL address,A
7 años :MOV operand,#data
Mueve lo inmediato al operando. El modo inmediato (código de operación 0x74) especifica el acumulador .MOV A,#data
8 años :MOV address,operand
Mueve el valor a un registro IRAM o SFR. El modo inmediato (código de operación 0x84) no se utiliza para esta operación, ya que duplica el código de operación 0x75.
9 años :SUBB A,operand
Restar el operando del acumulador. Esta operación toma prestado y no hay resta sin préstamo.
A y :MOV operand,address
Mueve el valor de un registro IRAM o SFR. No se utiliza el modo inmediato (código de operación 0xA4), ya que los registros inmediatos solo sirven como fuentes. No se utiliza el modo directo de memoria (código de operación 0xA5), ya que duplica el 0x85.
Por :CJNE operand,#data,offset
Comparar el operando con el inmediato #datay saltar a PC + desplazamiento si no es igual. Los modos directos de memoria e inmediato (códigos de operación 0xB4 y 0xB5) comparan el operando con el acumulador, . Tenga en cuenta que no hay instrucción de comparación y salto si es igual, .CJNE A,operand,offsetCJE
C y :XCH A,operand
Intercambie el acumulador y el operando. El modo inmediato (código de operación 0xC4) no se utiliza para esta operación.
D y :DJNZ operand,offset
Disminuye el operando y salta a PC + desplazamiento si el resultado no es cero. No se utilizan el modo inmediato (código de operación 0xD4) ni el modo indirecto de registro (0xD6, 0xD7).
:MOV A,operand
Mueve el operando al acumulador. El modo inmediato no se utiliza para esta operación (código de operación 0xE4), ya que duplica el código de operación 0x74.
Para y :MOV operand,A
Mueve el acumulador al operando. No se utiliza el modo inmediato (código de operación 0xF4), ya que no tendría ningún efecto.

Solo las ADDinstrucciones ADDC, y SUBBestablecen indicadores PSW. Las INCinstrucciones DEClógicas , y no lo hacen. La CJNEinstrucción modifica solo el bit C, hasta el préstamo que resulta de operand1operand2 .

Las instrucciones irregulares comprenden 64 códigos de operación, que tienen modos de direccionamiento más limitados, además de varios códigos de operación recuperados de modos inaplicables en las instrucciones regulares.

85
MOV address,addressmoverse directamente entre dos registros IRAM o SFR.
A5
No usado
B5
CJNE A,address,offsetcomparar el acumulador con un registro IRAM o SFR y saltar a PC + desplazamiento si no es igual.
D6–7
XCHD A,@R01intercambiar nibble de operandos de orden bajo.

El SJMPcódigo de operación (salto corto) toma un operando de byte de desplazamiento relativo con signo y transfiere el control allí en relación con la dirección de la siguiente instrucción. Los códigos de operación AJMP/ ACALLcombinan los tres bits más significativos del byte del código de operación con el byte siguiente para especificar un destino de 11 bits que se utiliza para reemplazar los 11 bits inferiores del registro PC (los 5 bits superiores del registro PC permanecen intactos). Para direcciones más grandes, las instrucciones LJMPy LCALLpermiten un destino de 16 bits.

Una de las razones de la popularidad del 8051 es su gama de operaciones sobre bits individuales. Los bits siempre se especifican mediante direcciones absolutas; no hay direccionamiento indirecto de registros ni indexado. Las instrucciones que operan sobre bits individuales son:

Un operando de bit se escribe en la forma address.number. Debido a que el indicador de acarreo es el bit 7 de la palabra de estado del programa direccionable por bit, las instrucciones , y son equivalentes más cortos a , y .SETB CCLR CCPL CSETB PSW.7CLR PSW.7CPL PSW.7

Programación

Hay varios compiladores de lenguajes de programación de alto nivel para el 8051. Hay varios compiladores de C disponibles para el 8051, la mayoría de los cuales permiten al programador especificar dónde se debe almacenar cada variable en sus seis tipos de memoria y proporcionan acceso a características de hardware específicas del 8051, como los bancos de registros múltiples y las instrucciones de manipulación de bits. Hay muchos compiladores de C comerciales. [22] Small Device C Compiler (SDCC) es un compilador de C de código abierto popular. [23] Otros lenguajes de alto nivel como C++ , Forth , [24] [25] [26] [27] BASIC , Object Pascal , Pascal , PL/M y Modula-2 están disponibles para el 8051, pero son menos utilizados [28] que C y assembly .

Debido a que IRAM, XRAM y PMEM (sólo lectura) tienen todas una dirección 0, los compiladores de C para la arquitectura 8051 proporcionan pragmas específicos del compilador u otras extensiones para indicar dónde se debe almacenar una pieza particular de datos (es decir, constantes en PMEM o variables que necesitan un acceso rápido en IRAM). Dado que los datos pueden estar en uno de tres espacios de memoria, generalmente se proporciona un mecanismo para permitir determinar a qué memoria se refiere un puntero, ya sea restringiendo el tipo de puntero para que incluya el espacio de memoria o almacenando metadatos con el puntero.

Procesadores relacionados

Microcontroladores Intel 8031
Microcontrolador Intel D87C51

Intel discontinuó su línea de productos MCS-51 en marzo de 2007; [29] [30] sin embargo, hay muchos productos 8051 mejorados o propiedad intelectual de silicio agregada regularmente por otros proveedores.

El predecesor del 8051, el 8048 , se utilizó en el teclado del primer IBM PC , donde convertía las pulsaciones de teclas en un flujo de datos en serie que se enviaba a la unidad principal del ordenador. Un Intel 8049 cumplía una función similar en el Sinclair QL . El 8048 y sus derivados todavía se utilizan hoy en día para los teclados de modelos básicos.

El 8031 ​​era una versión reducida del 8051 original que no tenía memoria de programa interna ( memoria de solo lectura , ROM). Para utilizar este chip, se debía agregar una ROM externa que contuviera el programa que el 8031 ​​buscaría y ejecutaría. Un chip 8051 podía venderse como un 8031 ​​sin ROM, ya que la ROM interna del 8051 está deshabilitada por el estado normal del pin EA en un diseño basado en 8031. Un vendedor podría vender un 8051 como un 8031 ​​por diversas razones, como un código defectuoso en la ROM del 8051 o simplemente un exceso de oferta de 8051 y una oferta insuficiente de 8031.

Microcontrolador Intel P8044AH

El 8044 (así como el 8344 sin ROM y el 8744 con EPROM) agregaron un controlador SDLC al núcleo 8051 (especialmente para aplicaciones Bitbus ). [31]

El 8052 era una versión mejorada del 8051 original que incluía 256 bytes de RAM interna en lugar de 128 bytes, 8 KB de ROM en lugar de 4 KB y un tercer temporizador de 16 bits. La mayoría de los microcontroladores modernos compatibles con el 8051 incluyen estas características.

El 8032 tenía las mismas características que el 8052 excepto que carecía de memoria de programa ROM interna.

El 8751 era un 8051 con 4 KB de EPROM en lugar de 4 KB de ROM. Eran idénticos, excepto por el tipo de memoria no volátil. Esta pieza estaba disponible en un encapsulado cerámico con una ventana de cuarzo transparente sobre la parte superior de la matriz para que se pudiera utilizar luz ultravioleta para borrar la EPROM . Las piezas relacionadas son: el 8752 tenía 8 KB de EPROM, el 8754 tenía 16 KB de EPROM y el 8758 tenía 32 KB de EPROM.

El 80C537 (sin ROM) y el 80C517 (ROM de 8 KB) son versiones CMOS diseñadas para la industria automotriz . Las mejoras incluyen principalmente periféricos nuevos y mejorados. El 80C5x7 tiene mecanismos a prueba de fallos, funciones de procesamiento de señales analógicas, capacidades de temporizador mejoradas y un periférico aritmético de 32 bits. Otras características incluyen:

Proveedores de derivados

Más de 20 fabricantes independientes producen procesadores compatibles con MCS-51. [ cita requerida ]

Analog Devices , [32] Integral Minsk , [33] Kristall Kyiv , [34] y NIIET Voronezh han desarrollado otros circuitos integrados o IP compatibles con el MCS-51 . [13]

Utilizar como propiedad intelectual

Hoy en día, los 8051 todavía están disponibles como partes discretas, pero se utilizan principalmente como núcleos de propiedad intelectual de silicio . [35] Disponibles en código fuente de lenguaje de descripción de hardware (como VHDL o Verilog ) o en formas de lista de conexiones FPGA , estos núcleos suelen estar integrados en sistemas integrados, en productos que van desde unidades flash USB hasta lavadoras y sistemas de comunicación inalámbrica complejos en un chip . Los diseñadores utilizan núcleos de propiedad intelectual de silicio 8051 debido a su menor tamaño y menor consumo de energía, en comparación con los procesadores de 32 bits como la serie ARM Cortex-M , MIPS y BA22. [ cita requerida ]

Los núcleos 8051 modernos son más rápidos que las versiones empaquetadas anteriores. Las mejoras de diseño han aumentado el rendimiento del 8051 al tiempo que conservan la compatibilidad con el conjunto de instrucciones MCS 51 original. El Intel 8051 original funcionaba a 12 ciclos de reloj por ciclo de máquina, y la mayoría de las instrucciones se ejecutaban en uno o dos ciclos de máquina. Una frecuencia de reloj máxima típica de 12 MHz significaba que estos antiguos 8051 podían ejecutar un millón de instrucciones de un solo ciclo, o 500.000 instrucciones de dos ciclos, por segundo. En cambio, los núcleos IP de silicio 8051 mejorados ahora funcionan a un ciclo de reloj por ciclo de máquina y tienen frecuencias de reloj de hasta 450 MHz. Eso significa que un procesador compatible con 8051 ahora puede ejecutar 450 millones de instrucciones por segundo.

MCU basados ​​en 8051

Tecnología de almacenamiento de silicio 89V54RD2

Variantes del procesador de señal digital (DSP)

Existen varias variantes con un procesador de señal digital (DSP) adicional de 16 bits (por ejemplo, para codificación/decodificación de MP3 o Vorbis ) con hasta 675 millones de instrucciones por segundo (MIPS) [45] e interfaz USB 2.0 integrada [46] o como propiedad intelectual [47] .

Microcontrolador compatible con binario de 8 bits mejorado: familia MCS-151

En 1996, Intel anunció la familia MCS-151, una variante hasta 6 veces más rápida [3] que es totalmente compatible con el conjunto de instrucciones y el sistema binario del 8051. A diferencia de su 8051, el MCS-151 es una CPU segmentada, con un bus de código interno de 16 bits y es 6 veces más rápido. Intel también dejó de fabricar la familia MCS-151, pero está ampliamente disponible en variantes compatibles con el sistema binario y parcialmente mejoradas.

Microcontrolador compatible con binarios de 8/16/32 bits: familia MCS-251

El microcontrolador 80251 de 8/16/32 bits con espacio de direcciones de 16 MB ( 24 bits ) y un ciclo de instrucciones 6 veces más rápido fue presentado por Intel en 1996. [3] [48] Puede funcionar como un 8051 de 8 bits, tiene direccionamiento lineal de 24 bits , una ALU de 8 bits, instrucciones de 8 bits, instrucciones de 16 bits, un conjunto limitado de instrucciones de 32 bits, 16 registros de 8 bits, 16 registros de 16 bits (8 registros de 16 bits que no comparten espacio con ningún registro de 8 bits y 8 registros de 16 bits que contienen 2 registros de 8 bits por registro de 16 bits) y 10 registros de 32 bits (2 registros dedicados de 32 bits y 8 registros de 32 bits que contienen 2 registros de 16 bits por registro de 32 bits). [49]

Cuenta con instrucciones extendidas [50] –ver también la guía del programador [51] – y variantes posteriores con mayor rendimiento, [52] también disponibles como propiedad intelectual (PI). [53] Tiene un pipeline de 3 etapas. La familia MCS-251 también fue descontinuada por Intel, pero está ampliamente disponible en variantes compatibles con binarios y parcialmente mejoradas de muchos fabricantes.

Véase también

Referencias

  1. ^ John Wharton (mayo de 1980). "Introducción a la familia de microcomputadoras de un solo chip Intel MCS-51". Intel Corporation. Nota de aplicación AP-69.
  2. ^ Panel de historia oral del microprocesador Intel 8051 (PDF) , Computer History Museum , 16 de septiembre de 2008, archivado desde el original (PDF) el 25 de febrero de 2012 , consultado el 17 de noviembre de 2018
  3. ^ abc "Microcontroladores Intel MCS 151 y MCS 251". datasheets.chipdb.org .
  4. ^ John Wharton (mayo de 1980). "Uso de las capacidades de procesamiento booleano de Intel MCS-51" (PDF) . Intel Corporation. Nota de aplicación AP-70. Archivado desde el original (PDF) el 3 de marzo de 2016.
  5. ^ "Tutorial 8051: Interrupciones". Archivado desde el original el 28 de diciembre de 2012. Consultado el 21 de diciembre de 2012 .
  6. ^ "TAREAS". www.tasking.com .
  7. ^ ab "Microcontroladores de 8 bits - MCU de 8 bits - EFM8 - Silicon Labs". www.silabs.com . Consultado el 21 de junio de 2021 .
  8. ^ "Búsqueda en el sitio | Maxim Integrated". www.maximintegrated.com . Consultado el 21 de junio de 2021 .
  9. ^ ab "MCU 8051 | Tecnología de Microchip". www.microchip.com . Consultado el 21 de junio de 2021 .
  10. ^ "Microcontrolador TK80H51 250°C". Tekmos Inc. Archivado desde el original el 20 de agosto de 2017 . Consultado el 23 de agosto de 2017 .
  11. ^ "MICROCONTROLADOR DE ALTA TEMPERATURA 83C51" (PDF) . Honeywell . Consultado el 23 de agosto de 2017 .
  12. ^ "Microcontroladores y microprocesadores". Cobham Semiconductor Solutions. Archivado desde el original el 23 de agosto de 2017. Consultado el 23 de agosto de 2017 .
  13. ^ ab "Микроконтроллеры" [Microcontroladores] (en ruso). Vorónezh: OAO "NIIET". Archivado desde el original el 22 de agosto de 2017 . Consultado el 22 de agosto de 2017 .
  14. ^ "Enlace de descarga Youtube: ELEC2700 - Radar ultrasónico 8051". Archivado desde el original el 2017-08-22 . Consultado el 2017-08-22 .
  15. ^ Archivado en Ghostarchive y Wayback Machine: "ELEC2700 Tarea 1 2014: 1D Pong". YouTube .
  16. ^ "ELEC2700 - Ingeniería informática 2 - Universidad de Newcastle - Libros de texto | Zookal.com". www.zookal.com .
  17. ^ "ELEC2700 Tarea 3: Radar ultrasónico" (PDF) . justanswer.com . 29 de junio de 2012 . Consultado el 30 de abril de 2023 .
  18. ^ abc Manual del usuario de Keil C51. Keil, una división de ARM Inc. 2021. Consultado el 17 de mayo de 2021 .
  19. ^ ACALL es una instrucción de llamada a subrutina de 2 bytes que puede acceder a ubicaciones dentro del mismo  segmento de memoria de 2 KB. La dirección de memoria absoluta está formada por los 5 bits superiores de la PC y los 11 bits definidos por la instrucción.
  20. ^ ab "Ficha técnica de Silergy 71M6513". Circuitos integrados de medición de electricidad de Silergy . Silergy Corp. Consultado el 17 de mayo de 2021 .
  21. ^ abcde Manual del usuario de la familia de microcontroladores MCS-51 (PDF) . número de publicación 121517: Intel. 1994 . Consultado el 17 de mayo de 2021 .{{cite book}}: Mantenimiento de CS1: ubicación ( enlace )
  22. ^ Han-Way Huang. "Diseño de sistemas integrados con C8051". pág. 238.
  23. ^ Lewin ARW Edwards (2006). Entonces, ¿quieres ser un ingeniero integrado?: La guía para la ingeniería integrada, desde la consultoría hasta la escalera corporativa. p. 51.
  24. ^ Bradford J. Rodríguez. "CamelForth/8051".
  25. ^ Brad Rodríguez. "Avanzando Parte 7: CamelForth para el 8051".
  26. ^ "Desarrollo del SwiftX Forth 8051". Archivado desde el original el 24 de septiembre de 2015.
  27. ^ "Compiladores cruzados de MPE VFX Forth 7". Archivado desde el original el 23 de octubre de 2014.
  28. ^ Agarwal, Tarun (16 de septiembre de 2014). "Explicación detallada sobre la programación 8051 en lenguaje ensamblador". ElProCus - Proyectos electrónicos para estudiantes de ingeniería . Consultado el 21 de octubre de 2024 .
  29. ^ Ganssle, Jack (29 de mayo de 2006). "Intel se retira y descontinúa el MCS-51".
  30. ^ "Líneas de productos de microcontroladores MCS 51, MCS 251 y MCS 96, líneas de productos de procesadores Intel 186, Intel386 e Intel486 y procesador RISC de 32 bits i960, PCN 106013-01, discontinuación del producto, motivo de la revisión: agregar información clave y revisar la descripción del cambio" (PDF) . Intel. 2 de mayo de 2006.
  31. ^ "Microcontrolador de 8 bits de alto rendimiento 8044AH/8344AH/8744AH con controlador de comunicación en serie integrado" (PDF) . Intel. Octubre de 1994.
  32. ^ "MicroConverter, ADC y DAC de 12 bits con MCU Flash de 62 kB integrado" (PDF) . analog.com . Archivado desde el original (PDF) el 28 de mayo de 2014 . Consultado el 30 de abril de 2023 .
  33. ^ "Микроконтроллеры и супервизоры питания Серии 1880; 1881; 1842; 588; 1345; 5518АП1ТБМ" [Microcontroladores y supervisores de energía Serie 1880; 1881; 1842; 588; 1345; 5518AP1TBM] (en ruso). Minsk: OAO "Integral". Archivado desde el original el 1 de enero de 2017 . Consultado el 6 de enero de 2017 .
  34. ^ "Одконристальные микро-эвм" [Microcomputadoras de un solo chip] (en ruso). Kyiv: Kristall. Archivado desde el original el 30 de mayo de 2012 . Consultado el 5 de enero de 2017 .
  35. ^ Hussaini (20 de agosto de 2019). "¿Por qué tenemos que usar el 8051? ¿No es demasiado antiguo?". Technobyte . Consultado el 5 de julio de 2023 .
  36. ^ "PSoC 3 - Infineon Technologies". Infineon . Archivado desde el original el 2022-09-21 . Consultado el 2023-05-20 .
  37. ^ "Microcontroladores de alta velocidad y bajo consumo DS80C320 - Maxim Integrated" www.maximintegrated.com . Consultado el 21 de junio de 2021 .
  38. ^ "Syntill8 - Productos". www.syntill8.com . Consultado el 21 de junio de 2021 .
  39. ^ "Ficha técnica SDA30C164" (PDF) . www.semiee.com . Archivado desde el original (PDF) el 2022-06-17 . Consultado el 2022-05-15 .
  40. ^ "CI de medición de Silergy". Silergy Corp. Recuperado el 12 de mayo de 2021 .
  41. ^ "Silergy Energy Measurement ICs" (CI de medición de energía de Silergy). Silergy Corp. Consultado el 12 de mayo de 2021 .
  42. ^ datasheetq.com. "Descarga de la hoja de datos en formato PDF de 89V54RD2: tecnología de almacenamiento de silicio". www.datasheetq.com . Consultado el 18 de enero de 2020 .
  43. ^ "Microcontrolador STC---STCmicro Technology Co., Ltd." www.stcmicro.com . Consultado el 19 de febrero de 2017 .
  44. ^ "Índice del sitio - Nanjing Qinheng Microelectronics Co., Ltd". wch-ic.com . Consultado el 21 de junio de 2021 .
  45. ^ "TI ofrece un nuevo procesador digital de audio de bajo costo y alto rendimiento para el hogar y el automóvil con el modelo 8051". Archivado desde el original el 13 de noviembre de 2016. Consultado el 6 de mayo de 2013 .
  46. ^ "Hoja de datos del DSP de audio Atmel AT85C51SND3 con USB 2.0" (PDF) . Consultado el 30 de abril de 2023 .
  47. ^ Salim, AJ; Othman, M.; Ali, MA Mohd (5 de octubre de 2006). "Integración de 8051 con DSP en FPGA Xilinx". Conferencia internacional IEEE de 2006 sobre electrónica de semiconductores . págs. 562–566. doi :10.1109/SMELEC.2006.380694. ISBN 0-7803-9730-4. S2CID  21616742 – vía IEEE Xplore.
  48. ^ Kenneth J Ayala. El microcontrolador 8051.
  49. ^ "Descripción general de la arquitectura de MCSÉ 251" (PDF) . chipdb.org . Consultado el 30 de abril de 2023 .
  50. ^ "Arquitectura Temic TSC80251" (PDF) .
  51. ^ "Guía del programador Atmel TSC80251" (PDF) . Archivado desde el original (PDF) el 2016-03-04 . Consultado el 2013-05-06 .
  52. ^ "Microcontrolador DQ80251 de 32 bits" (PDF) . DCD .
  53. ^ "Microcontrolador R80251XC de 32 bits" (PDF) . Evatronix .[ enlace muerto ]

Lectura adicional

Libros
Intel
Varios

Enlaces externos

Medios relacionados con MCS-51 en Wikimedia Commons