capitulo 2 organización de la memoria en los ... · los microcontroladores 8052/8051 tienen...

16
El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatlán 8 Ing. Rufino J. Domínguez Arellano. 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.

Upload: dangkhue

Post on 16-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.

Page 2: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.

Page 3: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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

Page 4: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.

Page 5: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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

Page 6: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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

Page 7: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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

Page 8: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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

Page 9: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.

Page 10: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

• 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.

Page 11: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

• 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),

Page 12: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.

Page 13: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.

Page 14: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.

Page 15: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.

Page 16: CAPITULO 2 Organización de la memoria en los ... · Los Microcontroladores 8052/8051 tienen separados los espacios de direcciones para memoria de programas y memoria de datos (Figura

El Microcontrolador 8051 CAP 2

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

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.