Intel 8051


De Wikipedia, la enciclopedia libre
  (Redirigido desde Intel 8031 )
Saltar a navegación Saltar a búsqueda

El Intel MCS-51 (comúnmente denominado 8051 ) es una serie de microcontroladores de un solo chip (MCU) desarrollada 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 un ejemplo de una computadora con un conjunto de instrucciones complejo (pero que también posee algunas de las características de las arquitecturas RISC , como un gran conjunto de registros y ventanas de registros).) y tiene espacios de memoria separados para instrucciones y datos del programa.

La familia MCS-51 original de Intel se desarrolló utilizando tecnología de semiconductores de óxido de metal ( NMOS ) de tipo N como su predecesor Intel MCS-48 , pero las versiones posteriores, identificadas con una letra C en su nombre (p. Ej., 80C51) utilizan metal complementario. tecnología de óxido-semiconductor ( CMOS ) y consumen menos energía que sus predecesores NMOS. Esto los hizo más adecuados para dispositivos que funcionan con baterías.

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

Funciones y aplicaciones importantes

microarquitectura i8051
Pinout 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 una paquete :

  • 8- bit unidad lógica aritmética (ALU) y acumulador , 8 bits registros (uno de 16 bits registro con especiales instrucciones de movimiento ), de 8 bits del bus de datos y 2 x 16 bits buses de dirección , contador de programa , puntero de datos , y relacionado Operaciones de 8/11/16 bits; por lo tanto, es principalmente un microcontrolador de 8 bits
  • Procesador booleano con 17 instrucciones, acumulador de 1 bit, 32 registros (8 bits direccionables de 4 bits) y hasta 144 variables RAM especiales direccionables de 1 bit (8 bits direccionables de 18 bits) [4]
  • Multiplica , divide y compara las instrucciones
  • Cuatro bancos de registros rápidamente conmutables con ocho registros cada uno ( asignados en memoria )
  • Interrupción rápida con cambio de banco de registro opcional
  • Interrupciones e hilos con prioridad seleccionable [5]
  • 128 o 256 bytes de RAM en chip (IRAM)
  • Bus de direcciones dual de 16 bits ; Puede acceder a 2 × 2 16 ubicaciones de memoria: 64  KB (65,536 ubicaciones) cada una de ROM (PMEM) y RAM externa (XRAM), utilizando dos buses de memoria en una arquitectura de Harvard .
  • ROM en chip (no incluido en las variantes 803x)
  • Cuatro puertos de entrada / salida bidireccionales de 8 bits , direccionables por bits
  • UART ( puerto serie )
  • Dos contadores / temporizadores de 16 bits
  • Modo de ahorro de energía (en algunos derivados)

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 bits se lleven a cabo 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 los bancos de registros, evitando la laboriosa tarea de transferir los registros críticos a la RAM.

Una vez que se ha configurado un UART, y un temporizador si es necesario, 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 es desplazado por el UART y / o vaciar el registro de desplazamiento de recepción completo (copiar los datos en otro lugar). Luego, el programa principal realiza lecturas y escrituras en serie simplemente leyendo y escribiendo datos de 8 bits en pilas.

Características derivadas

A partir de 2013 , muchos de los principales fabricantes de chips aún están 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 generalmente incluyen uno o dos UART , dos o tres temporizadores, 128 o 256 bytes de RAM de datos internos (16 bytes de los cuales son direccionables por bits), hasta 128 bytes de E / S , 512 bytes a 64 KB de memoria interna del programa 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 podría ejecutar 1 millón de instrucciones de un ciclo por segundo o 500.000 instrucciones de dos ciclos por segundo. Los núcleos 8051 mejorados ahora se utilizan comúnmente que funcionan a seis, cuatro, dos o incluso un reloj por ciclo de máquina (denotado "1T"), 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 Silicon Labs , algunos Dallas (ahora parte de Maxim Integrated ) y algunos Atmel (ahora parte de Microchip ) tienen núcleos de ciclo único . [7] [8] [9]

