En nuestro tutorial anterior sobre microcontroladores 8051, cubrimos la descripción general y los conceptos básicos del microcontrolador 8051, diagramas de pines, descripciones de pines y descripción general de la arquitectura. En este tutorial, continuamos nuestra exploración del microcontrolador 8051 entendiendo su organización de memoria: memoria de programa (ROM), memoria de datos (RAM) y memoria externa.
Cuando mencionamos la diferencia entre un microprocesador y un microcontrolador en el tutorial anterior, podríamos decir que la principal diferencia es la memoria en el chip. En otras palabras, un microcontrolador tiene memoria de programa (ROM) y memoria de datos (RAM) en el mismo chip (IC). Por otro lado, el microprocesador debe estar interconectado externamente con el módulo de memoria.
Así que está claro que la memoria es una parte importante de la arquitectura del microcontrolador 8051 (o de cualquier microcontrolador, para el caso). Por lo tanto, es importante comprender la organización de la memoria del microcontrolador 8051: cómo está organizada la memoria, cómo accede el procesador a cada memoria y cómo conectar la memoria externa al microcontrolador 8051.
Antes de entrar en detalles sobre la configuración de la memoria del microcontrolador 8051, primero echemos un vistazo a la arquitectura de la computadora y luego pasemos a la configuración de la memoria del microcontrolador 8051.
Por favor lea también Descripción general de la arquitectura del microcontrolador 8051.
descripción general
Tabla de contenido
tipos de arquitectura de computadora
Básicamente, los microprocesadores o microcontroladores se clasifican en función de dos tipos de arquitectura informática: la arquitectura von Neumann y la arquitectura Harvard.
arquitectura von neumann
La arquitectura von Neumann o arquitectura Princeton es una arquitectura informática en la que los programas, o instrucciones y datos, se almacenan en una única memoria.
Dado que la memoria de instrucciones y la memoria de datos son iguales, el procesador o la CPU utiliza un único bus y no puede acceder a las instrucciones y a los datos al mismo tiempo.
Este tipo de arquitectura tiene serias limitaciones en el rendimiento del sistema porque se producen cuellos de botella durante el acceso a la memoria.
arquitectura de la universidad de harvard
La arquitectura de Harvard, a diferencia de la arquitectura de von Neumann, utiliza memorias separadas para instrucciones (programas) y datos. Debido a que la arquitectura de Harvard separa la memoria de instrucciones y de datos, sus rutas de señal, o buses, también son diferentes, lo que permite a la CPU acceder tanto a instrucciones como a datos simultáneamente.
Casi todos los microcontroladores, incluido el microcontrolador 8051, implementan la arquitectura Harvard.
Configuración de la memoria del microcontrolador 8051
La memoria del microcontrolador 8051 se divide en memoria de programa (ROM) y memoria de datos (RAM). La memoria de programa de un microcontrolador 8051 se utiliza para almacenar el programa o las instrucciones que se ejecutarán. La memoria de datos, por otro lado, se utiliza para almacenar datos variables temporales y resultados intermedios.
El microcontrolador 8051 tiene ROM interna y RAM interna. Si la memoria interna es insuficiente, se puede agregar memoria externa utilizando los circuitos adecuados.
Lee este interesante post: Proyecto de microcontrolador 8051 para estudiantes de ingeniería.
Memoria de programa del microcontrolador 8051 (ROM)
En un microcontrolador 8051, el código o instrucciones a ejecutar se almacenan en la memoria del programa, también conocida como ROM del microcontrolador. El microcontrolador 8051 original de Intel tiene 4 KB de ROM interna.
Algunas variantes del 8051, como las series 8031 y 8032, no tienen ROM (memoria de programa) interna y deben interactuar con una memoria de programa externa cargada con instrucciones.
Al igual que la serie 8052, casi todos los microcontroladores 8051 modernos incluyen 8 KB de memoria interna de programa (ROM) en forma de memoria flash (ROM), lo que brinda la opción de reprogramar la memoria.
Si la ROM incorporada es de 4 KB, el espacio de direcciones será de 0000H a 0FFFH. Si el espacio de direcciones, o la dirección del programa, excede este valor, la CPU recupera automáticamente el código de la memoria del programa externa.
Esto requiere tirar del pin de acceso externo (pin EA) ALTO. Es decir, cuando el pin EA está en ALTO, la CPU primero recupera instrucciones de la memoria interna del programa en el rango de direcciones 0000H a 0FFFFH, y recupera instrucciones si la dirección de memoria excede el límite. recuperará instrucciones del rango de direcciones de ROM externa de 1000H a FFFFH.
Hay otras formas de obtener instrucciones. Obtiene todas las instrucciones solo de la memoria del programa externo (ROM externa), ignorando la ROM interna. En este escenario, el pin EA debe estar conectado a GND. En este caso, la dirección de la memoria ROM externa será 0000H a FFFFH.
Memoria de datos del microcontrolador 8051 (RAM)
La memoria de datos o RAM de un microcontrolador 8051 almacena datos temporales y resultados intermedios que se generan y utilizan durante el funcionamiento normal del microcontrolador. El microcontrolador Intel 8051 original tenía 128 B de RAM interna.
Sin embargo, casi todas las versiones modernas de los microcontroladores 8051 vienen con 256 B de RAM. En este 256B, los primeros 128B, o direcciones de memoria de 00H a 7FH, se dividen en registros de trabajo (organizados como bancos de registros), áreas direccionables por bits y RAM de uso general (también conocidas como áreas de borrador).
Los primeros 128 B de RAM (00H a 7FH), los primeros 32 B de memoria, o direcciones 00H a 1FH, constan de 32 registros de trabajo organizados como cuatro bancos con ocho registros en cada banco.
Los cuatro bancos se denominan Banco0, Banco1, Banco2 y Banco3. Cada banco consta de ocho registros denominados R0 a R7. Cada registro puede ser direccionado de dos formas: por nombre o por dirección.
Para dirigirse a una caja registradora por su nombre, primero debe seleccionar el banco correspondiente. Para seleccionar un banco, debe utilizar los bits RS0 y RS1 del registro Palabra de estado del programa (PSW) (RS0 y RS1 son los bits tercero y cuarto del registro PSW).
Al dirigirse a una caja registradora utilizando una dirección como 12H, se puede seleccionar o no el banco correspondiente. (12H corresponde al R2 del Banco2).
Los siguientes 16 B de RAM, 20H a 2FH, son ubicaciones de memoria direccionables por bits. Hay 128 bits en total, que se pueden direccionar individualmente usando 00H a 7FH, o el byte completo se puede direccionar como 20H a 2FH.
Por ejemplo, 32H es el bit 2 de la ubicación 26H de la RAM interna.
Los últimos 80 B de RAM interna, direcciones 30H a 7FH, son áreas de RAM de uso general direccionables por bytes.
Estos 128 B inferiores de RAM se pueden direccionar directa o indirectamente.
Los 128 B superiores de RAM, las direcciones de memoria 80H a FFH, están asignados a registros de funciones especiales (SFR). Los SFR controlan ciertas funciones del microcontrolador 8051. Algunos de los SFR incluyen los registros del puerto de E/S (P0, P1, P2 y P3), PSW (palabra de estado del programa), A (acumulador), IE (habilitación de interrupción) y PCON (control de energía).
Las direcciones de memoria SRF sólo se pueden direccionar directamente. Algunas direcciones de 80H a FFH no están asignadas a SFR, pero no pueden usarse como espacio RAM adicional.
Algunos microcontroladores tienen 128 B adicionales de RAM y comparten direcciones de memoria (80H a FFH) con el SFR. Sin embargo, solo se puede acceder a este bloque de RAM adicional mediante direccionamiento indirecto.
Memoria externa e interfaz de microcontrolador 8051
Siempre es bueno tener opciones para ampliar la funcionalidad de su microcontrolador, ya sea en términos de memoria, IO o cualquier otra cosa. Estas extensiones pueden ayudarle a evitar la limitación del diseño. Descubrimos que un microcontrolador 8051 típico tiene 4 KB de ROM y 128 B de RAM (la mayoría de las variantes de microcontroladores 8051 modernos tienen 8 K de ROM y 256 B de RAM).
Los diseñadores de sistemas basados en microcontroladores 8051 no se limitan a la RAM y ROM internas presentes en el microcontrolador 8051. Tiene la capacidad de conectar RAM y ROM externas, tanto memoria de datos como de programa.
El motivo de la interfaz con la memoria de programa externa, o ROM, es que los programas complejos escritos en lenguajes de alto nivel tienden a ser más grandes y ocupar más memoria.
Otra razón importante es que los chips como el 8031 y el 8032 que no tienen ROM interna necesitan interactuar con una ROM externa.
Se pueden conectar hasta 64 KB de memoria de programa (ROM) y memoria de datos (RAM) al microcontrolador 8051.
La siguiente figura muestra un diagrama de bloques que conecta 64 KB de RAM externa y 64 KB de ROM externa con un microcontrolador 8051.
Una cosa importante a recordar al conectar una memoria externa a un microcontrolador 8051 es que el puerto 0 (P0) se usa para direcciones multiplexadas y buses de datos (A0-A7 y D0-D7), por lo que el IO no se puede usar como puerto. El puerto 2 se utiliza a veces, pero no siempre, como el byte superior del bus de direcciones.
En este tutorial, analizamos la organización de la memoria del microcontrolador 8051, la memoria de programa, la memoria de datos, la ROM y la RAM internas, y cómo conectar la memoria externa (ROM y RAM) al microcontrolador 8051.
Artículo relacionado:
- Conjunto de instrucciones del microcontrolador 8051
- Registro de funciones especiales del microcontrolador 8051 (SFR)
- Diferentes tipos de memoria para Arduino | SRAM, EEPROM, Flash
- Distribución de pines ATtiny85
- Fundamentos de los programas C integrados
- Distribución de pines ATmega328P | Paquete IC, distribución de pines y descripción de pines