2 organizacion de_la_memoria

Embed Size (px)

Citation preview

  • 1. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 8 Ing. Rufino J. Domnguez Arellano. CAPITULO 2 Organizacin 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 slo puede ser leda y tiene como mximo 64K. En el 8052 la memoria de programas interna es de 8K y en el 8051 de 4K. La seal de autorizacin 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 posicin 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 direccin 000H hasta 0FFFH y en la externa de la 1000H a la FFFFH. Si el pin EA es puesto a VSS, la bsqueda de direcciones del programa se dirige a la memoria externa en todo momento.

2. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 9 Ing. Rufino J. Domnguez 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 seales RD (read) y WR (write) para leer o escribir en la memoria de datos externa. Como anteriormente se deca, 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 seales RD y PSEN a una puerta lgica 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 grficamente estos conceptos. 2.2. MEMORIA DE PROGRAMAS En la Figura 2.3, se observa la divisin de la memoria de programas, segn 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 vectorizacin de estas interrupciones, as la posicin de memoria 0000 corresponde al RESET y el resto figura sealado al margen. 3. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 10 Ing. Rufino J. Domnguez 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 pequea rutina, pero si ste no fuera suficiente se desviara el contador de programa (PC) mediante una instruccin 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 seleccin se realiza por hardware, con la seal EA (Extern Access), poniendo este pin a VCC o a VSS respectivamente. La configuracin del hardware para que el 8052/8051, como 4. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 11 Ing. Rufino J. Domnguez 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 lneas de direccin corresponden al Puerto 0 al Puerto 2, que estn dedicados al bus de direcciones; aun ms, el Puerto P0 sirve como bus de direcciones y bus de datos, multiplexados en el tiempo. Esta operacin, caracterstica 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 seal sobre P0, la seal ALE (Address Latch Enab!e) introduce esta direccin dentro del dispositivo latch 74LS373, que pasa a apuntar la direccin 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 cdigo de instruccin a travs del puerto P0. En la figura 2.6(A) se muestra un cronograma de esta operacin. 5. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 12 Ing. Rufino J. Domnguez Arellano. Las secuencias de bsqueda/ejecucin son las mismas, sea la memoria de programas interna o externa al microcontrolador; es decir, los tiempos de ejecucin no dependen de que se utilice la memoria interna o externa. La Figura 2.6 muestra el cronograma de las seales implicadas en la secuencia de bsqueda, cuando la memoria de programas es externa. La seal PSEN se activa dos veces por ciclo mquina, 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. Ms bien utiliza las seales RD (lectura) y WR (escritura). Estas seales son generadas automticamente cuando el nemnico correspondiente al cdigo de instruccin termina en la letra X. Observe cmo el acceso a la memoria de datos toma dos ciclos ms de bus que la memoria de programas. La Figura 2.6 muestra los cronogramas relativos a ambas secuencias de acceso, destacando la emisin de direcciones por parte de P0 y P2, y las seales ALE y PSEN. La seal ALE se utiliza para 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 mquina, pudiendo ser utilizada como seal de reloj externo; no obstante, como se puede ver en la Figura 2.6(B), cuando se accede a un operando utilizando la instruccin MOVX, la seal ALE desaparece. En la Figura 2.6(B) se puede observar cmo se realiza un acceso a la memoria externa de programas para tomar una instruccin y en el segundo ciclo se accede 6. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 13 Ing. Rufino J. Domnguez Arellano. a la memoria de datos externa para tomar un dato. En este caso observar que no se activa PSEN. 7. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 14 Ing. Rufino J. Domnguez Arellano. 2.3. MEMORIA DE DATOS El 8052/8051 puede direccionar hasta 64 KB de memoria de datos externa. (La instruccin MOVX se utiliza para acceder a los datos de la memoria externa.) Si utiliza 16 bytes de direccin hgalo con MOVX @ DPTR, y si utiliza 8 bytes, MOVX @ Ri. La Figura 2.7 muestra la configuracin 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 lneas del Puerto 2 completan el direccionamiento d los 2 Kbytes de RAM (memoria paginada). La CPU genera las seales de lectura (RD) y escritura (WR) que necesita la RAM externa. En la operacin de lectura de un dato se podra 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 Funcin Especial (SFR). Como se indica en la Figura 2.7, la memoria externa se puede direccionar utilizando las lneas de E/S del Puerto 2 a voluntad, en funcin 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 8. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 15 Ing. Rufino J. Domnguez Arellano. paginada. Tambin se pueden utilizar 2 bytes de direcciones; byte bajo en el Puerto 0 y byte alto en el Puerto 2. Este es el sistema clsico que permite direccionar un mximo 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 continuacin, se va a analizar las tres reas de memoria interna: , rea de direccionamiento slo 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 estn separados por caminos de acceso diferentes, segn el direccionamiento de las instrucciones*. As, la instruccin: MOV 90H, #ABH 9. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 16 Ing. Rufino J. Domnguez Arellano. escribe ABH en la localizacin 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 direccin 90H de la memoria de dalos y por utilizar direccionamiento indirecto escribe en la media pgina que asoma detrs de la media pgina del SFR en la Figura 2.8. Despus de la ejecucin de ambos modos de direccionamiento, se hallar ABH en el registro imagen del Puerto 1 (P1) en el SFR y ABH en la direccin 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 continuacin se explican brevemente las caractersticas de esta rea. 10. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 17 Ing. Rufino J. Domnguez Arellano. Banco de registros (banco 0, 1, 2 y 3). Registros R0 a R7 por banco Los registros se localizan desde la direccin 00H a 1FH (32 bytes). Despus de la operacin de inicializacin del microcontrolador, aplicando un nivel alto a la terminal RESET (vase Apartado 2.7 de este captulo), el banco operativo por defecto es el banco 0. La seleccin de otro banco de registros debe hacerse por software escribiendo en el registro de estado PSW (vase Tabla 2.1). El RESET inicializa el Stack Pinter (SP) en la direccin de memoria 07H y se incrementa inmediatamente a la direccin 08H que es el primer registro R0 del segundo banco de registros. Con el fin de usar ms de un banco de registros, el SP se puede inicializar en otra localizacin 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 tambin direccionado como Byte. 11. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 18 Ing. Rufino J. Domnguez Arellano. Sub rea Scratch Pad La memoria scratch pad se entiende como la memoria de un block de notas de rpido 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. Adems de la lista se proceder a dar una breve explicacin de los mismos, considerando que un anlisis ms profundo corresponde hacerlo en los ejercicios de aplicacin que se vern ms adelante. * Direccionable bit a bi!, + Slo para el 8052. Nota: Los nmeros hexadecimales que, como cifra ms significativa tienen un carcter alfabtico, en algunas ocasiones y para evitar equvocos, van precedidos de la cifra cero (0), 12. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 19 Ing. Rufino J. Domnguez Arellano. ACC Acumulador: Es un registro de propsito general de los Microcontroladores 8052/8051 y, por su frecuencia de intervencin, el ms importante. En la programacin de aplicaciones en lenguaje ensamblador se har referencia a l como REGISTRO A. B Registro B: Est especializado en las operaciones de multiplicacin y divisin, adems de ser usado como registro de datos de propsito general. PSW Program Status Word: Contiene informacin del estado del CPU en cada ciclo de instruccin. El cuadro 2.1 muestra el formato de la palabra de estado. SP Stack Pointer: Es un registro de 8 bits. Despus del RESET, el SP se carga por defecto con la direccin 07H. Al ejecutar la primera instruccin PUSH o CALL el SP se incrementa a la posicin 08H. DPL y DPH Data Pointer: Su propsito principal es contener la direccin del puntero de datos. Puede ser manipulado como un registro de 16 bits (DPTR) o como dos registros independientes de 8 bits. 13. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 20 Ing. Rufino J. Domnguez 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 fsicamente separados, pero a efectos de programacin es el mismo, buffer de transmisin y buffer de recepcin. Al escribir un dato en SBUF, el mismo comienza a transmitirse por la lnea correspondiente del puerto serie. En el modo recepcin el dato que ingresa por la lnea 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 actan como registros de captura del Timer 2, cuando este trabaja en modo captura. En este modo RCAP2H y RCAP2L responden a la transicin 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 caracterstica de consumo sea crtica, la versin CHMOS ofrece dos modos de trabajo de bajo consumo: el modo POWER DOWN y el IDLE. Tambin ofrece, este registro, posibilidades de variar la velocidad de comunicacin en el canal SERIE. TCON Timer/Counter Control Register: Este es un registro que controla fundamentalmente el modo de operacin de los Timers 0 y 1 en relacin con las interrupciones y los flancos de activacin de las mismas. TMOD Timer /Counter Mode Control Register: Selecciona el Timer 0 o 1, el modo de operacin (Modo 0, 1 o 2), si acta 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 slo las que el usuario considere aceptables. 14. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 21 Ing. Rufino J. Domnguez Arellano. IP Interrupt Priority Register: Cada interrupcin puede programarse individualmente en el nivel 1 o 2 de prioridad, poniendo a 1 o a 0 los bits de este registro. Una interrupcin de bajo nivel de prioridad se puede interrumpir por otra de un nivel ms alto. Una interrupcin de alto nivel de prioridad no puede ser interrumpida por otra interrupcin de un nivel ms bajo (vase Captulo 10). SCON Serial Port Control Register: Este registro se encarga de establecer los parmetros para la transmisin o recepcin de datos en comunicacin serie; as, si se trata de una transmisin o recepcin, 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 estn en un rea direccionable bit a bit que corresponde a las direcciones 80H, 88H, 90H, 98H, .:., F8H. Los registros que estn encerrados entre parntesis 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 operacin de inicializacin de los dispositivos internos del microcontrolador. 15. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 22 Ing. Rufino J. Domnguez Arellano. Un RESET se alcanza cuando se mantiene en el pin RST, un nivel lgico alto al menos durante dos ciclos mquina (24 perodos de reloj), mientras el oscilador est funcionando. La CPU responde generando un RESET interno, segn el cronograma mostrado en la Figura 2.12. La seal externa de RESET es asncrona al reloj interno. El pin RESET es muestreado durante la fase 2 del estado 5 de cada ciclo mquina. Los pines de los puertos mantendrn sus actividades durante 19 perodos de reloj, despus de que el nivel lgico del pin RESET haya sido detectado; esto es, durante 19 a 31 perodos de reloj, despus de haber aplicado externamente un nivel lgico 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 despus de un RESET. 16. El Microcontrolador 8051 CAP 2 _________________________________________________________________________ ITMAR Mazatln 23 Ing. Rufino J. Domnguez Arellano. El RESET automtico del microcontrolador se produce al aplicar la tensin de alimentacin VCC al terminal RST a travs 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 alimentacin no exceda de un milisegundo y el comienza de los pulsos del reloj no exceda de 10 mS.