Las variantes del 8051 pueden incluir temporizadores de reinicio incorporados con detección de apagones, osciladores en el chip, memoria de programa ROM flash autoprogramable , RAM externa incorporada, almacenamiento de programa interno adicional, código de cargador de arranque en ROM, almacenamiento de datos EEPROM no volátil , Interfaces de host I 2 C , SPI y USB , bus CAN o LIN , módulos de radio ZigBee o Bluetooth , generadores PWM , comparadores analógicos , convertidores de analógico a digital y de digital a analógico , 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 de máscara, 8052AH-BASIC, con un intérprete BASIC en ROM, capaz de ejecutar el usuario programas 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 hasta 1 año a +300  ° C). C). [11] Se encuentran disponibles microcontroladores MCS-51 resistentes a la radiación para su uso en naves espaciales; por ejemplo, de Cobham (antes Aeroflex ) como UT69RH051 [12] o de NIIET como 1830VE32 ( Ruso : 1830ВЕ32 ). [13]

En algunas escuelas de ingeniería, el microcontrolador 8051 se utiliza en cursos de introducción al microcontrolador. [14] [15] [16] [17]

Convenciones de nomenclatura familiar

8051 es el nombre original de Intel 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 por UV. Las variantes con una C como tercer carácter son una especie 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, por ejemplo, 8052 con 8 KB de ROM, 87C54 de 16 KB de EPROM y 87C58 con 32 KB de EPROM, todos 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 estos 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 registro de acceso indirecto, utilizando uno de los registros estándar de 8 bits, y registro de acceso indirecto a RAM externa utilizando el registro de acceso indirecto de 16 bits.

El conjunto de instrucciones del 8051 está diseñado como una arquitectura de Harvard con memoria separada (datos e instrucciones); sólo puede ejecutar código obtenido de la memoria del programa y no tiene instrucciones para escribir en la memoria del programa. Sin embargo, el bus que sale del IC tiene una única dirección y ruta de datos, y se parece mucho a un bus de arquitectura de 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 RAM interna (IRAM) tiene un espacio de direcciones de 8 bits, utilizando direcciones de 0 a 0xFF. IRAM de 0x00 a 0x7F contiene 128 registros de 1 byte directamente direccionables, 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 IRAM indirectamente: la dirección se carga en R0 o R1, y se accede a la memoria usando 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 operaciones * CALL y RET.

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

Los accesos directos a las direcciones IRAM 80-FF se mapean, en cambio, en los registros de funciones especiales (SFR), donde se ubican los acumuladores A, B, el bit de acarreo C y otros registros especiales de control, estado, etc.

Registros de funciones especiales

Los registros de funciones especiales (SFR) se encuentran en el mismo espacio de direcciones que IRAM, en las direcciones 0x80 a 0xFF, y se accede a ellos directamente utilizando las mismas instrucciones que para la mitad inferior de 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 IRAM, en su lugar.

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), ellos mismos, 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 interrupciones en A8 e 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 potencia / CPU PCON (87); y los registros para el control de los temporizadores 0 y 1 (TCON en 88) y 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, el temporizador 2 se registra para el 8052: el registro de control T2CON (en C8),la captura / enclavamiento de 16 bits (RCAP2L en CA, RCAP2H en CB) y el temporizador 2 (TL2 en CC y TH2 en CD) no se incluyen con el 8051.

Registro de ventanas

Los 32 bytes en IRAM de 0x00–0x1F contienen espacio para cuatro ventanas de registro de ocho bytes , a las que se asignan los 8 registros R0 – R7. La ventana actualmente activa 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 de 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 funciones especiales 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 en PSW, es en sí misma 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.

Programa de memoria

La memoria de programa (PMEM, aunque de uso menos común que IRAM y XRAM) tiene hasta 64 KB de memoria de solo lectura, comenzando 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 usan memoria flash en 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, recuperados por 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 mayor que 64K, un sistema común hace que el banco de códigos cambie, con E / S de propósito general seleccionando los bits de dirección superiores. Unos compiladores del 8051 [18] establecen disposiciones para acceder automáticamente al código paginado. En estos sistemas, los vectores de interrupción y la tabla de paginación se colocan en los primeros 32K de código y siempre son residentes.

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 lo hace "externo" es que debe accederse mediante la MOVXinstrucción (mover externo). Muchas variantes del 8051 incluyen los 256 bytes estándar de IRAM más unos pocos kilobytes de XRAM en el chip.

