Lectura de código en MCU Intel
Intel Corporation es una empresa multinacional estadounidense fabricante de chips semiconductores, con sede en Santa Clara, California. Intel es el fabricante de chips semiconductores más grande del mundo y el de mayor valor, según sus ingresos. Es el inventor de la serie x86 de microprocesadores, los procesadores que se encuentran en la mayoría de las computadoras personales. Intel Corporation, fundada el 18 de julio de 1968, es un acrónimo de Integrated Electronics (el hecho de que "intel" sea el término para información de inteligencia también era bastante adecuado). Intel también fabrica chipsets para placas base, controladores de interfaz de red y circuitos integrados, memoria flash, chips gráficos, procesadores integrados y otros dispositivos relacionados con las comunicaciones y la informática. Fundada por los pioneros de los semiconductores Robert Noyce y Gordon Moore, y ampliamente asociada con el liderazgo ejecutivo y la visión de Andrew Grove, Intel combina una capacidad de diseño de chips avanzada con una capacidad de fabricación de vanguardia. Aunque Intel era conocida principalmente por ingenieros y tecnólogos, su campaña publicitaria "Intel Inside" de la década de 1990 la convirtió a ella y a su procesador Pentium en nombres familiares.
- Lista de ingeniería inversa de MCU Intel de Mikatech:
-
2.png" width="266" height="228" border="0" class="imageFloatRight">Extracción de código de MCU serie 87xx: 8741 8741AH 8742 8742AH 8744 8744H 8748 8748H 8749 8749H 8751 8751BH 8751H 8751H-8 87551SB 8752BH 8796BH 8796JF 8797BH 8797JF 8798 ...
Extracción de código de MCU serie 87Cxx: 87C151SA 87C151SB 87C194 87C196CA 87C196JQ 87C196JR 87C196JT 87C196JV 87C196KB 87C196KC 87C196KD 87C196KQ 87C196KR 87C196KS 87C196KT 87C196LA 87C196MC 87C196MH 87C198 87C251SA 87C251SB 87C251SP 87C251SQ 87C42 87C51 87C51FA 87C51FB 87C51FC 87C51GB 87C51RA 87C51RB 87C51RC 87C52 87C54 87C58 D87C51 D87C151SA D87C151SB D87C194 D87C198 D87C251SA D87C251SP D87C251SQ D87C196CA D87C42 D87C51FA D87C51FB D87C51FC D87C251SB D87C51RA D87C196JQ D87C196JR D87C196JT D87C196JV D87C196KR D87C196KS D87C196KT D87C196LA D87C51RB D87C51RC D87C52 D87C54 D87C51GB D87C58 D87L42 D87L51FA D87L51FB D8751BH D87L51FC D87L52 D87L54 8749 D87L58 D8741 D8741AH D8742 DD8749H D8742AH D8744 D8744H D8748 D8751 8D748H D8751H D8751H-8 D8752BH D8798 D8796BH D8796JF D8797BH D8797JF D87C196MC D87C196MH D87C251SA...
Recuperación de código de microprocesador serie 87Lxx: 87L42 87L51FA 87L51FB 87L51FC 87L52 87L54 87L58 ...
Extracción de código de MCU serie D87Cxx: D87C51 D87C52 D87C54 D87C58 D87C51FA D87C51FB D87C51FC D87C196KC D87C196MC D87C196MD D87C196MH D89C196MD...
Intel MCS-51
El Intel MCS-51 (comúnmente conocido como 8051) es una arquitectura Harvard, conjunto de instrucciones CISC, microcontrolador (µC) de un solo chip que fue desarrollado por Intel en 1980 para su uso en sistemas embebidos. Las versiones originales de Intel fueron populares en las décadas de 1980 y principios de 1990, y los derivados compatibles binarios mejorados siguen siendo populares hoy en día.
La familia original MCS-51 de Intel se desarrolló con tecnología NMOS, pero las versiones posteriores, identificadas por una letra C en su nombre (por ejemplo, 80C51), usaban tecnología CMOS y consumían menos energía que sus predecesoras NMOS. Esto las hacía 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 microcontroladores binarios compatibles de 8/16/32 bits. Aunque Intel ya no fabrica las familias MCS-51, MCS-151 y MCS-251, los derivados compatibles binarios mejorados de numerosos proveedores siguen siendo populares hoy en día. Algunos derivados integran un procesador digital de señales (DSP). Además de estos dispositivos físicos, varias compañías ofrecen derivados MCS-51 como núcleos de propiedad intelectual para su uso en diseños FPGA o ASIC.
Microarquitectura i8051.
La arquitectura 8051 proporciona muchas funciones (CPU, RAM, ROM, E/S, lógica de interrupción, temporizador, etc.) en un solo paquete.
ALU y acumulador de 8 bits, registros de 8 bits (un registro de 16 bits con instrucciones de movimiento especiales), bus de datos de 8 bits y bus de direcciones de 2x16 bits / contador de programa / puntero de datos y operaciones relacionadas de 8/11/16 bits; por lo tanto, es principalmente un microcontrolador de 8 bits.
Procesador booleano con 17 instrucciones, acumulador de 1 bit, recuperación de volcado 32 registros (4 de 8 bits direccionables por bit) y hasta 144 variables RAM direccionables de 1 bit especiales (18 de 8 bits direccionables por bit).
Instrucciones de multiplicación, división y comparación.
4 bancos de registros conmutables rápidos con 8 registros cada uno (mapeados en memoria).
Interrupción rápida con conmutación de banco de registros opcional.
Interrupciones y hebras con prioridad seleccionable.
Bus de direcciones dual de 16 bits: puede acceder a 2 x 216 ubicaciones de memoria – 64 kB (65536 ubicaciones) cada uno de RAM y ROM.
128 bytes de RAM interna (IRAM).
4 KiB de ROM interna, con un espacio de direcciones de 16 bits (64 KiB) (PMEM). No incluido en las variantes 803X.
Cuatro puertos de entrada/salida bidireccionales de 8 bits.
UART (puerto serie).
Dos contadores/temporizadores de 16 bits.
Modo de ahorro de energía (en algunos derivados).
Una característica particularmente útil del núcleo 8051 es la inclusión de un motor de procesamiento booleano que permite realizar operaciones lógicas booleanas a nivel de bit de manera directa y eficiente en registros internos seleccionados y ubicaciones RAM seleccionadas. Esta característica ventajosa ayudó a consolidar la popularidad del 8051 en aplicaciones de control industrial porque redujo el tamaño del código hasta en un 30% [cita requerida]. Otra característica valorada [cita requerida] es la inclusión de cuatro conjuntos de registros de trabajo seleccionables por banco que reducen enormemente el tiempo necesario para completar una rutina de servicio de interrupción. Con una sola instrucción, el 8051 puede cambiar de banco de registros en lugar de la tarea que consume tiempo de transferir los registros críticos a la pila o a ubicaciones RAM designadas. Estos registros también permitieron al 8051 realizar rápidamente un cambio de contexto.
Los UART del MCS-51 facilitan el uso del chip como interfaz de comunicaciones serie. Los pines externos se pueden configurar para conectarse a registros de desplazamiento internos de varias maneras, y los temporizadores internos también se pueden usar, lo que permite comunicaciones serie en varios modos, tanto síncronos como asíncronos. Algunos modos permiten comunicaciones sin necesidad de decapsulación externa y recuperación de código, copia del contenido de la memoria criptográfica, lectura de EEPROM y ROM, y obtención de memoria flash. Un modo compatible con un entorno de comunicaciones multipunto RS-485 es alcanzable, pero la verdadera fortaleza del 8051 [opinión editorial] es adaptarse a protocolos ad-hoc existentes (por ejemplo, al controlar dispositivos controlados en serie).
Una vez que se han 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 UART desplaza el último bit y/o vaciar el registro de desplazamiento de recepción completo (copiar los datos a otro lugar). El programa principal entonces realiza lecturas y escrituras serie simplemente leyendo y escribiendo datos de 8 bits en las pilas.
Los microcontroladores basados en MCS-51 típicamente incluyen 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 bit), hasta 128 bytes de E/S, de 512 bytes a 64 kB de memoria de programa flash interna, y a veces una cantidad de RAM de datos extendida (ERAM) ubicada en el espacio de datos externo. El núcleo original 8051 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. Ahora se utilizan comúnmente núcleos 8051 mejorados que funcionan a seis, cuatro, dos o incluso un ciclo de reloj por ciclo de máquina, y tienen frecuencias de reloj de hasta 100 MHz, y por lo tanto son capaces de un número aún mayor de instrucciones por segundo. Todos los dispositivos SILabs, algunos Dallas y algunos Atmel tienen núcleos de un solo ciclo.
Las variantes 8051 incluyen temporizadores de reinicio integrados con detección de caída de tensión, osciladores internos, memoria de programa Flash autoprogramable, RAM externa incorporada, almacenamiento de programa interno adicional, código de arranque en ROM, almacenamiento de datos no volátil EEPROM, interfaces I²C, SPI y USB host, buses CAN o LIN, generadores PWM, comparadores analógicos, convertidores A/D y D/A, RTC, contadores y temporizadores adicionales, instalaciones de depuración en circuito, más fuentes de interrupción y modos de ahorro de energía adicionales.
En muchas escuelas de ingeniería, el microcontrolador 8051 se utiliza en cursos introductorios de microcontroladores.
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.
La RAM interna (IRAM) se encuentra desde la dirección 0 hasta la dirección 0xFF. La IRAM de 0x00 a 0x7F se puede acceder directamente. La IRAM de 0x80 a 0xFF debe accederse indirectamente, usando la sintaxis @R0 o @R1, con la dirección a cargar en R0 o R1. Los 128 bits en las ubicaciones IRAM 0x20–0x2F son direccionables por bit.
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 directamente usando las mismas instrucciones que para la mitad inferior de la IRAM. No se puede acceder indirectamente a través de @R0 o @R1. 16 de los SFR también son direccionables por bit.
La memoria de programa (PMEM, aunque menos común en uso que IRAM y XRAM) es de hasta 64 KiB de memoria de solo lectura, comenzando en la dirección 0 en un espacio de direcciones separado. Puede estar dentro o fuera del chip, dependiendo del modelo particular del chip utilizado. La memoria de programa es de solo lectura, aunque algunas variantes del 8051 usan memoria flash interna 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 en la memoria de programa, accedidos mediante la instrucción MOVC A, @DPTR. Los datos se obtienen de la dirección especificada en el registro de funciones especiales DPTR de 16 bits.
La memoria de datos externa (XRAM) es un tercer espacio de direcciones, también comenzando en la dirección 0. También puede estar dentro o fuera del chip; lo que la hace "interna" es que se debe acceder mediante la instrucción MOVX (Move eXternal). Muchas variantes del 8051 incluyen los 256 bytes estándar de IRAM más unos pocos kB de XRAM en el chip.
El 8051 está diseñado como una arquitectura Harvard estricta. El 8051 solo puede ejecutar código obtenido de la memoria de programa. El 8051 no tiene ninguna instrucción para escribir en la memoria de programa. La mayoría de los sistemas 8051 respetan esta distinción y, por lo tanto, no pueden descargar y ejecutar directamente nuevos programas. La arquitectura Harvard estricta tiene la ventaja de hacer que dichos sistemas sean inmunes a la mayoría de las formas de malware. Algunos sistemas 8051 tienen (o pueden modificarse para tener) algo de RAM "de doble mapeo", lo que los hace actuar un poco más como una arquitectura Princeton. Esta arquitectura Princeton (parcial) tiene la ventaja de hacer posible que un cargador de arranque Forth que se ejecute en el 8051 escriba nuevo código nativo en la RAM y luego lo ejecute, lo que lleva a ciclos de programación interactivos e incrementales más rápidos que los sistemas Harvard estrictos.
Registros
El único registro en un 8051 que no está mapeado en memoria es el contador de programa PC de 16 bits. Este especifica la dirección de la siguiente instrucción a ejecutar. Las instrucciones de salto relativo proporcionan un desplazamiento con signo de 8 bits que se suma al PC.
Los siguientes registros están mapeados en memoria en el espacio de registros de funciones especiales:
(0x81) Puntero de pila SP. Es un registro de 8 bits utilizado por las instrucciones de llamada y retorno de subrutina. La pila crece hacia arriba; el SP se incrementa antes de apilar, y se decrementa después de desapilar un valor.
(0x82–83) Puntero de datos DP. Es un registro de 16 bits que se utiliza para acceder a PMEM y XRAM.
(0xD0) Palabra de estado del programa PSW. Contiene importantes banderas de estado:
PSW.0: P Paridad. Da la paridad (suma módulo-2 de los bits) del resultado más reciente de la ALU.
PSW.1: UD Definido por el usuario. Para uso general del software, no utilizado por el hardware.
PSW.2: OV Desbordamiento con signo. Se establece cuando la suma produce un desbordamiento con signo.
PSW.3: RS0 Selección de registro 0. El bit de orden bajo del banco de registros. Se establece cuando los bancos en 0x08 o 0x18 están en uso.
PSW.4: RS1 Selección de registro 1. El bit de orden alto del banco de registros. Se establece cuando los bancos en 0x10 o 0x18 están en uso.
PSW.5: F0 Bandeera 0. Para uso general del software, no utilizado por el hardware.
PSW.6: AC Acarreo auxiliar. Se establece cuando la suma produce un acarreo del bit 3 al bit 4.
PSW.7: C Bit de acarreo.
(0xE0) Acumulador A. Este registro es utilizado por la mayoría de las instrucciones.
(0xF0) Registro B. Se utiliza como extensión del acumulador para instrucciones de multiplicación y división.
Además, hay 8 registros de propósito general R0–R7, mapeados en IRAM entre 0x00 y 0x1F. Solo se utilizan 8 bytes de ese rango en un momento dado, determinados por los bits de selección de banco en el PSW.
256 bits individuales son directamente direccionables. Estos son las 16 ubicaciones IRAM de 0x20–0x2F, y los 16 registros de funciones especiales 0x80, 0x88, 0x90, …, 0xF8.
Tenga en cuenta que el PSW no contiene las banderas comunes N (negativo) y Z (cero). En cambio, debido a que el acumulador es un SFR direccionable por bit, es posible bifurcar en bits individuales del mismo, incluido el bit más significativo. También hay una instrucción para saltar si el acumulador es cero o distinto de cero.
Conjunto de instrucciones
Las instrucciones tienen de 1 a 3 bytes de longitud, consistiendo en un byte de código de operación inicial, seguido de hasta 2 bytes de operandos.
Hay 16 instrucciones ALU básicas que operan entre el acumulador y un segundo operando, especificado mediante uno de los siguientes modos de direccionamiento:
Directo de registro, R0–R7 (códigos de operación x8–xF)
Indirecto de registro, @R0 o @R1 (códigos de operación x6 y x7)
Directo de memoria, especificando una ubicación IRAM o SFR (códigos de operación x5, seguido de 1 byte de dirección)
Inmediato, especificando una constante de 8 bits (códigos de operación x4, seguido de 1 byte de datos)
Las instrucciones son las siguientes. No todas admiten todos los modos de direccionamiento; el modo inmediato en particular a veces no tiene sentido:
0y INC operando: Incrementa el operando especificado. El código de operación 04 especifica "INC A"
1y DEC operando: Decrementa el operando especificado. El código de operación 14 especifica "DEC A"
2y ADD A, operando: Suma el operando al acumulador A.
3y ADDC A, operando: Suma el operando, más el bit C, al acumulador.
4y ORL A, operando: OR lógico del operando en el registro A.
5y ANL A, operando: AND lógico del operando en el registro A.
6y XRL A, operando: OR exclusivo lógico del operando en el registro A.
7y MOV operando, #datos: Mueve datos inmediatos al operando. El código de operación 74 especifica "MOV A, #datos".
8y MOV dirección, operando: Mueve datos a un registro IRAM o SFR.
9y SUBB A, operando: Resta el operando del acumulador, con préstamo. Tenga en cuenta que no hay resta sin préstamo.
Ay MOV operando, dirección: Mueve datos de un registro IRAM o SFR. Los códigos de operación A4 y A5 no se utilizan.
By CJNE operando, #datos, desplazamiento: Compara el operando con los datos inmediatos y salta a PC+desplazamiento si no son iguales. Los códigos de operación B4 y B5 realizan CJNE A, operando, desplazamiento, para modos directos de memoria e inmediatos. Tenga en cuenta que no hay instrucción "comparar y saltar si igual".
Cy XCH A, operando: Intercambia (trueca) el acumulador y el operando. El código de operación C4 no se utiliza.
Dy DJNZ operando, desplazamiento: Decrementa el operando y salta a PC+desplazamiento si el resultado no es cero. Los códigos de operación D4, D6 y D7 no se utilizan.
Ey MOV A, operando: Mueve el operando al acumulador. El código de operación E4 no se utiliza. (Use el código de operación 74 en su lugar).
Fy MOV operando, A: Mueve el acumulador al operando. El código de operación F4 no se utiliza.
Solo las instrucciones ADD, ADDC y SUBB establecen las banderas PSW. Las instrucciones INC, DEC y lógicas no lo hacen. Las instrucciones CJNE modifican solo el bit C, al préstamo que resulta de operando1−operando2.
Los 32 códigos de operación 0x00–0x3F, más los pocos códigos de operación no utilizados en el rango anterior, se utilizan para otras instrucciones con capacidades de especificación de operandos más limitadas.
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 existe direccionamiento indirecto por registro o indexado. Las instrucciones que operan sobre bits individuales son:
SETB bit, CLR bit, CPL bit: Establece, limpia o complementa el bit especificado.
JB bit, desplazamiento: Salta si el bit está establecido.
JNB bit, desplazamiento: Salta si el bit está limpio.
JBC bit, desplazamiento: Salta si el bit está establecido y lo limpia.
MOV C, bit, MOV bit, C: Mueve el bit especificado al bit de acarreo, o viceversa.
ORL C, bit, ORL C, /bit: OR del bit (o su complemento) al bit de acarreo.
ANL C, bit, ANL C, /bit: AND del bit (o su complemento) al bit de acarreo.
XRL C, bit, XRL C, /bit: OR exclusivo del bit (o su complemento) al bit de acarreo.
Aunque la mayoría de las instrucciones requieren que un operando sea el acumulador o una constante inmediata, es posible realizar un MOV directamente entre dos ubicaciones de RAM interna.
Programación
Artículo principal: compilador 8051
Hay varios compiladores de lenguajes de alto nivel para el 8051. Varios compiladores C están disponibles para el 8051, la mayoría de los cuales permiten al programador especificar dónde debe almacenarse cada variable en sus seis tipos de memoria, y proporcionan acceso a características de hardware específicas del 8051, como los múltiples bancos de registros y las instrucciones de manipulación de bits. Hay muchos compiladores C comerciales. SDCC es un compilador C de código abierto popular [cita requerida]. Otros lenguajes de alto nivel como C++, Forth, BASIC, Pascal/Object Pascal, PL/M y Modula-2 están disponibles para el 8051, pero son menos utilizados [cita requerida] que C y ensamblador.
Debido a que IRAM, XRAM y PMEM (solo lectura) tienen todas una dirección 0, los compiladores C para la arquitectura 8051 proporcionan pragmas específicos del compilador u otras extensiones para indicar dónde debe almacenarse una pieza particular de datos (por ejemplo, constantes en PMEM o variables que necesitan acceso rápido en IRAM). Dado que los datos pueden estar en uno de los tres espacios de memoria, generalmente se proporciona un mecanismo para determinar a qué memoria apunta un puntero, ya sea restringiendo el tipo de puntero para incluir el espacio de memoria, o almacenando metadatos con el puntero.
Procesadores relacionados
Procesadores Intel 8031
El predecesor del 8051, el 8048, se utilizó en el teclado de la primera PC IBM, donde convertía las pulsaciones de teclas en el flujo de datos en serie que se envía a la unidad principal de la computadora. El 8048 y sus derivados todavía se utilizan hoy en día para teclados básicos.
El 8031 era una versión recortada del Intel 8051 original que no contenía memoria de programa interna (ROM). Para usar este chip, se debía agregar ROM externa que contuviera el programa que el 8031 obtendría y ejecutaría. Un chip 8051 podría venderse como un 8031 sin ROM, ya que la ROM interna del 8051 se desactiva mediante el estado normal del pin EA en un diseño basado en 8031. Un vendedor podría vender un 8051 como 8031 por varias razones, como código defectuoso en la ROM del 8051, o simplemente un exceso de oferta de 8051 y una escasez de 8031.
El 8052 era una versión mejorada del 8051 original que contaba con 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. El 8032 tenía estas mismas características excepto la memoria de programa ROM interna. La mayoría de los microcontroladores modernos "compatibles con 8051" incluyen estas características.
Intel discontinuó su línea de productos MCS-51 en marzo de 2007, sin embargo, hay muchos productos 8051 mejorados o propiedad intelectual de silicio agregados regularmente por otros proveedores. Los proveedores actuales de procesadores compatibles con MCS-51 incluyen más de 20 fabricantes independientes, incluyendo Atmel, Infineon Technologies (antes Siemens AG), Maxim Integrated Products (a través de su subsidiaria Dallas Semiconductor), NXP (antes Philips Semiconductor), Microchip Technology, Nuvoton (antes Winbond), ST Microelectronics, Silicon Laboratories (antes Cygnal), Texas Instruments, Ramtron International, Silicon Storage Technology, Cypress Semiconductor y Analog Devices.
El 80C537 y el 80C517 son versiones CMOS, diseñadas para la industria automotriz. Las mejoras incluyen principalmente nuevas características periféricas e instrucciones aritméticas expandidas. El 80C517 tiene mecanismos a prueba de fallos, instalaciones de procesamiento de señales analógicas y capacidades de temporización, y 8 kB de memoria de programa interna. Otras características incluyen:
256 bytes de RAM interna.
256 bits directamente direccionables.
Memoria de programa y datos externa expandible hasta 64 kB.
Convertidor A/D de 8 bits con 12 entradas multiplexadas.
Unidad aritmética que puede realizar división, multiplicación, desplazamiento y normalización.
Ocho punteros de datos en lugar de uno para direccionamiento indirecto de memoria de programa y datos externa.
Instalaciones de vigilancia extendidas.
Nueve puertos.
Dos interfaces serie full-duplex con sus propios generadores de velocidad en baudios.
Sistema de interrupciones de cuatro niveles de prioridad, 14 vectores de interrupción.
Tres modos de ahorro de energía.
Uso 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. Disponibles en forma de código fuente de lenguaje de alto nivel (VHDL o Verilog) o listas de redes FPGA, estos núcleos se integran típicamente en sistemas embebidos, en productos que van desde unidades flash USB hasta lavadoras y complejos sistemas de comunicación inalámbrica en un chip. Los diseñadores utilizan núcleos IP 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 M, MIPS y BA22. 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 manteniendo 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 contraste, 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
Atmel: AT89C51, AT89S51, AT83C5134
NXP: series NXP700 y NXP900
Infineon: XC800
Variantes con procesador digital de señales (DSP)
Existen varias variantes con un procesador digital de señales (DSP) adicional de 16 bits (por ejemplo, para codificación/decodificación MP3 u OGG) con hasta 675 millones de instrucciones por segundo (maker MIPS)[9] e interfaz USB 2.0 integrada[10] o como propiedad intelectual[11].
Microcontrolador binario compatible mejorado de 8 bits: familia MCS-151
Esta sección requiere expansión. (Mayo 2013)
En 1996, Intel anunció la familia MCS-151, una variante hasta 6 veces más rápida.[2] Totalmente compatible binariamente y con conjunto de instrucciones con el 8051, pero con CPU segmentada, bus de código interno de 16 bits y velocidad 6x. La familia MCS-151 también fue discontinuada por Intel, pero está ampliamente disponible en variantes compatibles binarias y parcialmente mejoradas.
Microcontrolador binario compatible de 8/16/32 bits: familia MCS-251
Esta sección requiere expansión. (Mayo 2013)
El 80251, microcontrolador de 8/16/32 bits con espacio de direcciones de 16 MB (24 bits) y ciclo de instrucción 6 veces más rápido, fue introducido por Intel en 1996.[2][12] Puede funcionar como un 8051 de 8 bits, tiene un espacio de direcciones externo de 24 bits que es segmentado de 16 bits y ALU de 32 bits con instrucciones de datos mayoritariamente de 8/16/32 bits procesamiento de haz de iones enfocados en oblea de silicio (también procesador booleano con registros/memoria especiales) y un gran conjunto de instrucciones CISC, 40 registros de 8/16/32 bits con 8 registros de 8 bits en 4 bancos de memoria de conmutación rápida (máximo 512 registros especiales de 8 bits direccionables).
Cuenta con instrucciones extendidas - consulte también la guía del programador - y variantes posteriores con mayor rendimiento, también disponibles como propiedad intelectual (IP). Tiene segmentación de 3 etapas. La familia MCS-251 también fue discontinuada por Intel, pero está ampliamente disponible en variantes compatibles binarias y parcialmente mejoradas de muchos fabricantes.