Arquitectura del Microcontrolador 8051: Memoria y Unidad Aritmético-Lógica
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 4,01 KB
Organización de la Memoria en la Familia Intel 8051
En la familia Intel 8051, el almacenamiento de programas y datos está físicamente separado. Tanto los datos como los programas pueden almacenarse internamente o en dispositivos de memoria externos. Para facilitar la identificación de ubicaciones de memoria externas (programa y datos) a las que se tiene acceso durante la ejecución de instrucciones, el microprocesador genera impulsos ALE (Address Latch Enable) y controla el estado de la salida PSEN (Program Store Enable), como se describe a continuación:
Memoria de Programa
En sistemas basados en el procesador de la familia 8051, la selección de la memoria de programa (interna y externa) es realizada por el diseñador de hardware. El microprocesador accede a la memoria externa solo si la entrada /EA
(External Access Enable) está conectada a tierra. Si esta entrada se pone en alto (conectada a Vcc), el microprocesador utiliza sus direcciones para acceder únicamente a la memoria interna.
Memoria de Datos
En los procesadores de esta familia, la memoria de datos es un bloque de memoria de lectura y escritura (RAM), organizada en palabras de ocho bits. En el 8051, hay 128 registros (128x8 bits) accesibles a través de las direcciones 00H a 7FH. Las direcciones 10H a FFH incluyen registros de memoria de propósito general, áreas reservadas (no utilizadas) y también los Registros de Funciones Especiales (SFRs).
Las memorias de datos internas y externas pueden utilizarse en el mismo programa, accediéndose a ellas mediante la ejecución de diferentes instrucciones. La instrucción MOV
realiza la transferencia de datos entre registros internos, RAM interna y/o Registros de Funciones Especiales (SFRs). El acceso a la memoria de datos externa se realiza mediante la instrucción MOVX
. También es posible la transferencia de datos desde la memoria de programa al procesador mediante la ejecución de la instrucción MOVC
.
Dentro de la memoria interna, existe un conjunto de 32 registros organizados en cuatro bancos. En cada banco, los registros se identifican de R0 a R7. Es posible escribir (y leer) el contenido de estos registros mediante la ejecución de instrucciones como MOV Rn, A
o MOV Rn, #byte
(y MOV A, Rn
), donde n = 0, 1, ..., 7. Los bancos se seleccionan utilizando los bits RS0 y RS1. Los registros cuyas direcciones están entre 20H y 2FH también pueden ser accedidos bit a bit, a través de la aplicación de instrucciones de tipo bit como SETB bit
, CLR bit
, MOV C, bit
y MOV bit, C
. Aquí, 'C' se refiere al bit de acarreo (Carry Flag) y 'bit' es la dirección de bit seleccionada en la RAM.
Unidad Aritmético-Lógica (ALU)
La Unidad Aritmético-Lógica (ALU) es responsable de realizar operaciones aritméticas (suma, resta, multiplicación y división de números enteros) y lógicas (AND, OR, XOR y NOT). La ALU opera con palabras de datos de ocho bits, afectando, en algunos casos, el estado de un conjunto de banderas en el Registro de Estado del Programa (PSW).
Para las operaciones más frecuentes que involucran dos operandos, el acumulador se utiliza para almacenar uno de los operandos y, tras la ejecución de la instrucción, el resultado de la operación. A diferencia de la mayoría de los procesadores de ocho bits, la ALU del 8051 puede realizar la multiplicación y la división entera con una sola instrucción.
En el caso de la multiplicación, un operando se carga en el acumulador y el otro en el registro B. El resultado, obtenido al ejecutar la instrucción MUL AB
, se deposita en los mismos registros: el byte de mayor peso en el registro B y el de menor peso en el acumulador. Cuando se ejecuta la instrucción DIV AB
, el cociente resultante de dividir el acumulador por el contenido del registro B se almacena en el acumulador, y el resto de la división se almacena en el registro B.