Los primeros 256 bytes de XRAM pueden acceder mediante los , , , y las instrucciones. Se puede acceder a los 64 KB completos utilizando y . La dirección de 16 bits requiere que el programador cargue el registro de índice de 16 bits. Por esta razón, los accesos a 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 función, algunos microcontroladores compatibles con 8051 con RAM interna de más de 256 bytes, o la imposibilidad de acceder a la 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 localizar el byte superior de una dirección RAM configurando los pines de E / S de uso general.

Cuando se requiere una RAM mayor que 64K, un sistema común hace que la RAM cambie de banco, con E / S de propósito general seleccionando los bits de dirección superiores. Unos 8051 compiladores [18] prevén el acceso automático a los datos paginados.

Registros

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

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

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

Puntero de pila, SP (0x81)
Este es un registro de 8 bits utilizado por instrucciones de llamada y retorno de subrutina. La pila crece hacia arriba; el SP se incrementa antes de presionar y se reduce después de hacer estallar un valor.
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 otra manera por el hardware.
  3. Bandera de desbordamiento , OV. Se establece cuando la adición produce un desbordamiento firmado.
  4. Registro seleccione 0, RS0. El bit de orden inferior del banco de registros. Se establece cuando los bancos en 0x08 o 0x18 están en uso.
  5. Registro seleccione 1, RS1. El bit de orden superior del banco de registros. Se establece cuando los bancos en 0x10 o 0x18 están en uso.
  6. Bandera 0, F0. Puede leerse y escribirse mediante software; no se ve afectado de otra manera por el hardware.
  7. Transporte auxiliar , AC. Se establece cuando la suma produce un acarreo del bit 3 al bit 4.
  8. Carry bit , C. A menudo se utiliza como registro general para cálculos de bits o como "acumulador booleano".
Acumulador, A (0xE0)
Este registro es utilizado por la mayoría de las instrucciones.
Registro B (0xF0)
Esto se usa como una extensión del acumulador para multiplicar y dividir instrucciones.

256 bits individuales son direccionables directamente. Estas son las 16 ubicaciones de IRAM de 0x20–0x2F y los 16 registros de funciones especiales 0x80, 0x88, 0x90, ..., 0xF8. Se puede acceder directamente a cualquier bit de estos bytes mediante una variedad de operaciones lógicas y ramas condicionales.

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

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

Microarquitectura

La microarquitectura de Intel MCS8051 es propietaria, pero las características publicadas [21] sugieren cómo funciona. Es un procesador de ciclos múltiples . El MCS8051 utilizó 12 ciclos de reloj [21] para la mayoría de las instrucciones. El número de ciclos por instrucción (mayor que 8) sugiere que tiene una unidad lógica aritmética de un bit que procesa sus datos de 8 bits un bit a la vez. Esto también podría explicar por qué puede proporcionar económicamente instrucciones de un solo bit. El número relativamente grande de ciclos también parece indicar que solo utiliza un borde de su reloj. (Muchas computadoras multiciclo operan su lógica en ambos bordes).

Muchas instrucciones utilizan un acumulador. [21] Dado que tiene un acumulador, es posible que necesite que el acumulador proporcione una entrada de las dos entradas que necesita su unidad aritmética lógica. Esto implica que tiene un solo bus interno (un diseño económico), en lugar de múltiples buses de una matriz de registro de doble puerto que podría alimentar ambos lados de la ALU. Para reducir costos, en lugar de usar multiplexores, podría encender y apagar dispositivos en su bus usando dispositivos lógicos de tres estados . Un bus serial de tres estados también permitiría un multiplexor económico de un solo bit para su sistema de registro de conmutación de banco [21] .

En contraste, la mayoría de las computadoras compatibles ejecutan instrucciones en uno a tres ciclos, excepto las instrucciones de multiplicar y dividir. La velocidad mucho más alta es una de las principales razones por las que estos han reemplazado al MCS8051 en la mayoría de las aplicaciones. La velocidad sugiere que estos tienen buses internos de ocho bits y unidades lógicas aritméticas.

Cada interrupción tiene cuatro prioridades. [21] Dentro de cada prioridad, las interrupciones de los dispositivos tienen una prioridad fija. [21] Por lo tanto, el controlador de interrupciones parece priorizar las interrupciones mediante cuatro cadenas de puertas secuenciales, y cada interrupción tiene una puerta en cada cadena de prioridad.

Conjunto de instrucciones

