Está en la página 1de 16

El Microcontrolador 8051 CAP 2

CAPITULO 2
Organización de la memoria en los Microcontroladores
8052/8051

2.1. MEMORIA DE PROGRAMAS Y DATOS

Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones


para memoria de programas y memoria de datos (Figura 2.1).

La memoria de programas sólo puede ser leída y tiene como máximo 64K. En el
8052 la memoria de programas interna es de 8K y en el 8051 de 4K. La señal de
autorización de lectura en la memoria de programas externa es PSEN.

El pin EA del Microcontrolador 8052 puesto a VCC indica que el puntero de


programa busca direcciones desde la posición de memoria 0000H hasta la 1FFFH
de la memoria interna y de la 2000H ala FFFFH de la memoria externa mientras
que en el 8051 busca en la memoria interna de la dirección 000H hasta 0FFFH y
en la externa de la 1000H a la FFFFH. Si el pin EA es puesto a VSS, la búsqueda
de direcciones del programa se dirige a la memoria externa en todo momento.

_________________________________________________________________________
ITMAR Mazatlán 8 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

La memoria de datos puede ocupar, si se desea, un espacio separado de la


memoria de programas. La memoria de datos admite operaciones de lectura y
escritura y, como se puede ver en la Figura 2.1, puede ser interna o externa y
puede direccionar, como la memoria de programas, hasta 64K. La CPU genera las
señales RD (read) y WR (write) para leer o escribir en la memoria de datos
externa.

Como anteriormente se decía, la memoria de programa y la memoria de datos


pueden coexistir en el mismo espacio de direcciones o en espacios separados; en
el primer caso se dice que la memoria es combinada y en el segundo segregada.
La memoria combinada se obtiene aplicando las señales RD y PSEN a una puerta
lógica AND y utilizando la salida de la puerta como strobe del chip de memoria
externa de programas y datos. En la Figura 2.2 se pueden observar gráficamente
estos conceptos.

2.2. MEMORIA DE PROGRAMAS

En la Figura 2.3, se observa la división de la memoria de programas, según se


considere mixta (interna y externa) o completamente externa.

En la parte baja de la memoria de programas se encuentran ciertas posiciones de


memoria especiales para el tratamiento de las rutinas de interrupciones. En la
Figura 2.4 se asignan las posiciones fijas de la vectorización de estas
interrupciones, así la posición de memoria 0000 corresponde al RESET y el resto
figura señalado al margen.

_________________________________________________________________________
ITMAR Mazatlán 9 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

Como se puede observar en la Figura 2.4, el intervalo fisico entre dos


interrupciones es de 8 bytes, espacio capaz para albergar una pequeña rutina,
pero si éste no fuera suficiente se desviaría el contador de programa (PC)
mediante una instrucción de salto (JMP) a una zona amplia de la memoria de
programas capaz de contener dicha rutina.

Figura 2.4

Se ha dicho anteriormente que la memoria de programa puede ser interna (en el


propio microcontrolador) o externa (en otro chip). La selección se realiza por
hardware, con la señal EA (Extern Access), poniendo este pin a VCC o a VSS
respectivamente. La configuración del hardware para que el 8052/8051, como

_________________________________________________________________________
ITMAR Mazatlán 10 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

microprocesador, utilice como memoria de programa la memoria externa, se


muestra en la Figura 2.5.

Se observa en la figura 2.5 que las 16 líneas de dirección corresponden al Puerto


0 al Puerto 2, que están dedicados al bus de direcciones; aun más, el Puerto P0
sirve como bus de direcciones y bus de datos, multiplexados en el tiempo. Esta
operación, característica de la familia de «micros» de Intel, se realiza de la forma
siguiente:

--El Puerto P0 emite el «byte bajo» de la «palabra» del contador de programa


(PCL). Una vez estabilizada la señal sobre P0, la señal ALE (Address Latch
Enab!e) introduce esta dirección dentro del dispositivo latch 74LS373, que
pasa a apuntar la dirección en la memoria externa de programas. Al mismo
tiempo, la parte alta del contador de programa (PCH) se emite por P2.
Entonces PSEN autoriza la lectura de código de instrucción a través del puerto
P0. En la figura 2.6(A) se muestra un cronograma de esta operación.

_________________________________________________________________________
ITMAR Mazatlán 11 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

Las secuencias de búsqueda/ejecución son las mismas, sea la memoria de


programas interna o externa al microcontrolador; es decir, los tiempos de
ejecución no dependen de que se utilice la memoria interna o externa.

La Figura 2.6 muestra el cronograma de las señales implicadas en la secuencia de