Las instrucciones tienen una longitud de 1 a 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 paracódigos de operaciónirregulares.

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 significativodel código de operación selecciona el operando primario de la siguiente manera:

  • x 8– x F : Registro directo, R0 – R7.
  • x 6– x 7 : Registro indirecto, @ R0 o @ R1.
  • x 5 : memoria directa, un byte siguiente especifica una ubicación de IRAM o SFR.
  • x 4 : Inmediato, un byte siguiente especifica una constante de 8 bits. Cuando el operando es un destino (,) o la operación ya incluye una fuente inmediata (,), esto en cambio especifica que se usa el acumulador.INC operandDEC operandMOV operand,#dataCJNE operand,#data,offset

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 primario. Los mnemónicos de instrucción usan destino , orden de operando de origen .

0 y :INC operand
Incrementa el operando especificado. Modo inmediato (opcode 0x04) especifica el acumulador, .INC A
1 y :DEC operand
Disminuye el operando especificado. Modo inmediato (opcode 0x14) especifica el acumulador, .DEC A
2 y :ADD A,operand
Agregue el operando al acumulador, A. Opcode 0x23 ( , "rotar a la izquierda" pero en realidad un desplazamiento a la izquierda ) se puede considerar como .RL AADD A,A
3 y :ADDC A,operand
Agregue el operando, más el bit C, al acumulador. El código de operación 0x33 ( , rotar a la izquierda a través del acarreo) se puede considerar como .RLC AADDC A,A
4 y :ORL A,operand
O lógico el operando en el acumulador. Dos formas de destino de memoria de esta operación, y , se especifican mediante los códigos de operación 0x43 y 0x42.ORL address,#dataORL address,A
5 y :ANL A,operand
Y lógico el 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 y :XRL A,operand
O exclusivo lógico el operando en el acumulador. Dos formas de destino de memoria de esta operación, y , se especifican mediante los códigos de operación 0x63 y 0x62.XRL address,#dataXRL address,A
7 y :MOV operand,#data
Mover inmediatamente al operando. Modo inmediato (opcode 0x74) especifica el acumulador, .MOV A,#data
8 y :MOV address,operand
Mueva el valor a un registro IRAM o SFR. El modo inmediato (código de operación 0x84) no se usa para esta operación, ya que duplica el código de operación 0x75.
9 y :SUBB A,operand
Reste el operando del acumulador. Esta operación pide prestado y no hay resta sin pedir prestado.
A y :MOV operand,address
Mover valor de un registro IRAM o SFR. El modo inmediato (código de operación 0xA4) no se usa, ya que los inmediatos sirven solo como fuentes. El modo directo de memoria (código de operación 0xA5) no se usa, ya que duplica 0x85.
B y :CJNE operand,#data,offset
Compare el operando con el inmediato #datay salte a PC + offset si no es igual. Inmediata y modos directos de memoria (códigos de operación y 0xB4 0xB5) comparan el operando contra el acumulador, . Tenga en cuenta que no hay comparación y salto si la instrucción es igual .CJNE A,operand,offsetCJE
C y :XCH A,operand
Cambie 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
Disminuya el operando y salte a PC + offset si el resultado es distinto de cero. El modo inmediato (código de operación 0xD4) y ​​el modo indirecto de registro (0xD6, 0xD7) no se utilizan.
E y :MOV A,operand
Mueva el operando al acumulador. El modo inmediato no se utiliza para esta operación (código de operación 0xE4), ya que se duplica el código de operación 0x74.
F y :MOV operand,A
Mueva el acumulador al operando. No se utiliza el modo inmediato (código de operación 0xF4), ya que no tendría ningún efecto.

Sólo el ADD, ADDCy SUBBlas instrucciones establecidas banderas PSW. Las INC, DECy las instrucciones lógicas no lo hacen. La CJNEinstrucción modifica solo el bit C, al préstamo que resulta del operando1 - operando2 .

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 extraídos de modos inaplicables en las instrucciones regulares.

A5
No usado
B5
CJNE A,address,offset
D6–7
XCHD A,@R01 intercambiar nibble de operandos de bajo orden.

El SJMPcódigo de operación (salto corto) toma un operando de byte de desplazamiento relativo firmado y transfiere el control allí en relación con la dirección de la siguiente instrucción. Los AJMP/ ACALLopcodes combinan los tres bits más significativos del byte del código de operación con el siguiente byte para especificar un destino de 11 bits que se utiliza para reemplazar los 11 bits inferiores del registro de la PC (los 5 bits superiores del registro de la 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 rango de operaciones en bits individuales. Los bits siempre se especifican mediante direcciones absolutas; no hay direccionamiento indexado o indirecto de registro. Las instrucciones que operan en bits individuales son:

  • SETB bit, , : Establecer, eliminar o complementar el bit especificadoCLR bitCPL bit
  • JB bit,offset: Saltar si el bit está configurado
  • JNB bit,offset: Salta si un poco claro
  • JBC bit,offset: Salta si el bit está establecido y borra el bit.
  • MOV C,bit, : Mueve el bit especificado al bit de acarreo, o viceversaMOV bit,C
  • ORL C,bit, : O la broca (o su complemento) a la broca de acarreoORL C,/bit
  • ANL C,bit, : Y el bit (o su complemento) al bit de acarreoANL C,/bit

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

Aunque la mayoría de las instrucciones requieren que un operando sea el acumulador o una constante inmediata, el código de operación 0x85 funciona MOVdirectamente entre dos ubicaciones de RAM internas.

Programación

Hay varios compiladores de lenguaje 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 brindan acceso al hardware específico del 8051 características tales como múltiples bancos de registros e instrucciones de manipulación de bits. Hay muchos compiladores de C comerciales. [22] Small Device C Compiler (SDCC) es un popular compilador de C de código abierto. [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 [ cita requerida ] que C y ensamblaje .

Debido a que IRAM, XRAM y PMEM (solo lectura) tienen 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 un dato en particular (es decir, 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 permitir determinar a qué memoria se refiere un puntero, ya sea restringiendo el tipo de puntero para incluir el espacio de memoria o almacenando metadatos con el puntero.

Procesadores relacionados

Microcontroladores Intel 8031
Microcontrolador Intel D87C51

Intel descontinuó su línea de productos MCS-51 en marzo de 2007; [28] [29] sin embargo, hay muchos productos mejorados 8051 o propiedad intelectual de silicio que se agregan regularmente de otros proveedores.

El predecesor del 8051, el 8048 , se usó en el teclado de la primera PC IBM , donde convirtió las pulsaciones de teclas en el flujo de datos en serie que se envía a la unidad principal de la computadora. Un Intel 8049 cumplió un papel similar en el Sinclair QL . El 8048 y sus derivados todavía se utilizan hoy en día para modelos de teclados 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 usar este chip, se tuvo que agregar una ROM externa que contenga el programa que el 8031 ​​buscaría y ejecutaría. Un chip 8051 podría venderse como un 8031 ​​sin ROM, ya que la ROM interna del 8051 está desactivada por el estado normal del pin EA en un diseño basado en 8031. Un proveedor puede vender un 8051 como 8031 ​​por varias razones, como un código defectuoso en la ROM del 8051, o simplemente un exceso de suministro de 8051 y un suministro insuficiente de 8031.

El 8052 era una versión mejorada del 8051 original que presentaba 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 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 EPROM en lugar de 4 KB ROM. Eran idénticos excepto por el tipo de memoria no volátil. Esta pieza estaba disponible en un paquete de cerámica con una ventana de cuarzo transparente sobre la parte superior del troquel para que se pudiera usar luz ultravioleta para borrar la EPROM . Las partes relacionadas son: 8752 tenía 8 KB EPROM, 8754 tenía 16 KB EPROM, 8758 tenía 32 KB 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 fallas, instalaciones de procesamiento de señales analógicas, capacidades de temporizador mejoradas y un periférico aritmético de 32 bits. Otras características incluyen:

  • RAM en chip de 256 bytes
  • 256 bits directamente direccionables
  • Memoria externa de programas y datos ampliable hasta 64 KB
  • Convertidor A / D de 8 bits con 12 entradas multiplexadas
  • El periférico aritmético puede realizar operaciones de multiplicación de 16 × 16 → 32 bits, división de 32/16 → 16 bits, desplazamiento de 32 bits y normalización de 32 bits
  • Ocho punteros de datos en lugar de uno para el direccionamiento indirecto del programa y la memoria de datos externa
  • Instalaciones de vigilancia ampliadas
  • Nueve puertos de E / S
  • Dos interfaces seriales full-duplex con generadores de velocidad en baudios individuales
  • Cuatro sistemas de interrupción de nivel de prioridad, 14 vectores de interrupción
  • Tres modos de ahorro de energía
  • Fuentes secundarias Intel MCS-51
  • AMD D87C51

  • MHS S-80C31

  • OKI M80C31

  • Philips PCB80C31

  • Signetics SCN8031

  • Temic TS80C32

Proveedores de derivados

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

  • Microcontroladores derivados de Intel MCS-51
  • Atmel AT89C2051

  • Infineon SAB-C515

  • Philips S87C654

  • Siemens SAB-C501

  • STC Micro STC89C52

Analog Devices , [30] Integral Minsk , [31] Kristall Kyiv , [32] y NIIET Voronesh 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 piezas discretas, pero se utilizan principalmente como núcleos de propiedad intelectual de silicio . [33] Estos núcleos, disponibles en código fuente de lenguaje de descripción de hardware (como VHDL o Verilog ) o listas de redes FPGA , se integran normalmente en sistemas integrados, 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 al tamaño más pequeño y la menor potencia, 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 mantienen 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 viejos 8051 podían ejecutar un millón de instrucciones de ciclo único, o 500.000 instrucciones de dos ciclos, por segundo. Por el contrario, 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
  • ARRIBA: Serie MC94F, MC95F, MC96F
  • Infineon: XC800
  • Maxim Integrated (anteriormente Dallas): serie DS80, etc. [34]
  • Gráficos de Mentor: M8051EW, etc. diseñado para Mentor por SYNTILL8 [35]
  • Megawin: series 74, 82, 84, 86, 87 y 89
  • Microchip (antes Atmel): AT89C51, AT89S51 , AT83C5134, etc. [9]
  • NXP: series NXP700 y NXP900
  • Siemens SAB 80532-N
  • SoC de medición de electricidad de Silergy : 71M6511, 71M6513, 71M6531, 71M6533, 71M6534, 71M6542, 71M6543 [36] SoC de medición de energía : 78M6631, 78M6618, 78M6613, 78M6612 [37]
  • Silicon Labs: C8051 series y series EFM8 [7]
  • Tecnología de almacenamiento de silicio : MCU FlashFlex51 (SST89E52RD2, SST89E54RD2, SST89E58RD2, SST89E516RD2SST89V52RD2, SST89V54RD2, SST89V58RD2, SST89V516RD2) [38]
  • STC Micro: STC89C51RC, STC90C51RC, STC90C58AD, STC10F08XE, STC11F60XE, STC12C5410AD, STC12C5202AD, STC12C5A60S2, STC12C5628AD, STC15F100, STC15F204EA, STC15F2K60S2, STC15F4K60S2, STC15F101W, STC15F408AD, STC15W104, STC15W408S, STC15W201S, STC15W408AS, STC15W1K16S y STC15W4K56S4 serie [39]
  • Familias de SoC RF de Texas Instruments CC111x, CC24xx y CC25xx
  • WCH ( Microelectrónica de Nanjing Qinheng ): CH551, CH552, CH554, CH546, CH547, CH548, CH558, CH559 [40]

Variantes del procesador de señal digital (DSP)

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

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

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

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

El microcontrolador 80251 de 8/16/32 bits con un espacio de direcciones de 16 MB ( 24 bits ) y un ciclo de instrucción 6 veces más rápido fue introducido por Intel en 1996. [3] [44] 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 comparta 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 registros que contienen 2 registros de 16 bits por registro de 32 bits). [45]

Cuenta con instrucciones extendidas [46] - ver también la guía del programador [47] - y variantes posteriores con mayor rendimiento, [48] también disponibles como propiedad intelectual (IP). [49] Tiene una canalización de 3 etapas. La familia MCS-251 también fue descontinuada por Intel, pero está ampliamente disponible en variantes compatibles binarias y parcialmente mejoradas de muchos fabricantes.

Ver también

  • DS80C390
  • Hitachi HD44780 - Controlador LCD con interfaz compatible con XRAM
  • Intel PL / M-51
  • Kit de diseño del sistema SDK-51

Referencias

  1. ^ John Wharton: Introducción a la familia de microcomputadoras de un solo chip Intel MCS-51 , nota de aplicación AP-69, mayo de 1980, Intel Corporation.
  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. ^ a b c "Microcontroladores Intel MCS 151 y MCS 251" . datasheets.chipdb.org .
  4. ^ John Wharton: Uso de las capacidades de procesamiento booleano Intel MCS-51 Archivado el 3 de marzo de 2016 en lanota de aplicación de Wayback Machine AP-70, mayo de 1980, Intel Corporation.
  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. ^ a b "Microcontroladores de 8 bits - MCU de 8 bits - EFM8 - Silicon Labs" . www.silabs.com . Consultado el 21 de junio de 2021 .
  8. ^ "Búsqueda del sitio | Maxim Integrated" . www.maximintegrated.com . Consultado el 21 de junio de 2021 .
  9. ^ a b "8051 MCU | 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" . Soluciones de semiconductores de Cobham. Archivado desde el original el 23 de agosto de 2017 . Consultado el 23 de agosto de 2017 .
  13. ^ a b "Микроконтроллеры" [Microcontroladores] (en ruso). Voronezh: OAO "NIIET". Archivado desde el original el 22 de agosto de 2017 . Consultado el 22 de agosto de 2017 .
  14. ^ "Copia archivada" . Archivado desde el original el 22 de agosto de 2017 . Consultado el 22 de agosto de 2017 .CS1 maint: copia archivada como título ( enlace )
  15. ^ https://www.youtube.com/watch?v=H9sDn89EvD8
  16. ^ "ELEC2700 - Ingeniería informática 2 - Universidad de Newcastle - Libros de texto | Zookal.com" . www.zookal.com .
  17. ^ http://s3.amazonaws.com/f01.justanswer.com/88willy/2012-06-29_065532_assignment_03.pdf
  18. ^ a b c 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 de subrutina de 2 bytes, puede acceder a ubicaciones dentro del mismo segmento de memoria de2KB. La dirección de memoria absoluta está formada por los 5 bits más altos de la PC y los 11 bits definidos por la instrucción.
  20. ^ a b "Hoja de datos de Silergy 71M6513" . Circuitos integrados de medición de electricidad Silergy . Silergy Corp . Consultado el 17 de mayo de 2021 .
  21. ^ a b c d e f 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 . Mantenimiento de CS1: ubicación ( enlace )
  22. ^ Han-Way Huang. "Diseño de sistema integrado con C8051" . pag. 238.
  23. ^ Lewin ARW Edwards. "Entonces, quieres ser un ingeniero integrado: la guía para la ingeniería integrada, de la consultoría a la escalera corporativa" . 2006. p. 51.
  24. ^ Bradford J. Rodríguez. "CamelForth / 8051" .
  25. ^ Brad Rodríguez. "Avanzando parte 7: CamelForth para el 8051" .
  26. ^ "Desarrollo de 8051 SwiftX Forth" . Archivado el 24 de septiembre de 2015 en la Wayback Machine.
  27. ^ "MPE VFX Forth 7 compiladores cruzados" .
  28. Ganssle, Jack (29 de mayo de 2006). "Intel se retira, suspende MCS-51" .
  29. ^ "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 el procesador i960 RISC de 32 bits, PCN 106013-01, discontinuidad del producto, motivo de la revisión: agregue información de hitos clave y revisar la descripción del cambio " (PDF) . Intel. 2006-05-02.
  30. ^ http://www.analog.com/static/imported-files/data_sheets/ADUC832.pdf
  31. ^ "Микроконтроллеры и супервизоры питания Серии 1880; 1881; 1842; 588; 1345; 5518АП1ТБМ" [Serie de microcontroladores y supervisores de potencia 1880; 1881; 1842; 588; 1345; 5518AP1TBM] (en ruso). Minsk: OAO "Integral" . Consultado el 6 de enero de 2017 .
  32. ^ "Однокристальные микро-эвм" [ Microcomputadoras de un solo chip] (en ruso). Kiev: Kristall. Archivado desde el original el 30 de mayo de 2012 . Consultado el 5 de enero de 2017 .
  33. Hussaini (20 de agosto de 2019). "¿Por qué tenemos que usar el 8051? ¿No es demasiado viejo?" . Technobyte . Consultado el 20 de agosto de 2019 .
  34. ^ "Microcontroladores de alta velocidad / baja potencia DS80C320 - Maxim Integrated" . www.maximintegrated.com . Consultado el 21 de junio de 2021 .
  35. ^ "Syntill8 - Productos" . www.syntill8.com . Consultado el 21 de junio de 2021 .
  36. ^ "Circuitos integrados de medición Silergy" . Silergy Corp . Consultado el 12 de mayo de 2021 .
  37. ^ "Circuitos integrados de medición de energía Silergy" . Silergy Corp . Consultado el 12 de mayo de 2021 .
  38. ^ hoja de datosq.com. "Descarga de PDF de hoja de datos 89V54RD2 - Tecnología de almacenamiento de silicio" . www.datasheetq.com . Consultado el 18 de enero de 2020 .
  39. ^ "Microcontrolador STC --- STCmicro Technology Co, .Ltd" . www.stcmicro.com . Consultado el 19 de febrero de 2017 .
  40. ^ "índice del sitio - Nanjing Qinheng Microelectronics Co., Ltd" . wch-ic.com . Consultado el 21 de junio de 2021 .
  41. ^ "TI ofrece un nuevo DSP de audio de bajo costo y alto rendimiento para el hogar y el automóvil con 8051" . Archivado desde el original el 13 de noviembre de 2016 . Consultado el 6 de mayo de 2013 .
  42. ^ "Hoja de datos de DSP de audio Atmel AT85C51SND3 con USB 2.0" (PDF) .
  43. ^ Salim, AJ; Othman, M .; Ali, MA Mohd (5 de octubre de 2006). "Integración de 8051 con DSP en Xilinx FPGA". 2006 IEEE International Conference on Semiconductor Electronics . págs. 562–566. doi : 10.1109 / SMELEC.2006.380694 . ISBN 0-7803-9730-4. S2CID  21616742 : a través de IEEE Xplore.
  44. ^ El microcontrolador 8051 Por Kenneth J Ayala Google books
  45. ^ http://datasheets.chipdb.org/Intel/MCS51/DATASHTS/27262001.PDF
  46. ^ "Arquitectura de Temic TSC80251" (PDF) .
  47. ^ "Guía de programadores de Atmel TSC80251" (PDF) . Archivado desde el original (PDF) el 4 de marzo de 2016 . Consultado el 6 de mayo de 2013 .
  48. ^ DQ80251 DCD de microcontrolador de 32 bits
  49. ^ R80251XC Microcontrolador de 32 bits Evatronix [ enlace muerto ]

Otras lecturas

Libros
  • Mazidi; McKinlay; Mazidi (2012). El microcontrolador 8051: un enfoque de sistemas . 648 págs. ISBN 978-0-13-508044-3.
  • Schultz, Thomas (2008). C y el 8051 (4ª ed.). 464 págs. ISBN 978-0-9783995-0-4.
  • Steiner, Craig (2005). El microcontrolador 8051/8052: arquitectura, lenguaje ensamblador e interfaz de hardware . 348 págs. ISBN 978-1-58112-459-0.
  • Calcutt; Cowan; Parchizadeh (2000). Microcontroladores 8051: hardware, software y aplicaciones . 329 págs. ISBN 978-0-340-67707-0.
  • Axelson, enero (1994). El libro de ideas del microcontrolador: circuitos, programas y aplicaciones con el microcontrolador 8052-BASIC . 277 págs. ISBN 978-0-9650819-0-0.
  • Payne, William (19 de diciembre de 1990) [1990]. Controlador integrado FORTH para la familia 8051 (tapa dura). Boston: Prensa académica. 528 págs. ISBN 978-0-12-547570-9.
Intel
  • Manual del usuario de la familia de microcontroladores MCS-51 ; Intel; 1994; número de publicación 121517.
  • Guía del usuario del ensamblador de macros MCS-51 ; Intel; número de publicación 9800937.
  • Controladores integrados de 8 bits ; Intel; 1991; número de publicación 270645-003.
  • Manual de microcontroladores ; Intel; 1984; número de publicación 210918-002.
  • Especificación arquitectónica preliminar y descripción funcional del microcontrolador 8051 ; Intel; 44 páginas; 1980.

enlaces externos

Medios relacionados con MCS-51 en Wikimedia Commons

  • Tutorial completo para microcontroladores 8051
  • el sitio web de origen para tutoriales y simulador para 8051
  • Circuitos de interfaz 8051 básicos
  • Implementación de código abierto VHDL 8051 (Oregano Systems)
Obtenido de " https://en.wikipedia.org/w/index.php?title=Intel_8051&oldid=1043474176 "