búsqueda, cuando la memoria de programas es externa. La señal PSEN se activa
dos veces por ciclo máquina, para autorizar la lectura en la memoria de
programas. Si se produce un acceso a la memoria de datos, como se muestra en
la Figura 2.6(B), no se emiten los dos impulsos PSEN, puesto que el acceso a la
memoria de datos no los necesita. Más bien utiliza las señales RD (lectura) y WR
(escritura). Estas señales son generadas automáticamente cuando el nemónico
correspondiente al código de instrucción termina en la letra X.

Observe cómo el acceso a la memoria de datos toma dos ciclos más de bus que la
memoria de programas. La Figura 2.6 muestra los cronogramas relativos a ambas
secuencias de acceso, destacando la emisión de direcciones por parte de P0 y P2,
y las señales ALE y PSEN. La señal ALE se utiliza para <latchear> el «byte bajo»
de direcciones dentro del latch que se dibuja en las Figuras 2.5 y 2.7.

Cuando la CPU está ejecutando un programa en la memoria interna, PSEN no se


activa y las direcciones no se emiten por los puertos.-Sin embargo ALE se sigue
emitiendo dos veces por cada ciclo máquina, pudiendo ser utilizada como señal de
reloj externo; no obstante, como se puede ver en la Figura 2.6(B), cuando se
accede a un operando utilizando la instrucción MOVX, la señal ALE desaparece.

En la Figura 2.6(B) se puede observar cómo se realiza un acceso a la memoria


externa de programas para tomar una instrucción y en el segundo ciclo se accede

_________________________________________________________________________
ITMAR Mazatlán 12 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

a la memoria de datos externa para tomar un dato. En este caso observar que no
se activa PSEN.

_________________________________________________________________________
ITMAR Mazatlán 13 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

2.3. MEMORIA DE DATOS

El 8052/8051 puede direccionar hasta 64 KB de memoria de datos externa. (La


instrucción «MOVX» se utiliza para acceder a los datos de la memoria externa.) Si
utiliza 16 bytes de dirección hágalo con MOVX @ DPTR, y si utiliza 8 bytes,
MOVX @ Ri.

La Figura 2.7 muestra la configuración para acceder a 2 KB de memoria de datos


externa. En este caso la CPU tiene el programa interno en la ROM. El Puerto 0
multiplexea en el tiempo direcciones y datos en la RAM, y tres líneas del Puerto 2
completan el direccionamiento dé los 2 Kbytes de RAM (memoria paginada). La
CPU genera las señales de lectura (RD) y escritura (WR) que necesita la RAM
externa. En la operación de lectura de un dato se podría relacionar el cronograma
de la Figura 2.6(B) con la Figura 2.7.

En la Figura 2.8, se puede ver el mapa de la memoria de datos. La memoria


interna se encuentra dividida en tres bloques, los 128 bytes bajos, los 128 bytes
altos y el espacio ocupado, en parte, por los Registros de Función Especial (SFR).

Como se indica en la Figura 2.7, la memoria externa se puede direccionar


utilizando las líneas de E/S del Puerto 2 a voluntad, en función de la cantidad de
memoria a direccionar. Si el direccionamiento es de 8 bytes (no utiliza el Puerto 2),
el contenido de P2 permanece durante todo el ciclo para utilizar la memoria

_________________________________________________________________________
ITMAR Mazatlán 14 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

paginada. También se pueden utilizar 2 bytes de direcciones; byte bajo en el


Puerto 0 y byte alto en el Puerto 2. Este es el sistema clásico que permite
direccionar un máximo de 64 Kbytes.

En la memoria de datos interna se puede acceder a un total de 384 bytes para el


8052 y a 256 bytes para el 8051 incluido el área de los registros especiales (SFR),
combinando los bloques de memoria de 128 bytes con el modo direccionamiento.

A continuación, se va a analizar las tres áreas de memoria interna: ,


• Área de direccionamiento sólo indirecto (para el 8052).
• Área de direccionamiento indirecto y directo.
• Área de direccionamiento directo y zona SFR.

2.4. AREA DE DIRECCIONAMIENTO SOLO INDIRECTO (para el


8052)

En la Figura 2.8 se observa que el área SFR y el de direccionamiento indirecto


(80H a FFH) tienen las mismas direcciones. Sin embargo están separados por
caminos de acceso diferentes, según el direccionamiento de las instrucciones*.

Así, la instrucción:

MOV 90H, #ABH

_________________________________________________________________________
ITMAR Mazatlán 15 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

escribe ABH en la localización 90H de la memoria RAM de datos y concretamente


(por utilizar direccionamiento inmediato) en el Puerto 1 (90H = P1 (port1)) del área
SFR.
En cambio, las instrucciones (en un 8052):

MOV R0, #90H


MOV @R0, #ABH

escnben ABH en la dirección 90H de la memoria de dalos y por utilizar


direccionamiento indirecto escribe en la media página que asoma detrás de la
media página del SFR en la Figura 2.8.

Después de la ejecución de ambos modos de direccionamiento, se hallará ABH en


el registro imagen del Puerto 1 (P1) en el SFR y ABH en la dirección 90H (Figura
2.9).

2.5. AREA DE DIRECCIONAMIENTO DIRECTO E INDIRECTO


(8052/8051)

Los 128 bytes a los que se puede acceder desde ambos direccionamientos,
directo e indirecto, pueden ser divididos en tres segmentos (Figura 2.10).

A continuación se explican brevemente las características de esta área.

_________________________________________________________________________
ITMAR Mazatlán 16 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

• Banco de registros (banco 0, 1, 2 y 3). Registros R0 a R7 por banco

Los registros se localizan desde la dirección 00H a 1FH (32 bytes). Después de la
operación de inicialización del microcontrolador, aplicando un nivel alto a la
terminal RESET (véase Apartado 2.7 de este capítulo), el banco operativo por
defecto es el banco 0. La selección de otro banco de registros debe hacerse por
software escribiendo en el registro de estado PSW (véase Tabla 2.1).

El RESET inicializa el Stack Póinter (SP) en la dirección de memoria 07H y se


incrementa inmediatamente a la dirección 08H que es el primer registro R0 del
segundo banco de registros. Con el fin de usar más de un banco de registros, el
SP se puede inicializar en otra localización de memoria.

• Sub área direccionable bit a bit

Esta área tiene una longitud de 16 bytes (segmento 20H a 2FH). Cada uno de los
128 bits de este segmento se puede direccionar directamente (00H a 7FH).

Los bits se pueden referir de dos formas diferentes, bien por sus direcciones (bits
00H a bits 7FH) o por los bytes que los contienen (20H a 2FH). Esto es, los bits 0
al 7 pueden ser referidos como los bits 20.0 a 20.7 y del 8 al F, como 21.0 a 21.7,
etc.
Cada uno de los 16 bytes de este segmento puede ser también direccionado como
Byte.

_________________________________________________________________________
ITMAR Mazatlán 17 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

• Sub área Scratch Pad

La memoria scratch pad se entiende como la memoria de un block de notas


de rápido acceso, pero de escasa capacidad. Ocupa las posiciones 30H a 7FH.
Es la memoria de trabajo (RAM) del usuario.

2:6. AREA DE REGISTROS O FUNCIONES ESPECIALES


(8052/8051)

La Tabla 2.1 muestra los registros especiales que utiliza el 8052/8051, así como
sus direcciones. Además de la lista se procederá a dar una breve explicación de
los mismos, considerando que un análisis más profundo corresponde hacerlo en
los ejercicios de aplicación que se verán más adelante.

* Direccionable «bit a bi!»,


+ Sólo para el 8052.
Nota: Los números hexadecimales que, como cifra más significativa tienen un carácter alfabético, en
algunas ocasiones y para evitar equívocos, van precedidos de la cifra «cero» (0),

_________________________________________________________________________
ITMAR Mazatlán 18 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

ACC Acumulador: Es un registro de propósito general de los


Microcontroladores 8052/8051 y, por su frecuencia de intervención, el más
importante. En la programación de aplicaciones en lenguaje ensamblador se hará
referencia a él como REGISTRO A.

B Registro B: Está especializado en las operaciones de multiplicación


y división, además de ser usado como registro de datos de propósito general.

PSW Program Status Word: Contiene información del estado del CPU
en cada ciclo de instrucción. El cuadro 2.1 muestra el formato de la palabra de
estado.

SP Stack Pointer: Es un registro de 8 bits. Después del RESET, el SP se


carga por defecto con la dirección 07H. Al ejecutar la primera instrucción PUSH o
CALL el SP se incrementa a la posición 08H.

DPL y DPH Data Pointer: Su propósito principal es contener la dirección del


puntero de datos. Puede ser manipulado como un registro de 16 bits (DPTR) o
como dos registros independientes de 8 bits.

_________________________________________________________________________
ITMAR Mazatlán 19 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

P0, P1, P2 y P3 Puertos 0, 1, 2 y 3: Son los latchs de los puertos P0,


P1, P2 y P3.

SBUF Serial Data Buffer: Son dos registros buffer físicamente


separados, pero a efectos de programación es el mismo, buffer de transmisión y
buffer de recepción. Al escribir un dato en SBUF, el mismo comienza a
transmitirse por la línea correspondiente del puerto serie. En el modo ‘recepción’ el
dato que ingresa por la línea de entrada del puerto serie se registra en el buffer
receptor (SBUF).

TH0-TL0, TH1-TL1, TH2-TL2 Timer Registers: Son pares de registros de 16


bits, que pueden actuar como temporizadores o contadores.

RCAP2H-RCA2PL Capture Registers: Este par de registros


actúan como registros de “captura” del Timer 2, cuando este trabaja en “modo
captura”. En este modo RCAP2H y RCAP2L responden a la transición del flanco
en el pin T2EX, copiando los valores de TH2 y TL2 sobre ellos mismos. El Timer
2, en el modo de trabajo con «autorrecarga», obtiene los valores de recarga de
estos registros.

PCON Power Control Register: Para aplicaciones en donde la


característica de consumo sea crítica, la versión CHMOS ofrece dos modos de
trabajo de bajo consumo: el modo POWER DOWN y el IDLE. También ofrece,
este registro, posibilidades de variar la velocidad de comunicación en el canal
SERIE.

TCON Timer/Counter Control Register: Este es un registro que


controla fundamentalmente el modo de operación de los Timers 0 y 1 en relación
con las interrupciones y los flancos de activación de las mismas.

TMOD Timer /Counter Mode Control Register: Selecciona el Timer 0


o 1, el modo de operación (Modo 0, 1 o 2), si actúa como temporizador o como
contador, etc.

T2CON Timer/Counter 2 Control Register: Lo mismo que con TCON y


TMOD, pero aplicado al Timer 2.

IE Interrupt Enable Register: Es un registro para habilitar las


interrupciones. Permite que se atiendan todas las interrupciones por el
microcontrolador o sólo las que el usuario considere aceptables.

_________________________________________________________________________
ITMAR Mazatlán 20 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

IP Interrupt Priority Register: Cada interrupción puede programarse


individualmente en el nivel 1 o 2 de prioridad, poniendo a 1 o a 0 los bits de este
registro. Una interrupción de bajo nivel de prioridad se puede interrumpir por otra
de un nivel más alto. Una interrupción de alto nivel de prioridad no puede ser
interrumpida por otra interrupción de un nivel más bajo (véase Capítulo 10).
SCON Serial Port Control Register: Este registro se encarga de
establecer los parámetros para la transmisión o recepción de datos en
comunicación serie; así, si se trata de una transmisión o recepción, formato de la
palabra (bit de start, bits de datos, bit de .Stop), velocidad, etc.

Finalmente, en la Tabla 2.2 se hace .referencia al mapa .de memoria de los


registros SFR. Los registros que pertenecen a la columna izquierda de la tabla
están en un área direccionable «bit a bit» que corresponde a las direcciones 80H,
88H, 90H, 98H, .:., F8H.

Los registros que están encerrados entre paréntesis pertenecen solamente al


8052.

2.7. OPERACION RESET

Conectado al «pin» (9) de entrada RST=RESET se encuentra un Schmitt Trigger


que va a propiciar la operación de inicialización de los dispositivos internos del
microcontrolador.

_________________________________________________________________________
ITMAR Mazatlán 21 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

Un RESET se alcanza cuando se mantiene en el pin RST, un nivel lógico alto al


menos durante dos ciclos máquina (24 períodos de reloj), mientras el oscilador
está funcionando. La CPU responde generando un RESET interno, según el
cronograma mostrado en la Figura 2.12.

La señal externa de RESET es asíncrona al reloj interno. El pin RESET es


muestreado durante la fase 2 del estado 5 de cada ciclo máquina. Los pines de los
puertos mantendrán sus actividades durante 19 períodos de reloj, después de que
el nivel lógico del pin RESET haya sido detectado; esto es, durante 19 a 31
períodos de reloj, después de haber aplicado externamente un nivel lógico alto al
pin RESET
.
El algoritmo del RESET interno escribe «ceros» en todos los registros del SFR,
excepto en los latches de los puertos, el Satck Pointer y el registro SBUF. Los
latches de los puertos son inicializados a FFH (quedan programados para la
lectura), el Stack Pointer a 07H y el SBUF es indeterminado. En la Tabla 2.3 se
muestran los valores que toman los registros después de un RESET.

_________________________________________________________________________
ITMAR Mazatlán 22 Ing. Rufino J. Domínguez Arellano.
El Microcontrolador 8051 CAP 2

El RESET automático del microcontrolador se produce al aplicar la tensión de


alimentación VCC al terminal RST a través de un capacitor de 10 µF y una
resistencia de 8.2 KΩ, como indica la figura 2.13, procurando que el tiempo de
flanco de subida de la alimentación no exceda de un milisegundo y el comienza de
los pulsos del reloj no exceda de 10 mS.

_________________________________________________________________________
ITMAR Mazatlán 23 Ing. Rufino J. Domínguez Arellano.

También podría gustarte