You are on page 1of 48

1 Estructura bsica de un sistema microprocesador

15

1 Estructura bsica de un sistema microprocesador


1.1 Introduccin
Un sistema microprocesador se puede concebir como un sistema procesador secuencial de instrucciones (figura 1.1), que puede ejecutar un conjunto determinado de instrucciones, lo que hace que sea un sistema flexible, capaz de controlar una amplia gama de aplicaciones, de abaratar costos y de reducir el tiempo necesario de diseo.

Algoritmo o programa Salida del proceso Proceso a gobernar

Entradas Sistema procesador

Salidas

Fig. 1.1 Esquema general de un sistema procesador

Un sistema procesador puede ser de programa fijo, como es el caso de las calculadoras de bolsillo no programables, o de lgica programable, como es el caso de los microprocesadores, microcontroladores, procesadores digitales de seal (DSP), etc. Los sistemas procesadores tambin pueden trabajar en paralelo, aumentando la velocidad de ejecucin de los programas.

1.2 Estructura bsica de un sistema microprocesador


La estructura bsica de un sistema microprocesador (figura 1.2), se basa en la arquitectura de Von Newman que, a pesar de los grandes avances producidos en la tecnologa de los semiconductores, ha permanecido inalterada desde el momento de su concepcin. En la estructura bsica de un sistema microprocesador (figura 1.2) se distinguen los siguientes bloques: la unidad central de proceso CPU, la memoria, el mdulo de entradas/salidas y los buses de direcciones, de datos y de control.

Los autores, 2001; Edicions UPC, 2001.

16

Microcontroladores MCS-51 y MCS-251

Memoria (M)

Bus de direcciones

Unidad central de proceso (CPU)

Mdulo de E/S Bus de control

Bus de datos
Fig. 1.2 Diagrama de bloques de la estructura bsica de un sistema microprocesador

La CPU est formada principalmente por dos bloques funcionales: la unidad de control y la unidad de proceso. La unidad de control se encarga de buscar, interpretar y ejecutar las instrucciones almacenadas en la memoria. La unidad de proceso se encarga de realizar una serie de operaciones aritmticas, lgicas, de transferencia de datos, etc. La memoria est destinada a almacenar las instrucciones y los datos del programa y los resultados obtenidos en su ejecucin. Sobre la memoria opera la CPU, leyendo instrucciones y escribiendo o leyendo datos. Existen dos tipos bsicos de memoria: la memoria ROM de slo lectura y la memoria RAM de lectura/escritura. Para acceder a la memoria se deben realizar una seleccin previa de sta, ms un direccionamiento de la posicin concreta a que se desea acceder para la lectura o la escritura. El mdulo de entradas/salidas, E/S o I/O, permite la comunicacin del sistema microprocesador con el exterior, haciendo que este sea un sistema abierto, es decir, accesible por dispositivos externos. Los buses son el conjunto de lneas fsicas que permiten la transferencia de informacin entre todos los bloques que constituyen el sistema microprocesador. Los buses se pueden clasificar, en funcin del tipo de informacin que transportan, en tres tipos: el bus de direcciones, el bus de datos y el bus de control. El bus de direcciones determina la direccin de memoria a que se va a acceder por la CPU y, tambin, se utiliza para seleccionar, dentro de un rango de direcciones, distintos tipos de memoria, de la misma forma que para seleccionar distintos tipos de perifricos a travs del mdulo de E/S.

1.2.1 Unidad central de proceso (CPU) La CPU est formada por la unidad de control y por la unidad de proceso. La unidad de control gestiona el funcionamiento completo de la CPU y del resto de los bloques del sistema

Los autores, 2001; Edicions UPC, 2001.

1 Estructura bsica de un sistema microprocesador

17

microprocesador, encargndose de buscar, decodificar, ejecutar las instrucciones y de generar las seales de control adecuadas para ello. La unidad de proceso est formada por la unidad aritmtico-lgica, ALU, y por los registros del sistema microprocesador. La ALU se encarga de realizar las operaciones aritmticas y lgicas del sistema, como pueden ser la suma, resta, multiplicacin, funcin AND lgica, funcin OR lgica, etc. En los registros se almacenan datos que son el origen o el destino de las operaciones de la ALU, y el origen o destino de la transferencia de datos entre la CPU (figura 1.2) y la memoria del sistema. La unidad de control tiene tambin el registro PC (Program Counter), o contador de programa, que es un registro especial encargado de enviar, por medio del bus de direcciones, la posicin de memoria que corresponde a la siguiente instruccin que se debe ejecutar. El contador de programa, PC, se actualiza automticamente cuando se ejecuta una instruccin, de manera que siempre apunta a la siguiente instruccin que se debe ejecutar en el programa. El conjunto de bloques formado por la unidad de control y la unidad de proceso constituye la CPU, que se caracteriza por el repertorio de instrucciones que es capaz de ejecutar.

Bus interno de la CPU Unidad de proceso (UP) Registro de 2 operando Acumulador

Unidad Registro de estado

ALU

Control

de control (UC)

Fig. 1.3 Diagrama de bloques de la CPU

De la figura 1.3 cabe destacar al acumulador como un registro de suma importancia, pues siempre suele recibir uno de los operandos que intervienen en una operacin aritmtica, o suele ser, en la CPU, el registro destinatario del resultado obtenido en la operacin. Otro registro que se debe destacar es el registro de estado, debido a que contiene bits que actan como indicadores o alarmas de ciertos sucesos acontecidos en las operaciones aritmticas. Uno de los bits que suele llevar es el bit C de acarreo, que se activa en operaciones de suma y resta; o el bit P de paridad, que indica la paridad par o impar del nmero contenido en el acumulador.

Los autores, 2001; Edicions UPC, 2001.

18

Microcontroladores MCS-51 y MCS-251

1.2.2 Mdulo de entradas/salidas (E/S) El sistema microprocesador necesita de dispositivos de entrada/salida para gobernar y comunicarse con el entorno de la aplicacin, con la funcin principal de hacer de interfaz entre el sistema y los perifricos externos asociados a ste.
Bus de direcciones

Mdulo
Bus de control

Enlaces con dispositivos perifricos

de E/S

Bus de datos

Fig. 1.4 Modelo genrico de un mdulo de E/S

Las operaciones de E/S se hacen sobre una amplia gama de perifricos conectados al sistema microprocesador (impresoras, teclados, monitores, convertidores A/D y D/A, sensores, actuadores, etc.), y con los que se suelen intercambiar seales de control y de datos. En estas operaciones se debe coordinar el trfico entre los recursos internos del sistema microprocesador y los perifricos, pues a menudo la velocidad de transferencia de datos de los perifricos es ms lenta, o necesitan un determinado sincronismo. El mdulo de E/S se puede realizar por medio de instrucciones especficas que lo conforman y que residen en el programa del sistema microprocesador; se puede hacer mediante interrupciones, donde los perifricos pueden activar lneas de interrupcin de la CPU, que detienen la ejecucin del programa y pasan a ejecutar un programa especfico pensado para atender al perifrico que ha causado la interrupcin; se puede hacer tratando las entradas/salidas como posiciones de memoria, donde se seleccionan los perifricos mediante ciertos rangos de direcciones y se envan y reciben datos que gestionan al perifrico. Tambin se ofrecen en el mercado numerosos circuitos integrados de soporte al sistema microprocesador, que suelen ser configurables mediante software y son capaces de adaptar al sistema todo tipo de perifricos.

1.2.3 Buses del sistema Un bus es el medio por el cual se transmite informacin por los distintos mdulos que componen un sistema microprocesador. Un bus puede ser unidireccional o bidireccional, es decir, puede transmitir la informacin en una nica direccin, del emisor al receptor, o en ambas direcciones, del emisor al receptor, y viceversa. Cuando hay varios dispositivos conectados a un mismo bus, como ocurre, por ejemplo, con el bus de datos, stos disponen de la caracterstica triestado, que consiste en un estado de alta impedancia en las lneas del dispositivo conectados al bus, de forma que permite que quede desconectado elctricamente del bus, y que as la CPU pueda acceder a uno de los distintos dispositivos conectados al mismo.

Los autores, 2001; Edicions UPC, 2001.

1 Estructura bsica de un sistema microprocesador

19

Un dispositivo triestado tiene una seal de control que determina si el estado ser de alta impedancia, o no. El estado en alta impedancia hace que el dispositivo se desconecte elctricamente de la lnea en cuestin (figuras 1.5 y 1.6).
Buffer

Alta impedancia 0 Control 1 b Control 1 1 a 0 0 b a

Entradas

Salidas

Fig. 1.5 Conexin de dos buffers triestados a una misma lnea de bus

. . . . . . .

. . . . . . .

. . . . . . .

Control
Fig. 1.6 Estructura de un buffer triestado

La figura 1.5 muestra la conexin de dos buffers de salida a una misma lnea de un bus. En esta figura se observa el caso en que, para evitar colisiones entre los estados lgicos de la salida de ambos buffers, el buffer a permanece en estado de alta impedancia mientras el buffer b est transmitiendo informacin por la lnea del bus. El bus de direcciones tiene la tarea de llevar la direccin de la posicin de memoria, o del mdulo de E/S, a la que la CPU desea acceder. El contenido del bus es unidireccional y siempre lo proporciona la CPU a travs de la unidad de control. El nmero de lneas del bus de direcciones est relacionado con la capacidad de direccionamiento de la CPU. Por ejemplo, si se desea direccionar una memoria de 64kbytes, es decir, con 216 posiciones de memoria, sern necesarias 16 lneas de direccin para formar el bus de direcciones. El bus de datos debe soportar el traspaso de informacin entre la CPU, la memoria y los mdulos de E/S. El bus de datos es bidireccional y triestado, pues est compartido por todos los bloques del sistema microprocesador. El bus de control est formado por las lneas destinadas a llevar las seales que gobiernan y sincronizan todo el sistema microprocesador, como son las seales del tipo /RD, /WR, ALE, reset, lneas de interrupcin, etc. Con estas seales se llevan a cabo distintas operaciones como, por ejemplo, la seleccin, lectura y escritura en las memorias externas, o en los perifricos externos. Uno de los problemas que se debe considerar en un bus es la carga que puede soportar, es decir, el nmero de dispositivos o de puertas lgicas que se pueden conectar a una misma lnea. En general, cada nuevo dispositivo receptor que se conecta a una lnea supone un incremento en la corriente que

Los autores, 2001; Edicions UPC, 2001.

20

Microcontroladores MCS-51 y MCS-251

debe suministrar el emisor cuando est a nivel alto, VOH (1 lgico), y en la corriente que debe absorber cuando est a nivel bajo, VOL (0 lgico), tal y como se indica en las figuras 1.7 y 1.8, respectivamente. Las especificaciones de VOH, VOL, IOH, IOL, IIH y IIL, se dan para el peor de los casos y dependen de la tecnologa o de la familia lgica utilizada. La tabla 1.1 muestra el valor de estos parmetros para circuitos integrados TTL, CMOS y LSTTL (Low-Power Schottky TTL). En esta tabla las corrientes negativas indican que la corriente se suministra por el transmisor. Con esta tabla se puede determinar el nmero mximo de receptores que puede soportar un emisor especfico. Receptores Receptores

Emisor
I OH V=VOH I H1

I H2 I H3

I H4

Emisor
I OL V=VOL I L1

I L2 I L3

I L4

I OH = I H1 + I H 2 + I H 3 + I H 4

I OL = I L1 + I L 2 + I L3 + I L 4

Fig. 1.7 Corriente que suministra el emisor cuando su salida est a nivel alto, VOH (1 lgico)

Fig. 1.8 Corriente que absorbe el emisor cuando su salida est a nivel bajo, VOL (0 lgico)

Tabla 1.1 Especificaciones de nivel lgico para las familias lgicas TTL, LSTTL y CMOS (esta ltima dada para la familia GS CD4000 serie B con una tensin de alimentacin de VDD=5V)

Descripcin VOH VOL VIH VIL IIH IIL IOH IOL


Valor mnimo de tensin de salida a 1 lgico Valor mximo de tensin de salida a 0 lgico Valor mnimo de tensin de entrada aceptable como un 1 lgico Valor mximo de tensin de entrada aceptable como un 0 lgico Corriente mxima absorbida a 1 lgico Corriente mxima suministrada a 0 lgico Corriente mxima de salida a 1 lgico Corriente mxima absorbida de salida a 0 lgico

TTL 2.4V 0.4V 2.0V 0.8V 40A -1.6mA -400A 16mA

CMOS 4.95V 0.05V 3.5V 1.5V 0.3A -0.3A -0.16mA 0.44mA

LSTTL 2.7V 0.5V 2.0V 0.8V 20A -0.4mA -400A 8mA

Otro problema que es comn a los buses es el de las reflexiones que se pueden producir en las lneas, debido a que un pulso situado en una lnea de un bus se comporta de manera parecida a una seal de radio frecuencia en una lnea de transmisin. Este fenmeno afecta sobre todo a las lneas de larga longitud, haciendo que aparezcan sobreoscilaciones y transitorios repentinos en la recepcin de los pulsos transmitidos por las lneas, que distorsionan los niveles lgicos transmitidos. Las reflexiones producidas en las lneas (figura 1.9) son debidas a la falta de adaptacin de impedancias entre el emisor y el receptor, de forma que el receptor no absorbe toda la energa transmitida y parte de esta energa se refleja hacia el emisor.

Los autores, 2001; Edicions UPC, 2001.

1 Estructura bsica de un sistema microprocesador

21

Emisin
Pulso corto

Recepcin

Pulso largo

Fig. 1.9 Reflexiones en el receptor debidas a reflexiones producidas en la lnea

Para que no se produzcan reflexiones la impedancia de entrada de los receptores debe ser idntica a la impedancia que presenta la lnea conectada a stos. La impedancia de una lnea trazada en un circuito impreso suele tener un valor comprendido entre los 100 y 200, por lo que la adaptacin se puede conseguir conectando una resistencia de adaptacin de 180 220 entre la entrada del receptor y masa, lo que se denomina terminacin pasiva. Terminacin pasiva 220 Receptor

Emisor

5V Terminacin activa Emisor 470 220 Receptor

Fig. 1.10 Terminaciones pasiva y activa de una lnea de un bus para eliminar o reducir las reflexiones en lneas de larga longitud

La terminacin pasiva, no obstante, presenta el problema de que la resistencia de adaptacin es una carga ms para el transmisor, por lo que reduce el nmero de receptores que se le pueden conectar. Esta situacin se puede mejorar utilizando un divisor de tensin que sita la lnea a la mitad del margen de tensin para la familia TTL, y que, adems, adapta el receptor a la impedancia caracterstica de la lnea (figura 1.10). Esta solucin se denomina terminacin activa. Con la terminacin activa se asegura que, al menos, la amplitud del pulso reflejado ser siempre menor que el valor del pulso transmitido, eliminando las reflexiones de forma paulatina.

1.3 Estructura general de un sistema basado en microprocesador


La estructura de los diferentes sistemas basados en microprocesadores suele presentar bastantes caractersticas comunes, como son los dispositivos de entrada/salida, las memorias para albergar

Los autores, 2001; Edicions UPC, 2001.

22

Microcontroladores MCS-51 y MCS-251

programas y datos, los dispositivos de comunicacin asncrona con otros sistemas, los dispositivos de entrada y visualizacin de informacin, como mediante teclados y visualizadores, etc. La figura 1.11 muestra la estructura general de un sistema basado en microprocesador, considerando una buena parte de los dispositivos necesarios para desarrollar satisfactoriamente cualquier aplicacin, sin llegar a especificar el tipo de microprocesador, los dispositivos y los perifricos empleados.

Memorias
RAM EPROM EEPROM

Timers

Generadores de reloj y sincronismo

Puerto serie

RS-232C RS-422 RS-485

CPU

Buses de direcciones, control y datos

Puertos de E/S

E/S analgicas

Acceso directo a memoria DMA

Controlador de teclado y visualizacin

Fig. 1.11 Diagrama general de bloques de un sistema basado en microprocesador

En la figura 1.11 se pueden distinguir puertos de E/S, memorias, temporizadores, puerto serie de comunicacin, etc. Cada uno de estos bloques suele estar implementado por un circuito integrado, CI, que proporcionan los fabricantes como soporte de sus microprocesadores o microcontroladores, y que facilitan la tarea del diseo y mejoran las prestaciones del sistema. Las memorias son uno de los elementos de los que hay mayor variedad y oferta en el mercado, donde se pueden encontrar memorias SRAM, DRAM, PROM, EPROM, EEPROM, FLASH, NOVRAM, etc. Es imprescindible en todo sistema que exista una memoria no voltil, como la PROM, la FLASH y la EPROM, para albergar el programa del sistema, como una memoria voltil, como la SRAM o DRAM, para albergar los datos generados y utilizados por el programa. En los sistemas basados en microcontrolador las memorias ms ampliamente utilizadas son del tipo EPROM y SRAM, aunque tambin se usan otro tipo de memorias como la OTPROM (One time programmable), la NOVRAM (Non-volatile RAM) y memorias del tipo serie que envan y reciben los datos va serie con la CPU. Por otra parte, existen circuitos integrados que proporcionan 2, 3 4 puertos de E/S, programables por el usuario y de propsito general. Estos circuitos integrados se utilizan en los microprocesadores/ microcontroladores, para disponer de E/S o para ampliar el nmero de E/S. A travs de los puertos de E/S se puede hacer el control de los perifricos, la transmisin y recepcin de datos entre la CPU y los perifricos, la activacin de actuadores, la lectura del estado de sensores, teclas, finales de carrera, etc. Un ejemplo de puerto de E/S es el 8255 de Intel Corporation que soporta hasta tres puertos de E/S de

Los autores, 2001; Edicions UPC, 2001.

Otros dispositivos

1 Estructura bsica de un sistema microprocesador

23

8 lneas cada uno, y el PI/T MC68230 de Motorola, que es una interfaz paralela, bidireccional o unidireccional, de 8 16 bits, con un temporizador programable de 24 bits. En aplicaciones que requieran de la generacin y del sincronismo de seales, o de la temporizacin de determinados sucesos, se necesitan circuitos integrados Timers, que son temporizadores/contadores capaces de contabilizar y temporizar seales de acuerdo con una seal de reloj de entrada. Adems, tambin hay circuitos integrados especficos para la generacin de varias seales de reloj y el sincronismo de sistemas basados en microprocesador. En este sentido, por ejemplo, se pueden encontrar el 8253 y 8254 de Intel, o el MFP MC68901 de Motorola. Este ltimo es un circuito multifuncin, con cuatro temporizadores programables, un controlador de hasta 16 fuentes de interrupcin, un puerto de E/S programable y un canal USART de comunicacin serie asncrona. Otro elemento importante es el puerto serie que proporciona el soporte al sistema microprocesador para poder comunicarse, va serie, con otros sistemas, empleando estndares del tipo RS-232C, RS422, etc. En este sentido existen en el mercado circuitos integrados que soportan la comunicacin serie asncrona, haciendo de puerto serie para el sistema microprocesador. Como CI integrado de este tipo, por ejemplo, se puede encontrar al 8250 de Intel que soporta un puerto serie para la comunicacin con otros sistemas, o el SIO MC68564 de Motorola que soporta la comunicacin serie sncrona y asncrona con otros sistemas. La variedad de circuitos integrados especficos que se ofrecen para el soporte de los sistemas basados en microprocesador es amplia. Prcticamente, se encuentran disponibles en el mercado circuitos integrados de todo tipo, como controladores del acceso directo a memoria (DMA), circuitos integrados capaces de leer un teclado matricial y de gestionar, al mismo tiempo, un visualizador compuesto por un nmero determinado de dgitos, circuitos integrados para el arbitraje y la gestin de los buses del sistema microprocesador, circuitos integrados para la gestin de interrupciones, circuitos integrados para el control y acceso de una unidad lectora de disquetes, circuitos integrados para detectar las cadas de tensin de la red elctrica, etc. El nmero de circuitos integrados de soporte a un sistema basado en microcontrolador es considerable y est sometido a un proceso continuo de mejora y renovacin, por lo que se debe procurar tener un buen conocimiento de estos dispositivos y estar al tanto de las nuevas propuestas que surgen de forma peridica en el mercado.

1.4 Estructura general de un sistema basado en microcontrolador


En un principio se desarrollaron los sistemas basados en microprocesador y se aplicaron al control de multitud de procesos industriales, a la computacin y procesado de datos y al procesado de seales. A medida que la tecnologa de silicio fue evolucionando, permitiendo la integracin de un mayor nmero de transistores en la misma rea de silicio, la complejidad de los microprocesadores aument tambin y se produjo una especializacin segn el campo de aplicacin. En este momento, los microprocesadores se especializan bsicamente en el entorno de la computacin y del procesado de datos, aunque tambin se aplican en determinados procesos industriales donde se necesita de una computacin intensa de datos. Por otra parte, aparecen los microcontroladores, especialmente concebidos para el mbito de control de procesos industriales y para la gestin y el control de mquinas diversas. Por ltimo, tambin surgen los procesadores digitales de seal (DSP), especialmente pensados para el procesado de seal, como, por el ejemplo, el procesado de la seal de

Los autores, 2001; Edicions UPC, 2001.

24

Microcontroladores MCS-51 y MCS-251

voz en telfonos mviles y el filtrado de seales de televisin; aunque tambin se emplean en el control de motores y en tareas de control, en general, donde las seales son de rpida variacin.

CI Microcontrolador Memorias
RAM EPROM EEPROM

Timers

Generadores de reloj y sincronismo

Puerto serie

RS-232C RS-422 RS-485

CPU

Buses de direcciones, control y datos

Puertos de E/S

E/S analgicas

Acceso directo a memoria DMA

Controlador de teclado y visualizacin

Fig. 1.12 Concepcin de un microcontrolador basada en la inclusin de la CPU y otros elementos de un sistema microprocesador en un nico circuito integrado

En cuanto al concepto de microcontrolador, ste se concibe como la inclusin de algunos de los dispositivos que aparecen en la figura 1.11 dentro del mismo circuito integrado. En consecuencia, segn la figura 1.12, un microcontrolador est formado por una CPU, ms los elementos imprescindibles para interactuar con el exterior y para solucionar y simplificar una buena parte de las aplicaciones que hasta el momento se venan realizando con los sistemas basados en microprocesador. En la actualidad los microcontroladores suelen incorporar, adems de la CPU, puertos de E/S, memoria ROM, EPROM, OTPROM o FLASH para albergar el programa realizado, memoria RAM, registros de propsito general que facilitan la tarea del programador, temporizadores y contadores para contabilizar y temporizar eventos, puerto serie con el que implementar estndares del tipo RS-232C, etc, convertidor analgico/digital para la lectura de seales analgicas, salidas con modulacin de pulsos, etc. En este momento, en el mercado existen multitud de fabricantes de microcontroladores que, adems, ofrecen una amplia gama de versiones, capaces de ajustarse a distintos tipos de aplicaciones. En consecuencia, el diseador debe tener muy claros los criterios de eleccin, en funcin de las prestaciones y los costos de las herramientas de desarrollo que se deben adquirir, como son los emuladores, las tarjetas de evaluacin y los programas de software para el desarrollo de la aplicacin.

Los autores, 2001; Edicions UPC, 2001.

Otros dispositivos

2 Las familias de microcontroladores de Intel y de otros fabricantes

25

2 Las familias de microcontroladores de Intel y de otros fabricantes


2.1 La familia MCS-48
La MCS-48 fue la primera familia de microcontroladores de 8 bits de la compaa Intel Corporation. Esta familia fue diseada para emplearse en pequeas aplicaciones y poda soportar hasta un mximo de 4k bytes de cdigo de programa y 256 bytes para datos. La MCS-48 ya no se fabrica en la actualidad. Las principales caractersticas que tena esta familia se resumen en la tabla 2.1.
Tabla 2.1 Principales caractersticas de la familia MCS-48

Versin bsica Versin con ROM Versin con EPROM Memoria RAM interna Memoria EPROM/ROM Temporizadores Fuentes de interrupcin Lneas de E/S

Microcontroladores 8035AHL 8039AHL 8048AH 8049AH 8748H 8749H Caractersticas 64 128 1k bytes 2k bytes 1 1 2 2 27 27

8049AHL 8050AHL 256 4k bytes 1 2 27

2.2 La familia MCS-51


La MCS-51 es en la actualidad la familia bsica de microcontroladores de 8 bits de Intel. Esta familia es adecuada para soportar aplicaciones sencillas y de mediana complejidad y se ha convertido en uno de los estndares del mercado, puesto que se ha utilizado en multitud de aplicaciones y, adems, otros fabricantes, como Siemems Components, Atmel, Philips Semiconductors, OKI Semiconductor, etc., proporcionan versiones especializadas de sta. La tabla 2.2 muestra los principales componentes de esta familia, donde se han excluido las versiones con memoria ROM interna, puesto que sta debe ser implementada por el propio fabricante mediante mscara en la fase de produccin, lo que supone que tan slo sea rentable en grandes series de produccin; est, pues, lejos del alcance de la economa de la mayor parte de los usuarios. Las principales caractersticas de la MCS-51 se listan a continuacin: - 32 lneas de entrada/salida (E/S), distribuidas en 4 puertos de 8 bits cada uno. - Memoria RAM interna de hasta 256 bytes. - 4 bancos de 8 registros de un byte cada uno. - rea de registros de funcin especial (SFR).

Los autores, 2001; Edicions UPC, 2001.

26

Microcontroladores MCS-51 y MCS-251

- Espacio de memoria para programas de hasta 64k. - Espacio de memoria para datos de hasta 64k. - Hasta 3 temporizadores de 16 bits cada uno. - Comunicacin serie asncrona (UART full-duplex). - De 5 a 6 fuentes de interrupcin con 2 niveles de prioridad. - 2 modos especiales de bajo consumo (Power Down y Idle). - Juego de instrucciones con capacidad de procesamiento booleano.
Tabla 2.2 Microcontroladores de la MCS-51 Versin 8031AH 8751BH 8032AH 8752BH 80C31BH 87C51 87C52 87C54 87C58 87L52 87L54 87L58 80C51FA 87C51FA 87C51FB 87C51FC 87L51FA 87L51FB 87L51FC 80C51GB 87C51GB 80C152JA 80C152JB
80C51SL-BG 87C51SLAH OTROM/ EPROM

bytes 4K EPROM

8K EPROM

4K EPROM 8K EPROM 16K EPROM 32K EPROM 8K OTPROM 16K OTPROM 32K OTPROM 8K EPROM 16K EPROM 32K EPROM 8K OTPROM 16K OTPROM 32K OTPROM 8K EPROM 16K EPROM

Mem. Lneas N de Lneas de N Modos Veloc. RAM de E/S canales A/D bajo reloj Timers interrup. PCA Bytes consumo Mhz 128 32 2 5 0 0 12 128 32 2 5 0 0 12 256 32 3 6 0 0 12 256 32 3 6 0 0 12 128 32 2 5 0 0 12,16 128 32 2 5 0 0 12,16,20,24 12,16,20,24 256 32 3 6 0 0 12,16,20,24 256 32 3 6 0 0 12,16,20,24 256 32 3 6 0 0 12,16,20 256 32 3 6 0 0 12,16,20 256 32 3 6 0 0 12,16,20 256 32 3 6 0 0 256 32 3 7 5 0 12,16 12,16,20,24 256 32 3 7 5 0 256 32 3 7 5 0 12,16,20,24 12,16,20,24 256 32 3 7 5 0 12,16,20 256 32 3 7 5 0 12,16,20 256 32 3 7 5 0 12,16,20 256 32 3 7 5 0 256 48 3 15 10 8 12,16 256 48 3 15 10 8 12,16 256 40 2 11 0 0 16.5 256 56 2 11 0 0 16.5 16 256 24 2 10 0 4 16 256 24 2 10 0 4

2.3 La familia MCS-151


La familia MCS-151 de microcontroladores de 8 bits es totalmente compatible, a nivel de juego de instrucciones y de encapsulado, con la MCS-51. Esta familia, al igual que la familia posterior MCS251, es una mejora y actualizacin en prestaciones de la familia MCS-51. El nmero de componentes de la MCS-151 es reducido y se muestra en la tabla 2.3, y sus principales caractersticas se resumen a continuacin: - Procesamiento paralelo de instrucciones Pipeline. - Juego de instrucciones y encapsulado compatibles con la MCS-51.

Los autores, 2001; Edicions UPC, 2001.

2 Las familias de microcontroladores de Intel y de otros fabricantes

27

- Espacio de memoria para programas de hasta 64k. - Espacio de memoria para datos de hasta 64k. - Memoria interna ROM/OTPROM de 8 16k bytes. - Memoria RAM interna de hasta 256 bytes. - Hasta 3 temporizadores de 16 bits cada uno. - 32 lneas de entrada/salida (E/S). - 7 fuentes de interrupcin con 4 niveles de prioridad. - Batera o array de contadores programable (PCA). - Salidas con modulacin de anchura de pulsos (PWM). - Temporizador de watchdog. - Comunicacin serie asncrona (UART full-duplex). - Terminal WAIT de estados de espera para memorias. - Modos no paginado y paginado de acceso a la memoria externa. - Modos especiales de bajo consumo (Power Down y Idle).
Tabla 2.3 Microcontroladores de la familia MCS-151

Versin 80C151SB 83C151SA 83C151SB 87C151SA 87C151SB

ROM/OTPROM 8K bytes ROM 16K bytes ROM 8K bytes OTPROM 16K bytes OTPROM

RAM interna 256 bytes 256 bytes 256 bytes 256 bytes 256 bytes

2.4 La familia MCS-251


La familia de microcontroladores de 8 bits MCS-251 es el resultado de la mejora y actualizacin de las familias MCS-51 y MCS-151. Esta familia presenta un aumento general de prestaciones con respecto a las anteriores, en cuanto al nmero de instrucciones, velocidad y flexibilidad; mantiene, al mismo tiempo, la compatibilidad tanto a nivel de hardware como de software, lo que posibilita que pueda sustituir, con un mnimo coste y de manera directa, a la MCS-51, y actualizar as las aplicaciones que estn soportadas por esta familia. El primer miembro de la familia MCS-251 es el 8XC251Sx que se comercializa en varias versiones, en funcin de la cantidad de memoria interna disponible. En la tabla 2.4 se muestran los microcontroladores que forman parte de esta familia, y a continuacin se listan sus principales caractersticas: - Procesamiento paralelo de instrucciones Pipeline. - 24 lneas de direccin internas que permiten un espacio de hasta 16 Mbytes de memoria. - Juego de instrucciones ampliado con respecto a la MCS-51, con instrucciones aritmticas y lgicas de 16 y de 32 bits. - Encapsulado y juego de instrucciones, en modo binario, compatibles con la MCS-51. - Acceso a los registros de propsito general a nivel de byte, de Word (2 bytes) y de Double Word (4 bytes).

Los autores, 2001; Edicions UPC, 2001.

28

Microcontroladores MCS-51 y MCS-251

- Puntero de la pila (registro Stack Pointer) de 16 bits, que permite acceder a una memoria de pila de hasta 64 kbytes. - Tiempo mnimo de ejecucin de una instruccin de 2 periodos de reloj. - Memoria interna ROM/OTPROM de 8 16k bytes. - Memoria RAM interna de hasta 1024 bytes. - Hasta 3 temporizadores de 16 bits cada uno. - 32 lneas de entrada/salida (E/S). - 7 fuentes de interrupcin con 4 niveles de prioridad. - Batera o array de contadores programable (PCA). - Salidas con modulacin de anchura de pulsos (PWM). - Temporizador de watchdog. - Comunicacin serie asncrona (UART full-duplex). - Terminal WAIT de estados de espera para memorias. - Modos no paginado y paginado de acceso a la memoria externa. - Modos especiales de bajo consumo (Power Down y Idle).
Tabla 2.4 Microcontroladores de la familia MCS-251

Versin 80C251SB 80C251SQ 83C251SA 83C251SB 83C251SP 83C251SQ 87C251SA 87C251SB 87C251SP 87C251SQ

OTPROM/ EPROM (kbytes) 0 0 0 0 0 0 8 16 8 16

Memoria interna ROM (kbytes) 0 0 8 16 8 16 0 0 0 0

RAM (bytes) 1024 512 1024 1024 512 512 1024 1024 512 512

Estas caractersticas proporcionan importantes mejoras con respecto a la familia MCS-51, como son el incremento de la velocidad de ejecucin para una misma frecuencia de reloj, el incremento de la eficiencia en los programas escritos en lenguaje C, debido al acceso en los tipos Word y Double Word, y la capacidad de procesar programas de mayor tamao.

2.5 Microcontroladores de otros fabricantes


2.5.1 Microcontroladores de Philips Philips Semiconductors tiene una gran variedad de microcontroladores de 8 bits basados en la arquitectura de la MCS-51. La oferta que tiene es muy extensa, por lo que es fcil hallar una versin que se ajuste a las necesidades de un proyecto. Este fabricante tiene microcontroladores con memoria EPROM, OTPROM o FLASH internas, versiones que soportan el bus serie I2C, temporizador de

Los autores, 2001; Edicions UPC, 2001.

2 Las familias de microcontroladores de Intel y de otros fabricantes

29

watchdog, array de contadores programable PCA, convertidores A/D de 8 y 10 bits, funcionamiento en baja tensin, etc. La tabla 2.5 muestra los principales componentes de esta familia.
Tabla 2.5 Microcontroladores de Philips Semiconductors
Lneas E/S (I/O) OTP o FLASH Interrupciones Carctersticas especiales A/D (canales) Proteccin programa RAM (bytes) Int. externas Max. freq. (MHz) A/D (bits) Watchdog

Versin

Timers

UART -

PWM

ROM

PCA

87LPC764 87LPC767 87LPC768 87LPC769 8xC591 89C51Rx2 89C66x 8xC554 80/83C557E4 89C557E4 80C557E6 83C557E6 8xC557E8 8xC524 8xC528 80/83/87C552 80/83/87C652 8xC750 8xC748 8xC751 8xC575 8xC576 8xC749 8xC752 8xC591 8xC592 8xCE598

4k

128

4k 128 2 4k 128 2 4k 128 2 16k 16k 512 3 16-64k 512-1024 4 16-64k 1k-2k 4 16k 32k 48k 64k 16k 32k 8k 8k 1k 2k 2k 8k 8k 2k 2k 16k 16k 32k 16k 32k 48k 64k 16k 32k 8-16k 8-16k 1k 2k 2k 2k 2k 16k 16k 32k 512 1024 1536 2048 512 512 512 256 64 64 256 256 256 64 64 512 512 512 3 3 3 3 3 3 3 2 1 2 1 3 3 2 1 3 3 3

Las versiones que tienen bus serie I2C se pueden conectar por medio de este bus a distintos perifricos y microcontroladores. El bus I2C utiliza tan slo dos terminales del microcontrolador, uno como lnea de datos y otro como lnea de reloj, y es capaz de operar en un sistema con multi-msters y de soportar multitud de perifricos en el mismo bus. Las versiones con un bus del tipo CAN (Control Area Network) se pueden utilizar en aplicaciones

Los autores, 2001; Edicions UPC, 2001.

80C31/80C32 128-256 3 8xC51/8xC52 8k 8k 128-256 3 8xC54/8xC58 16-32k 16-32k 256 3 89C5x 4-32k 128-256 3 8xC51Fx 8-32k 8-32k 256 4 8xC51Rx+ 16-64k 16-64k 512-1024 4 89C51Rx+ 32-64k 512-1024 4 87LPC762 2k 128 2

32 32 32 32 32 32 32

6 6 6 6 7 7 7

2 2 2 2 2 2 2 3 3 3 3 3 2 2 2 2

8 8 8 10 10 10 10 10

4 4 4 6 8 8 8 8 8 6 5 5 6 8 8

I2C -

18 12 18 12 18 18 18 32 32 32 12 12 12 15 7 8

48 15 48 48 48 2 2 2

32 8 32 8 48 15 32 7 19 2 19 2 19 2 32 2 32 2 21 2 21 2 32 15 48 6 48 6

2 2 2 2

2 2 2

10 10 8 8 10 10 10

2.7-5.5V,Low-power 33 2.7-5.5V,Low-power 33 2.7-5.5V,Low-power 33 MTP Flash 33 2.7-5.5V 33 2.7-5.5V 33 Flash-12V ISP 33 BOD,PUR,Keypad 20 interrupt.Low-power BOD,PUR,Keypad 20 interrupt.Low-power 51LPC con A/D 20 A/D y PWM 20 A/D y D/A 20 CAN 2.0B/PeliCAN 16 Flash,5V,ISP/IAP 33 Flash,5V,ISP/IAP 20/33 2.7-5.5V,Capture/ 16 compare Low EMI, 2 PWM 16 Capture/compare Low EMI, 2 PWM 16 Capture/compare Low EMI, 2 PWM 16 Capture/compare 24 16 24 24 16 16 16 16 16 16 16 CAN 2.0B/PeliCAN 16 CAN bus controller 16 CAN bus controller 16

30

Microcontroladores MCS-51 y MCS-251

para la industria del automvil y en sistemas de manufactura automatizada, pues inicialmente este bus fue concebido para reducir el nmero elevado de cables en un automvil. El bus CAN es un bus serie de alta velocidad formado por dos hilos, que puede llegar a distancias de hasta 40 metros y con el que se pueden realizar estructuras de bus con hasta 30 nodos de comunicacin.

2.5.2 Microcontroladores de Siemens Siemens es un fabricante que tiene una amplia gama de productos en multitud de sectores distintos. En el ramo de semiconductores tiene la familia C500 de microcontroladores, compatibles tanto a nivel de hardware como de software con la MCS-51. La tabla 2.6 muestra los principales componentes de esta familia. Los microcontroladores de Siemens pueden funcionar a altas frecuencias de reloj, pueden tener memoria ROM o OTPROM, puerto serie full-duplex, modos especiales de bajo consumo, varios registros de punteros de datos DPTR, etc.
Tabla 2.6 Microcontroladores de Siemens
N Interrupciones Punteros de datos DPTR (16 bits) 1 1 1 1 1 1 1 8 8 8 8 8 1 1 8 8 8 8 1 1 1 1 8 8 8 8

ROM Protegida

Las versiones SAB80C517, SAB80C517A, SAB80C517A-5, SAB80C537, C517A-L/4R y C509-L tienen una unidad de multiplicacin y divisin por hardware, MDU, que es capaz de realizar divisiones de datos de 32 bits y multiplicaciones de datos 16 bits. Las versiones C505-L, C505-2R, C505CA-4E, C515C-L, C515-8R y C515C-8E soportan el bus serie FCAN 2.0B.

Los autores, 2001; Edicions UPC, 2001.

C501G-L/-1R C501G-E C504-L/-2R C504-2E C513-1R C513A-L/-R/-2R C513A-2E C505L-4E C505-L/-2R C505C-L/-2R C505A-4E C505CA-4E C515-L/-1R C515A-L/-4R C515C-L/-8R C515C-8E C517A-L/4R C509-L SAB 80C515 SAB 80C535 SAB 80C515A SAB 83C515A-5 SAB 80C517 SAB 80C537 SAB 80C517A SAB 83C517A-5

-/8k 8k OTP -/16k 16k OTP 8k -/12k/16k 16k OTP 32k OTP -/16k -/16k 32k OTP 32k OTP -/8k -/32k -/64k 64k OTP -/32k 8k 32k 8k 32k

256 256 512 512 256 512 512 512 512 512 1280 1280 256 1280 2304 2304 2304 3328 256 256 1280 1280 256 256 2304 2304

32 32 32 32 32 32 32 46 34 34 34 34 56 56 57 57 68 64 56 56 56 56 68 68 68 68

10 10 10 8 8 10 10 8 10 10 10 10 10 8 8 10 10 8 8 10 10

8 8 8 8 8 8 8 8 8 8 8 12 15 8 8 8 8 12 12 12 12

3 3 4 4 3 3 3 3 3 3 3 3 3 3 3 3 4 5 3 3 3 3 3 4 4 4

6 6 12 12 7 7 7 12 12 12 12 12 12 12 15 15 17 19 12 12 12 12 12 14 17 17

USART USART USART USART USART+SSC USART+SSC USART+SSC USART USART USART USART USART USART USART USART+SSC USART+SSC USART+UART USART+UART USART USART USART USART USART+UART USART+UART USART+UART USART+UART

6 6 4 4 4 4 4 4 4 4 4 21 29 4 4 4 4 21 21 21 21

Max. freq. reloj (MHz) 40 40 40 40 12 12 16 20 20 20 20 20 24 24 10 10 24 16 20 20 18 18 16 16 18 18

Timers (16 bits)

PWM (canales)

A/D (Canales)

RAM (bytes)

Puerto serie

Lneas E/S

A/D (bits)

Watchdog

Versin

ROM

MDU

2 Las familias de microcontroladores de Intel y de otros fabricantes

31

2.5.3 Microcontroladores de Atmel El fabricante Atmel Corporation tiene una familia de microcontroladores de 8 bits basados en la arquitectura de la MCS-51. Una de las caractersticas ms relevantes de los microcontroladores de este fabricante es que todos ellos tienen memoria interna flash. Estos microcontroladores tienen un precio ms reducido que los microcontroladores con memoria interna EPROM. La tabla 2.7 muestra los microcontroladores con memoria flash de Atmel y las distintas caractersticas de cada uno. Las caractersticas generales de estos microcontroladores son: - Memoria interna flash para programas. - Memoria RAM interna. - Patillas bidireccionales de I/O accesibles bit a bit. - Varios temporizadores/ contadores de 16 bits. - UART Full-Duplex. - Mltiples fuentes de interrupcin. - La versin AT89S tiene 2K de memoria EEPROM interna, una interfaz SPI de bus serie y un temporizador de Watchdog.
Tabla 2.7 Caractersticas de los microcontroladores flash de Atmel
Caractersticas Memoria flash (bytes) Memoria RAM (bytes) Mem. EEPROM interna Interfaz serie SPI Proframacin In-system N de Timers N de bits de seguridad (Lock bits) Watchdog timer UART serie Salida de Power Down mediante interrupcin Comparador analgico Terminales de I/O Fuentes de interrupcin Bus externo de datos/ direcciones Modos Power Down y Idle Alimentacin Vcc Frecuencia Clock Patillas del encapsulado I/O Current Sink (por patilla) Corriente total mxima de I/O (mA) AT89C1051 AT89C2051 AT89C51 AT89LV51 AT89C52 AT89LV52 AT89C55 AT89S8252 1K 64 0

1 2

2 SI 15 6

3 32 6

3 32 6

3 32 8

3 32 8

SI 15 3

32 8

32 9

2.7-6.0 0-24 20 20mA 80mA

2.7-6.0 0-24 20 20mA 80mA

4.0-6.0 0-24 40/44 10mA 71mA

2.7-6.0 0-24 40/44 10mA 71mA

4.0-6.0 0-24 40/44 10mA 71mA

2.7-6.0 0-24 40/44 10mA 71mA

2.7-6.0 0-33 40/44 10mA 71mA

2.7-6.0 0-33 40/44 10mA 71mA

2.5.4 Microcontroladores de Dallas Semiconductor Dallas Semiconductor tiene un par de familias de microcontroladores compatibles con la MCS-51. Una de las familias de este fabricante se centra en la seguridad anticopia del programa, con encriptacin en tiempo real, y en utilizar memoria del tipo NOVRAM para almacenar el programa, en

Los autores, 2001; Edicions UPC, 2001.

2K 128 0 SI 2

4K 128 0 SI 2

4K 256 0 SI 3

8K 256 0 SI 3

8K 256 0 SI 3

20K 256 0 SI 4

8K 256 2K

3 3

32

Microcontroladores MCS-51 y MCS-251

lugar de ROM o EPROM. La segunda familia que oferta es de alta velocidad, capaz de ejecutar las instrucciones hasta tres veces ms rpidamente que la familia MCS-51. La primera familia est formada por los microcontroladores DS5000 y DS5002T, cuyas principales caractersticas son: - 100% compatible en hardware y software con la MCS-51. - NOVRAM de 8k 32kbytes. - Zona particionada para cdigo y para datos. - Cuatro puertos de E/S. - Memoria RAM de 128 bytes. - Dos temporizadores/contadores de 16 bits. - Una puerto UART serie. - Watchdog Timer. - Seguridad anticopia para el cdigo. - Generador aleatorio de nmero. - Interrupcin por fallo de tensin. La familia de alta velocidad est formada por los microcontroladores DS80C310, DS80C320, DS80C323, DSC390, DS83C520, DS83C530, DS87C520, DS87C530 y DS87C550. Las caractersticas comunes a estos microcontroladores son: - 100% compatible en hardware y software con la MCS-51. - Dos puertos serie UART de alta velocidad. - Tres temporizadores de 16 bits. - Deteccin de fallo de tensin. - Dos punteros de datos, DPTR, para acceder a memoria externa. - Temporizador de watchdog. - Memoria RAM interna de 256 bytes. La versin DS80C320 tiene 13 fuentes de interrupcin, de las que 6 corresponden a fuentes externas. Las versiones DS87C520 y DS87C530 tienen 13 y 14 fuentes de interrupcin, respectivamente, 1kbyte de memoria SRAM interna accesible con la instruccin MOVX y 16kbytes de memoria EPROM. La versin DS87C550 tiene estas mismas caractersticas y, adems, incluye un convertidor A/D de 10 bits y con 8 canales multiplexados, 8kbytes de memoria EPROM y 4 canales de PWM con una precisin de 8 bits. La versin DS80C310 es un modelo reducido de la DS80C320, pensada para las aplicaciones donde el coste es un factor importante. La versin DS80C323 es un modelo de bajo consumo y baja tensin de la DS80C320; tiene una frecuencia mxima de reloj de 18MHz, consume tan slo 10mA y puede alimentarse entre 2.7V y 5.5V. La versin DSC390 incorpora un bus serie CAN dual de alta velocidad, formado por dos interfaces CAN 2.0B. Esta versin tambin incorpora 4kbytes de memoria SRAM interna. Por ltimo, las versiones DS83C520 y la DS83C530 tienen 16kbytes de memoria ROM interna, al ser ideadas para grandes series de fabricacin.

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

33

3 Arquitectura de las familias MCS-51 y MCS-251


3.1 Arquitectura interna de la MCS-51
La figura 3.1 muestra el diagrama general de bloques para los microcontroladores de la familia MCS51, cuyas caractersticas generales ya se han descrito en el captulo 2. De esta arquitectura cabe resaltar el rea de registros especiales y el direccionamiento de la memoria interna.
P0.0 ... P0.7 P2.0 ... P2.7

VCC

Puerto 0
Registro de direcc. RAM

Puerto 2

Memoria

RAM
interna

Latch

Latch

VSS

Puerto 2

Puerto 0

Memoria EPROM/ ROM

ACC
TMP1 TMP2

Stack Pointer

SP
Registro de direcciones programa

ALU

PSW ALE EA RESET Control y secuenc. Registro de instrucciones PSEN

TCON TMOD TH0 TL0 SCON T2CON* TH1 TL1 SBUF RCAP2L* TH2* TL2* PCON RCAP2H* IE IP Interrupciones. Puerto serie. Temporizadores. PCA

BUFFER
Incrementador

PC PC DPTR

Latch

Latch

Puerto 1 OSC Puerto 1

Puerto 3

Puerto 3 * Slo en las versiones con 3

XTAL2

XTAL1

P1.0 ... P1.7

P3.0 ... P3.7

temporizadores

Fig. 3.1 Arquitectura interna de la familia MCS-51

Los autores, 2001; Edicions UPC, 2001.

34

Microcontroladores MCS-51 y MCS-251

El ncleo del microcontrolador est formado por la unidad de control, la unidad aritmtico-lgica (ALU), el registro de estado (PSW), el acumulador y el contador de programa (PC). Este ltimo es un registro de 16 bits que se utiliza como puntero hacia la memoria de programas y su valor apunta siempre a la direccin de memoria que contiene la instruccin a ejecutar. Cabe destacar, en esta figura, la importancia del acumulador, puesto que interviene en la mayor parte de las instrucciones, sobre todo en las instrucciones aritmticas. La familia MCS-51 tiene cuatro puertos: P0, P1, P2 y P3. Los puertos son de 8 bits, y cada bit puede ser configurado de forma individual como entrada o como salida (E/S), siendo transparente para el programador. La MCS-51 tiene versiones con memoria interna de programas EPROM, OTPROM o ROM; no obstante, en caso de necesitar memoria externa, los puertos P0 y P2 soportan un bus de direcciones de 16 bits y un bus de datos de 8 bits para acceder a sta. En este caso, el byte bajo del bus de direcciones y el bus de datos comparten el mismo puerto, P0, mediante una multiplexacin temporal entre ambos buses. En cuanto al byte alto del bus de direcciones, ste queda ntegramente soportado por el puerto P2. La multiplexacin temporal realizada en el puerto P0 es una manera hbil de optimizar el nmero de terminales del microcontrolador, minimizando el tamao de su encapsulado. En la figura 3.1 aparecen, adems, un bloque que representa la memoria RAM interna, con la cual opera el puntero de la pila (SP, Stack Pointer), el rea de registros especiales (SFR) y el puerto P3, que soporta las siguientes funciones alternativas: puerto de comunicacin serie asncrona, interrupciones externas, el control de lectura y escritura de la memoria externa de datos y las entradas de los temporizadores/contadores de la familia. El puerto P1 en las versiones 8X51C51FX soporta las entradas y salidas del array de contadores programable PCA. 3.1.1 Relacin de terminales La disposicin de los terminales de esta familia se muestra en la figura 3.2. En concreto se muestra el encapsulado de los microcontroladores 87C51BH en formato DIP y PLCC.
P1.4 P1.3

(/WR)/P3.6 (/RD)/P3.7

T2/P1.0 T2EX/P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET RXD/P3.0 TXD/P3.1 (/INT0)/P3.2 (/INT1)/P3.3 T0/P3.4 T1/P3.5 (/WR)/P3.6 (/RD)/P3.7 XTAL2 XTAL1 VSS

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

8 7 5 1 B H

VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 (/EA)/(VPP) ALE/(/PROG) /PSEN P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A80

P1.5 P1.6 P1.7 RESET RXD/P3.0 NC TXD/P3.1 (/INT0)/P3.2 (/INT1)/P3.3 T0/P3.4 T1/P3.5

7 8 9 10 11 12 13 14 15 16

44 43 42 41 40 39 38 37 36 35

P0.0/AD0 P0.1/AD1

NC VCC

P1.2 P1.1 P1.0

P0.2/AD2

P0.3/AD3

P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 (/EA)/(VPP) NC ALE/(/PROG) /PSEN P2.7/A15 P2.6/A14 P2.5/A13

8751BH

34 33 32 31 30

17 29 18 19 20 21 22 23 24 25 26 27 28

XTAL2 XTAL1 VSS

NC

A8/P2.0 A9/P2.1 A10/P2.2

A11/P2.3

Fig. 3.2 Microcontrolador 87C51BH en encapsulado DIP o PLCC

Los autores, 2001; Edicions UPC, 2001.

A12/P2.4

3 Arquitectura de las familias MCS-51 y MCS-251

35

La relacin de terminales que aparecen en la figura es la siguiente: - VCC: tensin de alimentacin: +5V. - VSS: terminal de masa. - P0.0, P0.1 P0.7: puerto bidireccional bit a bit de E/S P0. P0 puede soportar el byte bajo del bus de direcciones y el bus de datos mediante una multiplexacin temporal en el caso de tener que utilizar memoria externa (AD0,, AD7). - P2.0, P2.1 P2.7: puerto bidireccional bit a bit de E/S P2. P2 puede soportar el byte alto del bus de direcciones (A8,, A15) en el caso de tener que utilizar memoria externa. - P1.0, P1.1 P1.7: puerto bidireccional bit a bit de E/S P1. P1 es un puerto de propsito general, aunque para aquellas versiones que tienen 3 temporizadores, los terminales P1.0 y P1.1 realizan las funciones alternativas T2 y T2EX del temporizador Timer2, respectivamente. El puerto en las versiones con array de contadores programable PCA soporta las entradas y salidas de sta. Los terminales P1.3, P1.4, P1.5, P1.6, P1.7 son las entradas/salidas, CEX0, CEX1, CEX2, CEX3 y CEX4, de la PCA, respectivamente (tabla 3.1). Estos terminales actan como entradas de los mdulos 0, 1, 2, 3 y 4 de la PCA cuando trabaja en modo captura, respectivamente, y como salidas de los mismos mdulos cuando la PCA trabaja en modo comparacin y en modulacin de anchura de pulsos (PWM). - P3.0, P3.1 P3.7: puerto bidireccional bit a bit de E/S P3. P3 es un puerto de propsito general; no obstante soporta las funciones especiales ms importantes de la familia MCS-51, como las seales TXD y RXD del puerto de comunicacin serie, las entradas de interrupcin /INT0 y /INT1, las entradas externas T0 y T1 de los temporizadores y las seales de lectura y escritura en memoria externa de datos /RD y /WR, respectivamente (tabla 3.1). - ALE/(/PROG): este terminal (ALE, Addres Latch Enable) permite deshacer la multiplexacin temporal entre el byte bajo del bus de direcciones y el bus de datos, realizada en el puerto P0. La seal ALE suele conectarse a la seal de reloj de un latch de 8 bits, como por ejemplo el 74373, que permite deshacer la multiplexacin. En las versiones de la familia con memoria de programa interna EPROM o OTPROM, este terminal se emplea en modo /PROG en la fase de programacin de la memoria. -/PSEN: este terminal (/PSEN, Program Store Enable) se activa a 0 lgico cuando el microcontrolador accede a la memoria externa de programas y se pone a 1 lgico en caso contrario. - (/EA)/VPP: este terminal (/EA, External Acces) colocado a 1 lgico (Vcc) hace que el microcontrolador ejecute el cdigo almacenado en la EPROM, OTPROM o ROM internas. Si se coloca a 0 (masa), el microcontrolador ejecuta el cdigo de programa de la memoria externa de programas, y activa el bus de direcciones, el bus de datos y las seales de control. Como VPP, el terminal se utiliza para proporcionar la tensin de programacin necesaria de la memoria EPROM o OTPROM interna. - RESET: este terminal cuando se pone a 1 reinicializa el microcontrolador, poniendo el contador de programa (PC) a 0000H, el puntero de la pila (SP) a 07H, todos los puertos (P0 a P3) a FFH y la mayora de los registros a cero.

Los autores, 2001; Edicions UPC, 2001.

36

Microcontroladores MCS-51 y MCS-251

-XTAL1, XTAL2: estos terminales son la entrada de la seal de reloj del microcontrolador. Puede utilizarse un resonador cermico o un cristal de cuarzo (figura 3.3); aunque, tambin se puede utilizar una seal de reloj externa.
XTAL2

C MCS-51 C
XTAL1 VSS

Fig. 3.3 Oscilador con cristal de cuarzo o resonador cermico para la MCS-51. C=30pF10pF para cristales de cuarzo. C=40pF10pF para resonadores cermicos Tabla 3.1 Funciones alternativas de los puertos P1 y P3

Nombre P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

Funcin alternativa T2* T2EX* ECI CEX0 CEX1 CEX2 CEX3 CEX4 RXD TXD /INT0 /INT1 T0 T1 /WR /RD

Descripcin de la funcin alternativa Entrada o salida de reloj del Timer 2. Entrada externa del Timer 2. Entrada externa de reloj del PCA. Entrada/salida del mdulo 0 del PCA. Entrada/salida del mdulo 1 del PCA. Entrada/salida del mdulo 2 del PCA. Entrada/salida del mdulo 3 del PCA. Entrada/salida del mdulo 4 del PCA. Recepcin del puerto de comunicacin serie. Transmisin del puerto de comunicacin serie. Interrupcin externa 0. Interrupcin externa 1. Entrada externa del Timer 0. Entrada externa del Timer 1. Habilitacin de escritura en memoria externa. Habilitacin de lectura de memoria externa.

* En todas las versiones con 3 temporizadores En las versiones con PCA (8XC51FX y 8XL51FX)

3.1.2 Puertos de entrada/salida La constitucin interna de cada uno de los puertos se muestra en la figura 3.4. En el caso del puerto P0, cualquier de sus terminales, al disponer de un par de transistores NMOS conectados a P0.X, puede tener tres estados diferentes: 1 lgico (Vcc) si el transistor NMOS1 est en conduccin y el transistor NMOS2 en corte, 0 lgico (tierra) si el transistor NMOS1 est en corte y el transistor NMOS2 en conduccin, y alta impedancia cuando ambos transistores estn en corte, por lo que el terminal queda flotante desconectado de Vcc y de masa.

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

37

El resto de los terminales que pertenecen a los puertos P1, P2 y P3, (figura 3.4), tienen una resistencia de Pull-up y un transistor NMOS conectado a tierra, por lo que tan slo pueden tener dos estados: 1 lgico si el transistor NMOS est en corte y 0 lgico si el transistor est en conduccin.
BIT DEL PUERTO 0 (P0)
DIREC/DATO LEE LATCH B1 P0.X BUS INT. ESCRIBE EN LATCH D Q LATCH Q CL
1

BIT DEL PUERTO 2 (P2)


DIREC LEE LATCH B1 P2.X BUS INT. N2 ESCRIBE EN LATCH D Q LATCH Q CL
1 0

VCC

VCC PULL-UP INTERNO

CONTROL N1

CONTROL

MUX

MUX

B2 LEE PIN LEE PIN

B2

BIT DEL PUERTO 3 (P3) y PUERTO 1 (P1)


LEE LATCH B1 P3.X BUS INT. ESCRIBE EN LATCH D Q LATCH Q CL Funcin alternativa de salida VCC PULL-UP INTERNO

B2 LEE PIN Funcin alternativa de entrada

Fig. 3.4 Arquitectura interna de los puertos de la familia MCS-51

Segn la figura 3.4, todos los terminales de los puertos tienen una bscula D interna que se emplea para almacenar la informacin que se desea leer o escribir en cada terminal, de manera que basta con que una instruccin ponga un estado determinado en un terminal, para que este estado se mantenga estable hasta que sea cambiado por otra instruccin del programa. Por ejemplo la instruccin SETB P1.1 pone a 1 lgico el terminal P1.1: para ello se almacena un 1 lgico en la bscula D, lo que pone al transistor asociado en corte, pues la puerta NAND fuerza un 0 lgico en su base. Los puertos P0 y P2 tienen adems un multiplexor, MUX, y una lgica adicional, que permite al microcontrolador utilizar estos puertos como tales o como bus de direcciones y de datos. En este ltimo caso, el microcontrolador emplea las seales DIREC, DATO y CONTROL para establecer los estados adecuados en los terminales de estos puertos. Los puertos P1 y P3 tienen la misma estructura, pues deben realizar distintas funciones alternativas, como son las entradas y salidas de la PCA, en las versiones 8XC51FX, y las entradas de interrupciones /INT0 e /INT1, las entradas T0 y T1 para los temporizadores internos, etc. Estas funciones alternativas se introducen mediante la puerta NAND que aparece en la figura 3.4.

Pull-up es el trmino anglosajn empleado para definir a una resistencia conectada a la tensin de alimentacin del circuito, Vcc. Esta resistencia asegura que el terminal est a la tensin Vcc cuando en transistor NMOS est en corte.

Los autores, 2001; Edicions UPC, 2001.

38

Microcontroladores MCS-51 y MCS-251

Todos los puertos tienen al menos un buffer conectado al pin de entrada (B1), y un buffer conectado a la salida de la bscula D (B2), que intervienen en el proceso de lectura de los puertos. El buffer B1 est gobernado por la seal Read Latch, mientras que el buffer B2 est gobernado por la seal Read Pin. En el juego de instrucciones de la MCS-51, existen instrucciones que leen el estado lgico procedente del buffer B2 y instrucciones que leen el estado lgico procedente del buffer B1. Estas ltimas son instrucciones que leen el estado lgico de la bscula D, modifican este estado y escriben el resultado obtenido en la bscula D. A este tipo de instrucciones se les denomina de lecturamodificacin- escritura y, en concreto, son las instrucciones: ANL, ORL, XRL, JBC, CPL, INC, DEC, DJNZ, (MOV PX.Y,C), CLR PX.Y y SETB PX.Y, siempre que operen con uno de los puertos. Estas instrucciones leen el estado de la bscula para evitar un posible error producido por una mala interpretacin del nivel lgico en la entrada del terminal de un puerto. En cuanto a la conexin de dispositivos externos, los puertos P1, P2 y P3 pueden soportar una corriente de entrada mxima en un terminal de 1.6mA en estado lgico cero, transistor NMOS en conduccin. En cambio, el puerto P0 puede soportar hasta una corriente de 3.2mA a cero lgico.

3.2 Organizacin de la memoria y de los registros internos de la MCS-51


En los microcontroladores de la familia MCS-51 se pueden distinguir tres tipos de memoria: - rea de memoria de programas y memoria de datos. - rea de memoria interna y de registros de propsito general. - rea de registros de funcin especial SFR, Special Function Registers. La memoria de programas y la memoria de datos son reas de memoria externa al microcontrolador, aunque hay versiones con memoria ROM, EPROM o OTPROM en su interior. La memoria interna y los registros de propsito general pertenecen a la estructura interna de la MCS-51. Los registros de funcin especial SFR son registros que configuran los recursos internos de la MCS-51, como son las interrupciones, el funcionamiento de los temporizadores, la comunicacin serie asncrona, etc. 3.2.1 rea de memoria de cdigo de programa y memoria de datos El mapa de memoria de la MCS-51 est segmentada en dos bloques de memoria de 64kbytes de tamao cada uno (figura 3.5), un bloque est destinado a almacenar el cdigo de programa (memoria de programa) y el otro a contener las variables y datos asociados al programa (memoria de datos). Estos dos bloques se direccionan a travs de las 16 lneas de direcciones, A0-A15, de la familia. La memoria de programa (figura 3.5a) es de slo lectura y suele ser externa, aunque se han de considerar las versiones con memoria ROM, EPROM y OTPROM interna, que son de tamao reducido y destinadas a albergar los programas realizados en aplicaciones poco complejas o de tipo medio . El bloque de memoria de datos (figura 3.5b) (64kbytes) es externo al microcontrolador y puede ser tanto de lectura como de escritura.
3 2

Notar que /PSEN es una seal de lectura que slo acta sobre la memoria externa de programas.
3

Hay versiones con 4k, 8k, 16k o 32kbytes de memoria interna de programas.

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

39

a)

Memoria de programa (slo lectura)


FFFFH FFFFH

b)

Memoria de datos (lectura/escritura)


FFFFH

c)
PSEN RD RD128k

Mem. externa Mem. externa


1000H/2000H 0FFFH/1FFFH

EA = 0

Mem. interna PSEN


0000H

Mem. RAM interna 8032/8052 128 bytes FFH (80H-FFH) FFH rea de registros especiales SFR 80H 7FH Mem. RAM interna 128 bytes 00H

Mem. externa

RD
0000H

EA = 1
0000H

WR

Fig. 3.5 Estructura de la memoria de la MCS-51

El microcontrolador activa diferentes seales en funcin del tipo de bloque de memoria al que accede. Si va a realizar una lectura del cdigo de programa, sita la direccin que desea leer en el bus de direcciones, A0-A15, y activa la seal /PSEN . Por contra, si va a realizar una lectura o escritura en la memoria de datos, sita la direccin correspondiente en A0-A15 y activa la seal /RD o /WR, segn vaya a leer o a escribir un dato, respectivamente. La CPU comienza a ejecutar el programa, tras un reset o al conectar la alimentacin, por la direccin 0000H, puesto que el contador de programa (PC) se inicializa con este valor. En las versiones con memoria interna de programa los microcontroladores pueden ir a buscar el cdigo de programa a la memoria interna o a la memoria externa , y para aclarar cul es el tipo de memoria del que debe leer el cdigo, dispone de la seal /EA. Si /EA est a 0 lgico, el microcontrolador ejecuta el cdigo almacenado en la memoria externa, y si /EA est a 1 lgico, ejecuta el cdigo almacenado en la memoria interna. En esta ltima situacin, el microcontrolador no activa la seal /PSEN ni los buses de direcciones y datos, puesto que no son necesarios. No obstante, el fabricante contempla la particularidad de que el cdigo de programa pueda estar almacenado en ambos tipos de memoria, parte en la memoria interna y el resto en la memoria externa. En este caso, el microcontrolador ejecuta primero el cdigo de programa de la memoria interna y, luego, pasa a ejecutar el cdigo almacenado en la memoria externa; activa entonces la seal /PSEN y los buses de direcciones y datos. Cabe destacar que esta particularidad carece de sentido, puesto que los microcontroladores con memoria EPROM o OTPROM tienen un coste ms elevado que el del resto, y su utilizacin slo se justifica por el mayor nmero de puertos tiles y por la reduccin del rea de circuito impreso que posibilitan. La memoria de programas y la memoria de datos pueden combinarse, si se desea, en un nico bloque de memoria de 128kbytes: para ello se deben combinar las seales /RD y /PSEN para que formen una
6 5 4

La seal /PSEN es activa cuando est en estado 0 lgico.


5

Habitualmente la memoria externa de programa se implementa mediante una memoria EPROM.


6

Debido a que los puertos P0 y P2 no deben formar el bus de direcciones y el bus de datos.

Los autores, 2001; Edicions UPC, 2001.

40

Microcontroladores MCS-51 y MCS-251

nica seal de lectura, lo que se consigue mediante una puerta AND lgica (figura 3.5c). 3.2.2 rea de memoria interna y de registros de propsito general Segn la figura 3.6, la familia MCS-51 tiene 128 bytes de memoria interna -posiciones de la 00H a la 7FH- y un rea para los registros de funcin especial (SFR) de 128 bytes -posiciones de la 80H a la FFH-. El rea de memoria interna est estructurada en tres partes: a) rea de registros de propsito general formado por cuatro bancos con ocho registros cada uno, b) rea accesible bit a bit y c) rea de memoria RAM general. a) Mem. Int
FFH * Slo 80H 7FH

b) SFR Slo direcc. directo


FFH
30H
7F 7E F E 20H 7 6 ............ ............ ............

7FH

Memoria RAM general 80 bytes rea direcc. bit a bit. 16 bytes, 128 bits Bancos de registros 32 bytes

direcc. indirecto Direcc. directo e indirecto

2FH
8 0

80H

18H 10H

BANCO 3 BANCO 2 BANCO 1 BANCO 0

1FH 17H 0FH 07H

00H

* Slo en 8032/8052

08H 00H

Fig. 3.6 a) Memoria interna de la MCS-51. b) Organizacin de los primeros 128 bytes de esta memoria

a) rea de registros de propsito general El rea de registros de propsito general -posiciones de la 00H a la 1FH (figura 3.6b)- est formada por cuatro bancos de registros con ocho registros cada uno, lo que hace un total de 32 registros disponibles. De estos cuatro bancos de registros, slo uno puede estar activo en un instante determinado, mediante una seleccin previa con los bits RS0 y RS1 del registro de estado (PSW Program Status Word, -tabla 3.2-). Luego, en realidad tan slo se pueden usar los ocho registros correspondientes al banco de registros seleccionado. A los ocho registros de cada banco de registros se les denomina R0, R1, R2, R3, R4, R5, R6 y R7, respectivamente. Estos registros, en realidad, ocupan las mismas posiciones de memoria que abarca cada uno de los bancos: por ejemplo, para el banco 0, el registro R0 est ubicado en la posicin 00H de la memoria interna, el registro R1 en la posicin 01H, el registro R2 en la posicin 02H, y as sucesivamente hasta el registro R7, que est en la posicin 07H de la memoria interna; siguiendo este orden el registro R0 del banco 1 ocupa la posicin 08H de la memoria interna, el registro R0 del banco 2 est en la posicin 10H de la memoria interna y el registro R0 del banco 3 ocupa la posicin 18H de la memoria interna.
Tabla 3.2 Seleccin del banco de registros

Banco 0 Banco 1 Banco 2 Banco 3

Direcciones 00H-07H 08H-0FH 10H-17H 18H-1FH

RS1 (PSW) 0 0 1 1

RS0 (PSW) 0 1 0 1

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

41

b) Posiciones direccionables bit a bit En la memoria interna de la MCS-51 existen 16 bytes posiciones entre 20H y 2FH (figura 3.7)- que son accesibles a nivel de bit, por lo que se dispone de 128 bits accesibles de manera individual.
Memoria RAM interna

Memoria RAM interna


0

2FH 7

2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H

21H 7 20H 7

6 6

5 5

4 4

3 3

2 2

1 1

0 0

21H 0FH 0EH D0H 0CH 0BH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H

Fig. 3.7 Posiciones de la memoria interna que son direccionables bit a bit

Existen dos formas de acceder a cada bit de esta zona: la primera consiste es indicar el bit mediante un punto que lo define como bit de un byte. Por ejemplo, al bit 5 del byte 20H se puede acceder como 20H.5. La otra forma consiste en utilizar una direccin para cada uno de los bits de esta zona, donde hay un total de 128 bits; por tanto, el primer bit, el 20H.0, tiene asignada la direccin 00H y el ltimo bit, el 2FH.7, tiene asignada la direccin 7FH 127 en base decimal. c) rea de memoria RAM general El rea de memoria RAM general es una zona de 80 bytes comprendida entre las posiciones 30H y 7FH de la memoria interna (figura 3.6b). En las versiones 8032AH, 8052AH y 8752BH esta zona se ampla en 128 bytes ms, y est situada entre las direcciones 80H y FFH. 3.2.3 rea de registros especiales (SFR) El rea de registros especiales SFR (tabla 3.3) est ubicada entre las direcciones 80H y FFH de la memoria interna y contiene los registros que determinan el modo de funcionamiento y la configuracin de los recursos internos de la familia MCS-51. La tabla 3.3 muestra la situacin de los registros del SFR dentro del espacio de memoria y el valor que toman tras la realizacin de un reset. Los registros con el superndice * aparecen en todas las versiones con 3 temporizadores y los registros con el superndice aparecen en las versiones 8XC51FX. Las zonas en blanco de la tabla 3.3 no estn implementadas fsicamente, y quedan reservadas para futuras ampliaciones de registros que desee hacer el fabricante. La tabla 3.4 muestra el listado de los registros del SFR, una pequea descripcin de stos y la direccin que corresponde a cada registro. Se debe destacar que todos los registros de la tabla 3.3 que aparecen en la primera columna son accesibles bit a bit, mientras que el resto de registros no lo son. Los registros de la primera columna son aquellos que tienen una direccin que acaba en 0 8, es decir: 80H, 88H, 90H, 98H, A0H, etc. Por tanto, al bit 3 del acumulador se puede acceder como ACC.3, al bit 2 del registro B se puede acceder como B.2, etc.

Los autores, 2001; Edicions UPC, 2001.

42

Microcontroladores MCS-51 y MCS-251

Tabla 3.3 Situacin de los registros del SFR de la MCS-51 y su valor tras un reset F8 F0 E8 E0 D8 D0 C8 C0 B8 B0 A8 A0 98 90 88 80 ACC
00000000

CH B
00000000

CCAP0H

CCAP1H

CCAP2H

CCAP3H

CCAP4H

FF F7

00000000

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX

CL

CCAP0H

CCAP1H

CCAP2H

CCAP3H

CCAP4H

EF E7

00000000

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX

CCON PSW

CMOD

CCAPM0

CCAPM1

CCAPM2

CCAPM3

CCAPM4

DF D7

00X00000 00000000

00XXX000

X0000000

X0000000

X0000000

X0000000

X0000000

T2CON

T2MOD

RCAP2L

RCAP2H

TL2

TH2

CF C7 BF IPH

00000000 XXXXXX00 00000000

00000000

00000000

00000000

IP
X0000000

SADEN

00000000

P3
11111111

B7 AF A7

X0000000

IE
00000000

SADDR

00000000

P2
11111111

SCON
00000000

SBUF
XXXXXXXX

9F 97

P1
11111111

TCON
00000000

TMOD
00000000

TL0
00000000

TL1
00000000

TH0
00000000

TH1
00000000

8F PCON
00XX0000

P0
11111111
X=Estado indefinido

SP
00000111

DPL
00000000

DPH
00000000

87

* En todas las versiones con 3 temporizadores En las versiones con PCA (8XC51FX y 8XL51FX)

Las versiones con 256 bytes de memoria interna tienen los 128 bytes altos situados entre las posiciones 80H y FFH. En consecuencia, comparten las mismas direcciones que el SFR (80H-FFH), por lo que se produce un solapamiento en cuanto a asignacin de direcciones. Para resolver este conflicto y poder acceder a ambas zonas de la memoria interna, se utiliza el modo de direccionamiento de las instrucciones de la familia; en concreto, si el direccionamiento se realiza de forma directa (direccionamiento directo), se accede al rea de SFR; y si, por contra, el direccionamiento se realiza
8 7

de una forma indirecta (direccionamiento indirecto), se accede al rea ampliada de memoria. Los distintos modos de direccionamiento se tratarn en el captulo siguiente.

En el direccionamiento directo, la direccin es de forma directa un operando de la instruccin. Ej. MOV 90H, #3BH; Escribe 3BH en la localizacin 90H=P1 (Puerto P1) del SFR.
8

En el direccionamiento indirecto, la direccin est contenida en un registro del microcontrolador. Para un 8052: Ej. MOV R0, #90H; MOV @R0, #3BH; Escribe 3BH en la posicin de memoria interna 90H. Nota: # indica el nmero es un dato numrico y @ es el indicativo del direccionamiento indirecto.

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

43

Tabla 3.4 Registros del rea de SFR para la MCS-51 Smbolo P0 P1 P2 P3 SP DPL DPH PCON TCON TMOD TL0 TH0 TL1 TH1 SCON SBUF IE SADDR IPH IP SADEN T2CON* RCAP2L* RCAP2H* TL2* TH2* PSW CCON CMOD CCAPM0 CCAPM1 CCAPM2 CCAPM3 CCAPM4 ACC CL CCAP0L CCAP1L CCAP2L CCAP3L CCAP4L B CH CCAP0H CCAP1H CCAP2H CCAP3H CCAP4H Nombre Puerto 0. Puerto 1. Puerto 2. Puerto 3. Puntero de la Pila (Stack Pointer). Byte bajo del puntero de datos DPTR. Byte alto del puntero de datos DPTR. Control del consumo de energa (Power Control). Control de los temporizadores (Timer Control). Configuracin de los temporizadores (Timer Mode). Byte bajo del temporizador 0. Byte alto del temporizador 0. Byte bajo del temporizador 1. Byte alto del temporizador 1. Control de la comunicacin serie (Serial Control). Buffer de datos de la comunicacin serie (Serial Buffer). Habilitacin de interrupciones (Interrupt Enable). Direccin esclavo (Slave Address). Byte alto del registro de prioridad de interrupciones. Registro de prioridad (Interrupt Priority). Mscara de direcciones esclavo (Slave Address Mask). Control del temporizador 2. Byte bajo del registro de captura del temporizador 2. Byte alto del registro de captura del temporizador 2. Byte bajo del temporizador 2. Byte alto del temporizador 2. Registro de estado (Program Status Word). Registro de control del Timer/Counter del PCA. Registro de modo del Timer/Counter del PCA. Registro modo 0 del Timer/Counter del PCA. Registro modo 1 del Timer/Counter del PCA. Registro modo 2 del Timer/Counter del PCA. Registro modo 3 del Timer/Counter del PCA. Registro modo 4 del Timer/Counter del PCA. Acumulador. Byte bajo del Timer/Counter del PCA. Byte bajo del mdulo 0 de comparacin/captura del PCA. Byte bajo del mdulo 1 de comparacin/captura del PCA. Byte bajo del mdulo 2 de comparacin/captura del PCA. Byte bajo del mdulo 3 de comparacin/captura del PCA. Byte bajo del mdulo 4 de comparacin/captura del PCA. Registro B. Byte alto del Timer/Counter del PCA. Byte alto del mdulo 0 de comparacin/captura del PCA. Byte alto del mdulo 1 de comparacin/captura del PCA. Byte alto del mdulo 2 de comparacin/captura del PCA. Byte alto del mdulo 3 de comparacin/captura del PCA. Byte alto del mdulo 4 de comparacin/captura del PCA.

Direccin 80H 90H A0H B0H 81H 82H 83H 87H 88H 89H 8AH 8CH 8BH 8DH 98H 99H A8H A9H B7H B8H B9H C8H CAH CBH CCH CDH D0H D8H D9H DAH DBH DCH DDH DEH E0H E9H EAH EBH ECH EDH EEH F0H F9H FAH FBH FCH FDH FEH

* En todas las versiones con 3 temporizadores En las versiones con PCA (8XC51FX y 8XL51FX)

Los autores, 2001; Edicions UPC, 2001.

44

Microcontroladores MCS-51 y MCS-251

3.3 Arquitectura interna de la MCS-251


La figura 3.8 muestra el diagrama funcional de bloques de la arquitectura interna de los microcontroladores de la familia MCS-251. Al igual que en la MCS-51, esta familia dispone de cuatro puertos de entrada/salida, P0, P1, P2 y P3, de 8 bits cada uno, donde cada bit puede ser configurado individualmente como entrada o como salida, o bien puede realizar una funcin alternativa relacionada con los perifricos o con el acceso a la memoria externa. De la misma forma que para la MCS-51, los puertos P0 y P2 soportan el bus de datos y el bus de direcciones, para el caso de necesitar memoria externa. Las funciones alternativas de los puertos P1 y P3 estn relacionadas con los perifricos y con seales de control.
Puertos de entrada/salida y seales de perifricos P1.7:0 P3.7:0

Puertos de entrada/salida y busesde acceso a memoria P2.7:0 P0.7:0 Cdigo OTPROM/ROM 8Kbytes 16Kbytes

Puerto 0 drivers

Puerto 2 drivers

RAM 512 Bytes o 1024 Bytes

Puerto 1 drivers

Puerto 3 drivers

Memoria de datos (16)

Memoria de direcciones (16)

Temporizador watchdog Intefaz de los perifricos Temporizadores contadores

Interfaz del Bus

Secuenciador de instrucciones Bus de direcciones (24)

Control de interrupciones

Bus IB

PCA

SRC1 (8) Bus de datos (8)

SRC2 (8)

Clock y reset

Puerto Serie

ALU

Registros de propsito general

Interfaz de la memoria de datos

Perifricos

DST (16) Ncleo de los C de la familia MCS-251 Clock y reset

Microcontroladores 8XC251SA/SB/SP/SQ Fig. 3.8 Diagrama funcional de la arquitectura interna de la familia MCS-251

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

45

La familia MCS-251 tiene una serie de innovaciones y mejoras con respecto a la MCS-51, sin dejar de ser compatible con sta en cuanto a encapsulado y juego de instrucciones. A pesar de esta compatibilidad, el juego de instrucciones en la MCS-251 ha sido considerablemente ampliado, e incluye instrucciones que operan con datos de 8, 16 y 32 bits y que facilitan el desarrollo de programas en lenguajes de alto nivel como el lenguaje C. Para mantener al mismo tiempo la compatibilidad con la MCS-51 y la ampliacin y mejora del juego de instrucciones, se han definido los modos de trabajo fuente source y binario binary. En el modo fuente se puede emplear las nuevas instrucciones y los tipos de direccionamientos ideados para la MCS-251, por lo que el cdigo de programa generado suele ser ms compacto y eficiente. En el modo binario se programa de la misma manera que con la MCS-51 y por tanto es completamente compatible con sta. Con este modo la MCS-251 puede sustituir a la MCS-51 de forma directa, en aplicaciones ya desarrolladas, y sin necesidad de tener que generar nuevos programas. El espacio de memoria que es capaz de direccionar la familia MCS-251 es de 16Mbytes tanto para cdigo de programa como para datos, puesto que el contador de programa es de 24 bits, pero en realidad el espacio de memoria real es de 256kbytes de memoria externa, ya que como bus de direcciones se dispone de los puertos P0 y P2, y las lneas A16 y A17, que son funciones alternativas de los puertos P3 y P1, respectivamente. La MCS-251 incorpora tambin cierta cantidad de memoria interna de programa y datos, as como un controlador de interrupciones y distintos perifricos como un temporizador Watchdog, tres temporizadores/contadores, un array de contadores programable (PCA) y un puerto de comunicacin serie. Una de las caractersticas de la MCS-51 consiste en que multiplexa temporalmente el byte bajo del bus de direcciones (A0-A7) y el bus de datos (D0-D7) en el puerto P0. Esta multiplexacin se mantiene para la MCS-251 y se denomina modo no paginado. Sin embargo, para la MCS-251 la multiplexacin temporal tambin se puede hacer entre el byte alto del bus de direcciones (A8-A15) y el bus de datos (D0-D7) en el puerto P2, pues de esta manera y como se explicar ms adelante el acceso a la memoria externa es ms eficiente, el puerto P0 en este caso permanecera estable con la direccin correspondiente al byte bajo del bus de direcciones (A0-A7). Esta manera de realizar la multiplexacin temporal en el puerto P2 se denomina modo paginado. La familia tambin incorpora dos modos de funcionamiento de bajo consumo denominados Idle y Power Down, que son adecuados para aplicaciones alimentadas con bateras. El modo Idle para la seal de reloj de la CPU, detiene la ejecucin del programa y ello hace que el consumo de energa sea un 40% menor, pero mantiene la seal de reloj en los perifricos, y permite que sigan en funcionamiento. El modo Power Down detiene las seales de reloj de la CPU y de los perifricos, con lo que consigue una reduccin en el consumo de energa de hasta un 60%.

3.3.1 Relacin de terminales La figura 3.9 muestra el encapsulado en formato DIP y PLCC, y la disposicin de terminales de la MCS-251.

Los autores, 2001; Edicions UPC, 2001.

46

Microcontroladores MCS-51 y MCS-251

8XC251Sx
P1.0/T2 P1.1/T2EX P1.2/ECI P1.3/CEX0 P1.4/CEX1 P1.5/CEX2 P1.6/CEX3/WAIT P1.7/CEX4/A17/WCLK RST P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD/A16 XTAL1 XTAL2 VSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC AD0/P0.0 AD1/P0.1 AD2/P0.2 AD3/P0.3 AD4/P0.4 AD5/P0.5 AD6/P0.6 AD7/P0.7 EA/VP ALE/PROG /PSEN A15/P2.7 A14/P2.6 A13/P2.5 A12/P2.4 A11/P2.3 A10/P2.2 A9/P2.1 A8/P2.0

P1.5/CEX2 P1.6/CEX3/WAIT P1.7/CEX4/A17/WCLK RST P3.0/RXD VCC2 P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1

6 5 4 3 2 1 44 43 42 41 40

P1.4/CEX1 P1.3/CEX0 P1.2/ECI P1.1/T2EX P1.0/T2 VSS1 VCC AD0/P0.0 AD1/P0.1 AD2/P0.2 AD3/P0.3

7 8 9 10 11 12 13 14 15 16 17

8XC251Sx

39 38 37 36 35 34 33 32 31 30 29

AD4/P0.4 AD5/P0.5 AD6/P0.6 AD7/P0.7 EA/VP VSS2 ALE/PROG PSEN A15/P2.7 A14/P2.6 A13/P2.5

Fig. 3.9 Microcontroladores 8XC251Sx en encapsulado DIP 40 pines y PLCC de 44 pines

La relacin de terminales de los microcontroladores de la familia MCS-251 es la siguiente: - VCC, VCC2: entradas de alimentacin. Vcc y VCC2 se deben poner a +5V. VCC2 permite reducir el ruido que puede haber en la lnea de alimentacin. - VSS, VSS1, VSS2: terminales de masa del microcontrolador. - P0.0, P0.1 P0.7: puerto bidireccional bit a bit de E/S P0. P0 puede soportar el byte bajo del bus de direcciones y el bus de datos mediante una multiplexacin temporal en el modo no paginado, en el caso de tener que utilizar memoria externa (AD0,, AD7). En las versiones con memoria interna de programa, el cdigo de programa se introduce a travs de este puerto, en la fase de programacin y verificacin. - P2.0, P2.1 P2.7: puerto bidireccional bit a bit de E/S P2. P2 puede soportar el byte alto del bus de direcciones y el bus de datos mediante una multiplexacin temporal, en el modo paginado (A8,, A15) de acceder a la memoria externa. - P1.0, P1.1 P1.7: puerto bidireccional bit a bit de E/S P1. P1 es un puerto de propsito general, no obstante soporta varias funciones especiales de la familia MCS-51 (tabla 3.5), que estn relacionadas con el temporizador Timer 2, con el array de contadores programable PCA, la seal WAIT que controla los estados de espera en los ciclos de acceso a la memoria externa, la lnea A17 del bus de direcciones y la seal WCLK que es la salida de reloj para estados de espera en el acceso de memoria externa. Los terminales P1.3, P1.4, P1.5, P1.6, P1.7 son entradas/salidas CEX0, CEX1, CEX2, CEX3, CEX4 de la PCA, respectivamente. Estos terminales actan como entradas de los mdulos 0, 1, 2, 3 y 4 de la PCA cuando trabaja en modo captura, respectivamente, y como salidas de los mismos mdulos cuando la PCA trabaja en modo comparacin y en modulacin de anchura de pulsos (PWM). La funcin alternativa de P1.7 se determina mediante RD1 y RD0 del registro de configuracin UCONFIG0. Si RD1=RD0= 0, su funcin es la lnea A17 del bus de direcciones. No obstante, si el bit WCON.1 est 1, en P1.7 se genera una seal cuadrada de frecuencia que es la mitad de la seal de reloj del microcontrolador.

Los autores, 2001; Edicions UPC, 2001.

P3.6/WR P3.7/RD/A16 XTAL2 XTAL1 VSS VSS2 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4

18 19 20 21 22 23 24 25 26 27 28

3 Arquitectura de las familias MCS-51 y MCS-251

47

- P3.0, P3.1 P3.7: puerto bidireccional bit a bit de E/S P3. P3 es un puerto de propsito general que soporta diversas funciones especiales de la familia MCS-51 al igual que el puerto P1 (tabla 3.5). Las funciones que soporta este puerto son las seales TXD y RXD del puerto de comunicacin serie, las entradas de interrupcin /INT0 y /INT1, las entradas externas T0 y T1 de los temporizadores, las seales de lectura y escritura en memoria externa /RD y /WR, y la lnea A16 del bus de direcciones. La funcin alternativa de P3.7 tambin depende del estado de los bits RD1 y RD0 de UCONFIG0. Si RD1=RD0= 1, su funcin alternativa es /RD y si RD1= 0 y, RD0 = 1 o RD1= 0 y RD0=0, su funcin alternativa es la lnea A16 del bus de direcciones.
Tabla 3.5 Descripciones de las funciones de los pines de los puertos de entrada/salida

Nombre Nombre del pin con Descripcin de la funcin alternativa del pin funcin alternativa P1.0 T2 Entrada/salida de reloj del Timer 2. P1.1 T2EX Entrada externa del Timer 2. P1.2 ECI Entrada externa de reloj del PCA. P1.3 CEX0 Entrada/salida del mdulo 0 del PCA. P1.4 CEX1 Entrada/salida del mdulo 1 del PCA. P1.5 CEX2 Entrada/salida del mdulo 2 del PCA. P1.6 CEX3 Entrada/salida del mdulo 3 del PCA. P1.7 CEX4, A17, WCLK E/S del mdulo 4 del PCA o A17 del bus de direcciones. P3.0 RXD Entrada de datos del puerto serie. P3.1 TXD Salida de datos del puerto serie. P3.2 /INT0 Entrada interrupcin externa 0. P3.3 /INT1 Entrada interrupcin externa 1. P3.4 T0 Entrada Timer 0. P3.5 T1 Entrada Timer 1. P3.6 /WR Habilitacin de escritura en memoria externa. P3.7 /RD, A16 Habilitacin de lectura en mem. externa o A16 del bus de direcciones - /PSEN: este terminal se activa cuando el microcontrolador realiza operaciones de lectura en la memoria externa en determinados rangos de direcciones, dependiendo del valor de los bits de configuracin RD1 y RD0. - (/EA)/VP: este terminal puesto a 1 hace que el microcontrolador ejecute el cdigo almacenado en las EPROM, OTPROM o ROM internas. Si se coloca a 0, el microcontrolador ejecuta el cdigo de programa de la memoria externa de programas, activa el bus de direcciones, el bus de datos y las seales de control. VP se utiliza para proporcionar la tensin de programacin necesaria de la memoria EPROM o OTPROM interna. - XTAL1, XTAL2: estos terminales son la entrada de la seal de reloj del microcontrolador. Puede utilizarse un resonador cermico o un cristal de cuarzo. Tambin se puede utilizar una seal externa de reloj. El esquema circuital es el mismo que el de la figura 3.3 para la MCS-51. - RST: entrada de reset del microcontrolador. Se debe colocar a nivel alto durante al menos 64 perodos de reloj para realizar la operacin de reset.

Los autores, 2001; Edicions UPC, 2001.

48

Microcontroladores MCS-51 y MCS-251

3.3.2 Estructura interna de los puertos de entrada/salida La estructura interna de los puertos de E/S es la misma que la descrita para la MCS-51, salvo alguna diferencia como el hecho de que el puerto P1 tenga funciones alternativas y se introduzcan los modos paginado y no paginado de direccionar la memoria. Debido a ello, en el puerto P2 se introduce la seal DATO para determinar los estados lgicos del puerto, puesto que en el modo paginado el puerto pasa a soportar el bus de datos adems del byte alto del bus de direcciones; y los puertos P1 y P3 pasan a tener la misma estructura interna (figura 3.10). La estructura interna de los puertos de la MCS-251 es prcticamente idntica a la estructura de la MCS-51, por lo que la explicacin de su funcionamiento se ha realizado en el apartado 3.1.2.
BIT DEL PUERTO 0 (P0)
DIRECC/DATO LEE LATCH B1 P0.X BUS INT. ESCRIBE EN LATCH D Q LATCH Q CL
1

BIT DEL PUERTO 2 (P2)


LEE LATCH B1 P2.X BUS INT. N2 ESCRIBE EN LATCH D Q LATCH Q CL
1 0

VCC

CONTROL N1

DIRECC/DATO CONTROL

VCC PULL-UP INTERNO

MUX

MUX

B2 LEE PIN

B2

BIT DEL PUERTO 1 y 3 (P1 y P3)


LEE LATCH B1 P3.X BUS INT. ESCRIBE EN LATCH D Q LATCH Q CL Funcin alternativa de salida VCC PULL-UP INTERNO

LEE PIN

LEE PIN

B2 Funcin alternativa de entrada

Fig. 3.10 Latchs de los bits de los puertos y buffers de entrada/salida para la MCS-251

3.4 Organizacin de los espacios de memoria de la MCS-251


En los microcontroladores de la familia MCS-251 (figura 3.11), se tienen tres espacios distintos de memoria: -El espacio de memoria para programas y datos. -El rea de registros de propsito general. -El rea de registros de funcin especial SFR. En la figura 3.11 se observa cmo los espacios de memoria de la familia MCS-251 se han ampliado considerablemente respecto a la familia MCS-51. El espacio de memoria para programas y datos de la MCS-251 se utiliza para almacenar el cdigo del programa que debe ejecutar el microcontrolador, as como los datos, resultados intermedios y

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

49

resultados finales relacionados con dicho programa. Este espacio tiene un tamao de 16Mbytes de posiciones de memoria distribuidas en 256 regiones de 64kbytes cada una, numeradas de la 00: a la FF:. La familia MCS-251 est diseada para tener hasta un mximo de 64kbytes de memoria interna no voltil, ubicada en la regin FF:. La memoria RAM interna est ubicada en la regin 00:, comenzando a partir de la direccin 00:0020H. La dimensin de la memoria interna depende de la versin de microcontrolador. El rea de registros de propsito general contiene 64 registros de 8 bits numerados decimalmente del 0 al 63. Estos registros tienen la funcin de guardar los datos y resultados que intervienen con ms frecuencia en el programa. El espacio SFR puede tener hasta 512 registros de 8 bits de funcin especfica que estn, en la mayora de los casos, relacionados con la programacin de los perifricos que incorpora el microcontrolador. Las direcciones de los registros de este rea van de la S:000H a la S:1FFH. En la direccin de un registro del rea SFR se utiliza el prefijo S: para diferenciarla de una direccin de memoria.
rea de memoria 16 Mbytes
FF:FFFFH

rea SFR 512 bytes


S:1FFH

S:000H

rea de registros de propsito general 64 bytes


63 00:0000H 0

Fig. 3.11 Espacio de direcciones para la familia MCS-251

3.4.1 rea de memoria En la figura 3.12 se muestra el rea de memoria de los microcontroladores 8XC251Sx. De los 16Mbytes de memoria tericamente tiles, tan slo se pueden usar 8 regiones de 64 kbytes, en concreto la 00:, 01:, 02:, 03:, FC:, FD:, FE: y FF:, donde se pueden almacenar indistintamente cdigo de programa o datos. El resto de regiones de memoria, de la 04: a la FB:, estn reservadas y no pueden ser utilizadas por el usuario. El nmero de lneas de direcciones de los microcontroladores de la serie 8XC251Sx es configurable por el usuario: el valor mximo es 18, lo que limita el nmero mximo de posiciones de memoria externa que se pueden direccionar de forma directa a 256kbytes. Las 8 posiciones de memoria que van de la direccin FF:FFF8H a la FF:FFFFH estn reservadas para la configuracin del dispositivo. En concreto, en la versin 8XC251Sx se utilizan slo los bytes

Los autores, 2001; Edicions UPC, 2001.

50

Microcontroladores MCS-51 y MCS-251

FF:FFF8H y FF:FFF9H para realizar la configuracin, el resto se reservan para la configuracin de futuras versiones de este microcontrolador. En la regin 00: se ubica la memoria RAM interna, en concreto entre la direccin 00:0020H y la 00:021FH, para aquellas versiones que disponen de 512 bytes de memoria RAM interna, o bien entre la direccin 00:0020H y la 00:041FH para aquellas versiones que disponen de 1Kbyte de posiciones de memoria RAM interna. La memoria RAM interna est destinada exclusivamente a guardar datos ya que no se puede ejecutar instrucciones almacenadas en ella. Los primeros 32 bytes de memoria, de la direccin 00:0000H a la 00:001FH, estn asociados al rea de registros. Por otra parte, las posiciones de memoria comprendidas entre la 00:0020H y la 00:007FH son accesibles a nivel de bit.
rea de memoria 16 Mbytes
FF:FFFFH

Regin FF:
Bytes de configuracin FF:FFF8H - FF:FFFFH FF:FFF7H

FF:0000H FE:FFFFH

Memoria externa
FF:2000H/FF:4000H

Memoria externa
FE:0000H FD:FFFFH

OTPROM/ROM interna
SB, SQ:16 Kbytes (FF:0000H - FF:3FFFH) SA, SP: 8 Kbytes (FF:0000H - FF:1FFFH)

Memoria externa
FD:0000H FC:FFFFH

Memoria externa
FC:0000H Regiones reservadas 04: a FB: 03:FFFFH

Memoria externa
03:0000H 02:FFFFH

Regin 00:
00:FFFFH

Memoria externa
02:0000H 01:FFFFH

Memoria externa
00:0220H/00:0420H

Memoria externa
01:0000H 00:FFFFH

RAM interna
SB, SQ: 1 Kbytes (00:0020H - 00:041FH) SA, SP: 512 bytes (00:0020H - 00:021FH) 32 bytes de registros de trabajo 00:0000H - 00:001FH

00:0000H

Fig. 3.12 Implementacin hardware del rea de memoria de los microcontroladores 8XC251SA, SB, SP y SQ

La memoria interna de lectura est ubicada en la direccin FF:. Las diferentes versiones del microcontrolador 8XC251Sx disponen de 0, 8 16kbytes de memoria interna del tipo ROM (83C251Sx) o OTPROM/EPROM (87C251Sx). En la figura 3.12 las zonas sombreadas se corresponden con la memoria interna, mientras que el resto de zonas se deben implementar, en caso que se utilicen, mediante de integrados de memoria externos.

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

51

3.4.2 rea de registros de propsito genrico El rea de registros de propsito general de la familia MCS-251 dispone de 64 registros numerados desde el 0 al 63, aunque los registros que estn ubicados entre las posiciones 32 y 55 estn reservados para futuras versiones, lo que reduce el nmero total de registros disponibles a 40, como se muestra en la figura 3.13. rea de registros 56 57 58 59 60 61 62 63

Posiciones 32-55 reservadas 24 16 8 0 25 17 9 1 26 27 18 19 10 11 2 3 28 20 12 4 29 21 13 5 30 22 14 6 31 23 15 7

Fig. 3.13 rea de registros de propsito general

Los registros situados entre la posicin 0 y 7 estn implementadas fsicamente en las direcciones 00:0000H a 00:001FH. Estas 32 posiciones de memoria constituyen un rea dentro del espacio de memoria denominada banco de registros, similar a la que poseen los microcontroladores de la familia MCS-51. Hay en total 4 bancos de registros de 8 posiciones cada uno, que aparecen representados en la figura 3.14.

rea de registros 63

rea de memoria
FF:FFFFH

8 0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

00:0020H 18H 10H 08H 00H 1FH 17H 0FH 07H

Bancos de registros

Banco 3 Banco 2 Banco 1 Banco 0

Fig. 3.15 Ubicacin de las localizaciones 0 7 del rea de registros

Los autores, 2001; Edicions UPC, 2001.

52

Microcontroladores MCS-51 y MCS-251

Al igual que ocurre en la familia MCS-51, slo uno de los cuatro bancos es accesible a travs de los registros. El banco accesible o activo se selecciona a travs de los bits RS0 y RS1 del registro de estado PSW (tabla 3.6).
Tabla 3.6 Seleccin del banco de registros

Banco Banco 0 Banco 1 Banco 2 Banco 3

Rango de direcciones 00H-07H 08H-0FH 10H-17H 18H-1FH

Bits de seleccin de banco RS1 RS0 0 0 0 1 1 0 1 1

Despus de hacer un reset del microcontrolador, el banco activo por defecto es el banco cero, ya que los bits RS1 y RS0 se ponen a cero. Para cambiar de banco de registro se debe modificar el valor de los bits RS1 y RS0 mediante la instruccin adecuada. El rea de registros tiene la particularidad de que permite acceder a la informacin contenida en ella a nivel de byte, 16 bits (Word) y 32 bits (Dword), lo cual facilita la tarea de los compiladores de C para esta familia. No todos los registros del rea de registros son accesibles de las tres formas indicadas: las localizaciones que son accesibles a nivel de byte son las que van de la cero a la 15. Para identificar un registro al cual se accede a nivel de byte, se utiliza la letra R seguida del nmero de la localizacin correspondiente (figura 3.16). Por ejemplo, si se desea escribir el byte 5BH en la localizacin 9 se debe utilizar el nombre R9 para hacer referencia a esta localizacin: MOV R9,#5BH Slo el rango de localizaciones de la 0 a la 31 es accesible a nivel de Word. Un registro tipo Word est formado por dos localizaciones y se identifica con las letras WR seguido del nmero de la localizacin de menor peso que interviene en dicho registro. Por ejemplo, el registro WR2 est formado por las localizaciones 2 y 3. En la figura 3.16 estn indicados todos los registros Word disponibles. Todas las localizaciones del rea de registros son accesibles a nivel de Dword. Un Dword est formado por cuatro localizaciones y se identifica con las letras DR y el nmero de la localizacin de menor peso que interviene en el registro Dword. Por ejemplo, el registro DR28 est formado por las localizaciones 28, 29, 30 y 31. En la figura 3.16 se indican todos los registros Dwords posibles. Existen 4 registros del rea de registros que por motivos de compatibilidad con los microcontroladores de la familia MCS-51 poseen una funcin especfica. Estos registros son: - R10 es el registro B. - R11 es el registro acumulador (ACC o A). - DR56 es el registro puntero de datos extendido, DPX. - DR60 es el registro puntero de pila extendido, SPX. Los registros R10, R11, y algunas localizaciones de los registros DR56 y DR60, son accesibles tambin a travs del rea de registros de funcin especfica (SFR).

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

53

Una de las mejoras que tiene la familia MCS-251 respecto a la MCS-51, es que cualquiera de sus registros de tipo byte, del R0 al R15, puede realizar la funcin del acumulador en las instrucciones aritmticas y lgicas, lo que evita el cuello de botella que el acumulador supone para la MCS-51. En las instrucciones de la familia MCS-51 el registro acumulador era el principal registro en transferencias y operaciones aritmticas y lgicas. En cambio en la familia MCS-251 cualquier registro, del R0 al R15, puede realizar la tarea de acumulador. Por lo tanto, el acumulador no tiene, en esta familia, la importancia que posee en la familia MCS-51. El puntero de datos extendido DPX est ubicado en el registro DR56 (figura 3.16). Los tres bytes de menor peso del DPX (DPL, DPH y DPXL) son accesibles tambin a travs del rea SFR. Los registros DPL y DPH forman el puntero de datos DPTR de 16 bits. En la familia MCS-51 este registro se emplea de forma nica para acceder a la memoria externa de datos; sin embargo, para la familia MCS251 el acceso a la memoria externa o interna se puede hacer mediante cualquier registro de tipo Word o Dword. El registro DPXL ubicado en la localizacin 57 del rea de registros, permite seleccionar la regin de memoria (00:-FF:) a la que se desea acceder a travs del puntero de datos extendido. Registro byte

R8 R9 R10 R11R12 R13 R14 R15 R0 R1 R2 R3 R4 R5 R6 R7

rea de registros 56 57 58 59 60 61 62 63 Localizaciones 32-55 reservadas 24 16 8 0 25 17 9 1 26 27 18 19 10 11 2 3 28 20 12 4 29 21 13 5 30 22 14 6 31 23 15 7


WR24 WR16 WR8 WR0

Registro word

WR26 WR18 WR10 WR2

WR28 WR20 WR12 WR4

WR30 WR22 WR14 WR6

Registro dword DR56 DR60 0 1 2 3 4 5 6 7 Bancos de registros DR24 DR16 DR8 DR0 DR28 DR20 DR12 DR4

Fig. 3.16 Posibilidades de acceso al rea de registros

El registro Dword DR60 es el puntero de datos extendido, SPX (figura 3.17). El byte de la localizacin 63 es el puntero de pila, SP, de la familia MCS-51. EL byte de la localizacin 62 es la parte alta del puntero de pila, SPH. Estos dos bytes controlan el funcionamiento de la pila, que en la familia MCS-251 puede tener una dimensin mxima de 64 kbytes correspondientes a la regin 00: de memoria.

Los autores, 2001; Edicions UPC, 2001.

54

Microcontroladores MCS-51 y MCS-251

rea de registros
Parte alta del puntero de pila

Area SFR

SPH Puntero de pila SPH 60 61 62 SP 63 SP

S:BEH S:81H

DR60 = Puntero extendido de pila, SPX Parte baja del puntero extendido de datos DPXL Parte alta del puntero de pila DPH Parte baja del puntero de datos DPXL 56 57 DPH 58 DPL 59 DPL S:83H S:82H S:84H

DR56 = Puntero extendido de datos, DPX B ACC B ACC S:F0H S:E0H

R10, Registro B; R11, registro acumulador


Fig. 3.17 Registros dedicados y su correspondencia en el rea de registros SFR

3.4.3 rea de registros de funcin especfica SFR La mayora de los registros del rea de registros de funcin especfica (SFR) estn vinculados a la programacin de los perifricos de la familia MCS-251. En la tabla 3.7 aparecen los registros del rea SFR junto con el valor que adquieren cuando se realiza un reset del microcontrolador. Las direcciones del rea SFR que no estn ocupadas por registros (zonas sombreadas en la tabla 3.7) no estn implementadas, por lo que no se pueden utilizar. Al rea SFR slo se puede acceder a nivel de bit o byte, pero no a nivel de Word o Dword. En la tabla 3.8 se indican los distintos registros del rea SFR, junto con la direccin y una pequea descripcin de la funcin que realizan.

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

55

Tabla 3.7 Registros del rea SFR y sus valores de reset


0/8 F8 F0 E8 E0 D8 D0 C8 C0 B8 B0 A8 A0 98 90 88 80 ACC 00000000 CCON 00x00000 PSW 00000000 T2CON 00000000 IPL0 x0000000 P3 11111111 IE0 00000000 P2 11111111 SCON 00000000 P1 11111111 TCON 00000000 P0 11111111 0/8 B 00000000 CL 00000000 CCAP0L xxxxxxxx CCAP1L xxxxxxxx CCAP2L xxxxxxxx CCAP3L xxxxxxxx CCAP4L xxxxxxxx 1/9 CH 00000000 2/A CCAP0H xxxxxxxx 3/B CCAP1H xxxxxxxx 4/C CCAP2H xxxxxxxx 5/D CCAP3H xxxxxxxx 6/E CCAP4H xxxxxxxx 7/F FF F7 EF E7 CMOD 00xxx000 PSW1 00000000 T2MOD xxxxxx00 SADEN 00000000 CCAPM0 x0000000 CCAPM1 x0000000 CCAPM2 x0000000 CCAPM3 x0000000 CCAPM4 x0000000 DF D7 RCAP2L 00000000 RCAP2H 00000000 TL2 00000000 TH2 00000000 SPH 00000000 IPH0 x0000000 SADDR 00000000 WDTRS xxxxxxxx SBUF xxxxxxxx CF C7 BF B7 AF A7 9F 97 TMOD 00000000 SP 00000111 1/9 TL0 00000000 DPL 00000000 2/A TL1 00000000 DPH 00000000 3/B TH0 00000000 DPXL 00000001 4/C TH1 00000000 PCON 00xx0000 7/F 8F 87

5/D

6/E

Tabla 3.8 Registros del rea SFR Mnemnico Registros ACC B PSW PSW1 SP SPH DPTR DPL DPH DPXL PCON IE0 IPH0 IPL0 Nombre bsicos Acumulador Registro B Registro de estado (Program Status Word) Registro de estado 1 Parte baja del puntero de pila (Stack Pointer) Parte alta del puntero de pila Puntero de datos (Data Pointer) Parte baja del DPTR Parte alta del DPTR Parte baja del puntero extendido de datos Registro de control de potencia (Power Control) Registro de habilitacin de interrupciones Parte alta del registro de prioridad de interrupciones Parte baja del registro de prioridad de interrupciones Direccin S:E0H S:F0H S:D0H S:D1H S:81H S:BEH -S:82H S:83H S:84H S:87H S:A8H S:B7H S:B8H

Los autores, 2001; Edicions UPC, 2001.

56 Tabla 3.8 Registros del rea SFR (continuacin) Mnemnico Registros P0 P1 P2 P3 Puerto SCON SBUF SADEN SADDR Registros TL0 TH0 TL1 TL2 TL2 TH2 TCON TMOD T2CON T2MOD RCAP2L RCAP2H WDTRST Registros CCON CMOD CCAPM0 CCAPM1 CCAPM2 CCAPM3 CCAPM4 CL CH CCAP0L CCAP1L CCAP2L CCAP3L CCAP4L CCAP0H CCAP1H CCAP2H CCAP3H CCAP4H

Microcontroladores MCS-51 y MCS-251

Nombre de los puertos de entrada/salida Puerto 0 Puerto 1 Puerto 2 Puerto 3 de comunicacin serie Registro de control del puerto serie Registro buffer del puerto serie Mscara de direcciones esclavo (Slave Address Mask) Direccin esclavo (Slave Address) del Watchdog y de los Timer/Counter 0, 1 y 2 Parte baja del Timer/Counter 0 Parte alta del Timer/Counter 0 Parte baja del Timer/Counter 1 Parte alta del Timer/Counter 1 Parte baja del Timer/Counter 2 Parte alta del Timer/Counter 2 Registro de control de los Timer/Counter 0 y 1 Registro de control de modo de los Timer/Counter 0 y 1 Registro de control del Timer/Counter 2 Registro de control de modo del Timer/Counter 2 Byte bajo de captura del Timer/Counter 2 Byte alto de captura del Timer/Counter 2 Registro Watchdog del array de controladores programables (PCA) Registro de control del Timer/Counter PCA Registro de modo del Timer/Counter PCA Registro modo 0 del Timer/Counter PCA Registro modo 1 del Timer/Counter PCA Registro modo 2 del Timer/Counter PCA Registro modo 3 del Timer/Counter PCA Registro modo 4 del Timer/Counter PCA Byte bajo del Timer/Counter del PCA Byte alto del Timer/Counter del PCA Byte bajo del mdulo 0 de comparacin/captura del PCA Byte bajo del mdulo 1 de comparacin/captura del PCA Byte bajo del mdulo 2 de comparacin/captura del PCA Byte bajo del mdulo 3 de comparacin/captura del PCA Byte bajo del mdulo 4 de comparacin/captura del PCA Byte alto del mdulo 0 de comparacin/captura del PCA Byte alto del mdulo 1 de comparacin/captura del PCA Byte alto del mdulo 2 de comparacin/captura del PCA Byte alto del mdulo 3 de comparacin/captura del PCA Byte alto del mdulo 4 de comparacin/captura del PCA

Direccin S:80H S:90H S:A0H S:B0H S:98H S:99H S:B9H S:A9H S:8AH S:8CH S:8BH S:8DH S:CCH S:CDH S:88H S:89H S:C8H S:C9H S:CAH S:CBH S:A6H S:D8H S:D9H S:DAH S:DBH S:DCH S:DDH S:DEH S:E9H S:F9H S:EAH S:EBH S:ECH S:EDH S:EEH S:FAH S:FBH S:FCH S:FDH S:FEH

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

57

3.4.4 Compatibilidad con la arquitectura de la familia MCS-51 Las reas de memoria y los registros de la arquitectura MCS-51 estn contenidos dentro de los espacios de direcciones de la familia MCS-251, lo que posibilita la compatibilidad con los programas diseados para la familia MCS-51. En la figura 3.18 se muestra cmo quedan ubicados los espacios de direcciones de la familia MCS-51 dentro de la arquitectura de la familia MCS-251. Los 64kbytes de memoria de programa de la familia MCS-51 se corresponden con la regin FF: del rea de memoria de la familia MCS-251.

rea de memoria (16Mbytes)


FFFFH

rea SFR (512 Bytes)


S:1FFH S:100H 80H S:000H

Memoria de programa MCS-51


FF:0000H 0000H

SFRs MCS-51

FFH S:07FH

02:0000H FFFFH

Memoria externa de datos MCS-51


01:0000H 0000H

rea de registros (64 Bytes)


63

8 FFH

Reg. MCS-51
0

Memoria interna de datos MCS-51 00:0000H 00H

Fig. 3.18 Correspondencia de espacios de direcciones entre la familia MCS-51 y la MCS-251

Los 64kbytes de la memoria de datos externa se ubican en la regin de memoria especificada por el registro DPXL. Se puede acceder a este registro a travs de la localizacin 57 o a travs de la direccin S:084H del rea SFR. El valor que adquiere por defecto este registro despus de hacer un reset es el 01:, como se muestra en la figura 3.18, por lo que inicialmente la memoria externa de datos est ubicada en la regin 01:. La memoria externa de datos se puede reubicar en otra regin programando adecuadamente el registro DPXL. Los 256 bytes de memoria RAM interna de la familia MCS-51 estn ubicados en las direcciones del rea de memoria 00:0000H-00:00FFH. Los 128 bytes del rea SFR de la familia MCS-51 estn ubicados dentro de los 512 bytes del rea SFR de la familia MCS-251 a partir de la direccin S:080H, como se muestra en la figura 3.18, para mantener la compatibilidad con la familia MCS-251. Los registros de trabajo R0-R7 de la familia MCS-51, estn ubicados en los 32 primeros bytes del rea de memoria de la familia MCS-251 para mantener la compatibilidad.

Los autores, 2001; Edicions UPC, 2001.

58

Microcontroladores MCS-51 y MCS-251

3.5 Configuracin de la serie 8XC251Sx


Una de las caractersticas ms interesantes de la familia de microcontroladores MCS-251 es la posibilidad de configurar ciertas prestaciones de su funcionamiento para adaptarlo a las exigencias especficas de la aplicacin, lo que proporciona al usuario una gran flexibilidad en el diseo. Las opciones de configuracin abarcan diferentes categoras: Interfaz con la memoria externa. Modos de obtencin del cdigo de operacin. Seleccin de los bytes guardados en la pila por una interrupcin.

Reubicacin de los 8kbytes de memoria de lectura interna en la regin 00: para aquellas versiones que disponen de 16kbytes de memoria interna de tipo ROM/OTPROM/EPROM. Los bytes utilizados para configurar los microcontroladores de la serie 8XC251Sx son el UCONFIG0, en la direccin FF:FFF8H, y el UCONFIG1, en la direccin FF:FFF9H (figura 3.19).

UCONFIG0
---/WSA1 /WSA0 /XALE RD1 RD0 /PAGE SRC

/WSA1,0 : Control de insercin de estados de espera para memoria externa /XALE : Activacin de la seal ALE extendida RD1,0 : Seleccin del nmero de lneas del bus externo de direcciones /PAGE : Seleccin de modo paginado o no paginado SRC : Seleccin de modo fuente o modo binario

UCONFIG1
---------INTR WSB /WSB1 /WSB0 /EMAP

INTR : Seleccin de bytes almacenados en la pila por una interrupcin WSB : Activacin de estado de espera en accesos a memoria externa /WSB1,0 : Control de insercin de estados de espera para memoria externa /EMAP : Reubicacin de la memoria de lectura interna en la regin 00:
Fig. 3.19 Bytes de configuracin UCONFIG0 y UCONFIG1

Para los dispositivos que incorporan memoria ROM/OTPROM/EPROM interna, la informacin sobre la configuracin se almacena en memoria no volatil en estas direcciones. Para aquellas versiones de microcontrolador que no disponen de memoria ROM/OTPROM/EPROM interna la configuracin se almacena en memoria externa en las direcciones indicadas.

3.5.1 Configuracin del acceso a la memoria externa Existen distintas opciones que permiten configurar el acceso a la memoria externa de forma ms adecuada a la aplicacin que se est diseando:

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

59

1. 2. 3. 4.

La ubicacin del bus de datos en el puerto cero (modo no paginado) o el puerto 2 (modo paginado). El nmero de lneas del bus de direcciones externo (16, 17 o 18). Las regiones de memoria asignadas a las seales de control de lectura /RD y /PSEN. Los estados de espera en el acceso a la memoria externa (0, 1, 2 3 estados de espera).

La ubicacin de cierta cantidad de memoria de programa interna en la regin 00:.

3.5.1.1 Modos paginado y no paginado Con respecto a la ubicacin del bus de datos, se puede elegir entre dos posibilidades: modo paginado o modo no paginado, utilizando el bit /PAGE (bit 1 de la localizacin UCONFIG0). En el modo no paginado (/PAGE = 1) el bus de datos est ubicado en el puerto cero, al igual que en los microcontroladores de la familia MCS-51. Por tanto, este modo es el adecuado para aplicaciones donde se requiera compatibilidad a nivel de hardware con la familia MCS-51. En el modo paginado (/PAGE = 0) el bus de datos est ubicado en el puerto dos, lo que permite, bajo ciertas condiciones, reducir el tiempo de acceso a la memoria externa. En este modo se puede leer un cdigo de operacin en tan slo 2 ciclos de reloj, en lugar de los cuatro ciclos necesarios en el modo no paginado.

3.5.1.2 Nmero de lneas del bus de direcciones Los bits RD y RD1 (bits 2 y 3 de la localizacin UCONFIG0) permiten seleccionar el nmero de lneas de bus de direcciones externas y el rango de direcciones controlado por las seales de lectura /RD y /PSEN y la seal de escritura /WR. En la tabla 3.9 se muestran las distintas posibilidades de configuracin con respecto a los bits RD0 y RD1. RD1:0 = 00 (18 lneas de bus de direcciones) Si se programan los bits RD1 y RD0 a cero lgico se obtiene una configuracin de 18 lneas de bus externo de direcciones, lo que permite direccionar un total de 256kbytes de posiciones de memoria externas, que es la mxima cantidad de memoria que pueden direccionar los microcontroladores de la serie 8XC251Sx. Las 16 primeras lneas del bus de direcciones (de la A0 a la A15) estn soportadas por los puertos P0 y P2, la lnea A16 del bus de direcciones est ubicada en el canal P3.7 y la lnea de mayor peso, A17, en el canal P1.7. Con esta configuracin se utilizan dos seales para controlar el acceso ala memoria externa: /PSEN: controla las operaciones de lectura de la memoria externa para cualquier direccin (de la 00:0000H a la FF:FFFFH). /WR: controla las operaciones de escritura de la memoria externa para cualquier direccin (de la 00:0000H a la FF:FFFFH).

Los autores, 2001; Edicions UPC, 2001.

60

Microcontroladores MCS-51 y MCS-251

RD1:0 = 01 (17 lneas de bus de direcciones) Si se programan los bits RD1 y RD0 con los valores 0 y 1 respectivamente, se obtiene 17 lneas de bus externo de direcciones: las 16 primeras lneas, A0-A15, implementadas mediante los puertos P0 y P2, y la lnea A16 implementada con el canal P3.7. Con esta configuracin se pueden direccionar hasta 128kbytes de memoria externa. Las seales que controlan la lectura y escritura en la memoria externa son las mismas que para la configuracin RD1:0 = 00. RD1:0 = 10 (16 lneas de bus de direcciones) La configuracin RD1 =1 RD0 = 0 permite tener un total de 16 lneas de bus de direcciones, de la A0 a la A15, implementadas con los puertos P0 y P2. Esta configuracin permite direccionar hasta 64kbytes de memoria externa. Las seales de control de lectura y escritura son las mismas que en las dos configuraciones anteriores. RD1:0 = 11 (16 lneas de bus de direcciones) Con esta configuracin se tienen slo 16 lneas de bus externo de direcciones, implementadas en los puertos P0 y P2. Esta es la nica configuracin que mantiene la compatibilidad con la familia MCS-51 y para ello dispone de tres seales de control de acceso a la memoria externa (como en la familia MCS-51): /PSEN: seal de control de lectura en la memoria externa para las regiones FC:, FD:, FE: y FF:. /RD: seal de control de lectura en la memoria externa para las regiones 00:, 01:, 02: y 03:. /WR: seal de control de escritura en la memoria externa para las regiones 00:, 01:, 02: y 03:.
Tabla 3.9 Seleccin de seales de control para los posibles valores de RD1, RD0

RD1 RD0 P1.7/CEX/A17 P3.7/RD/A16 00 01 10 11 A17 P1.7/CEX4 P1.7/CEX4 P1.7/CEX4 A16 A16 P3.7 /RD

Direcciones asociadas a las seales de control PSEN RD WR Todas A16 Todas Todas A16 Todas Todas P3.7 Todas 80:0000H 7F:FFFFH 7F:FFFFH

3.5.1.3 Estados de espera en el acceso a la memoria externa Los estados de espera permiten alargar los ciclos de acceso a la memoria externa. Esto es necesario cuando la memoria externa a la que accede el microcontrolador no es suficientemente rpida. Cada estado de espera alarga la duracin del ciclo 2 perodos de reloj y es posible incluir hasta un mximo de 3 estados de espera. Se puede especificar la insercin de estados de espera de forma independiente en la regin 01:, lo cual permite ubicar una memoria lenta en esa regin manteniendo, sin embargo, un acceso rpido en el resto de regiones. Existen 4 bits para especificar los estados de espera: los bits WSA0 y WSA1 (bits 5 y 6 de la localizacin UCONFIG0), que permiten definir estados de espera para todas las regiones excepto la 01:, y los bits WSB0 y WSB1 (bits 1 y 2 de la localizacin UCONFIG1), que permiten definir estados

Los autores, 2001; Edicions UPC, 2001.

3 Arquitectura de las familias MCS-51 y MCS-251

61

de espera en la regin 01:. En la tabla 3.10 se muestran los estados de espera que se introducen en funcin de los valores que adquieren los bits antes indicados.
Tabla 3.10 Configuracin de los estados de espera

Regiones 00: 02: 03: FC: FD: FE: FF:

01:

WSA1 WSA0 0 0 0 1 1 0 1 1 WSB1 WSB0 0 0 0 1 1 0 1 1

Estados de espera 3 2 1 0 3 2 1 0

Por otra parte poniendo a cero el bit /XALE (bit 4 de la localizacin UCONFIG0) se alarga el tiempo durante el cual la seal ALE est activa. 3.5.1.4 Configuracin del cdigo de operacin Con respecto a los modos de asignacin de cdigos de operacin a las instrucciones, el usuario puede seleccionar dos posibles modos: el modo binario que genera un cdigo de operacin compatible con los microcontroladores de la familia MCS-51, y el modo fuente, que es especfico de la familia MCS251. Cuando se configura el microcontrolador se debe elegir necesariamente uno de los dos modos. Se debe elegir aquel modo que permita obtener el cdigo ms eficiente. En principio los microcontroladores de la familia MCS-251 tienen dos tipos de instrucciones: Instrucciones originales de la familia MCS-51. Instrucciones exclusivas de la familia MCS-251.

En general, las instrucciones originales de la familia MCS-51 generan un cdigo ms eficiente en modo binario; en cambio las instrucciones exclusivas de la familia MCS-251 generan un cdigo ms eficiente en modo fuente. A modo de ejemplo se presenta en la tabla 3.11 varias instrucciones (de la familia MCS-51 y MCS251) con sus correspondientes cdigos de operacin obtenidos en los dos modos.
Tabla 3.11 Ejemplos de cdigos de operacin en modo binario y modo fuente

Instruccin DEC A SUBB A,R4 SUB R4,R4

Familia MCS-51 MCS-51 MCS-251

Cdigo de operacin Modo binario Modo fuente 14H 14H 9CH A5 9CH A5 9CH 9CH

Los autores, 2001; Edicions UPC, 2001.

62

Microcontroladores MCS-51 y MCS-251

3.5.1.5 Reubicacin de memoria de programa en la regin 00: Para las versiones del microcontrolador 8XC251Sx con 16kbytes de memoria interna, el usuario tiene la posibilidad de reubicar 8kbytes en la regin 00:, lo cual permite un acceso ms rpido a tablas de constantes almacenadas en esta memoria usando direccionamiento directo. Para poder realizar esta reubicacin ser necesario poner a cero el bit /EMAP (bit 0 de la localizacin UCONFIG1). Con este bit a cero, los 8kbytes de memoria de programa interna que van de la direccin FF:2000H a la direccin FF:3FFFH quedan reubicados en las direcciones 00:E000H-00:FFFFH (figura 3.20).

Regin FF:
FF:FFFFH EMAP = 0 FF:4000H FF:3FFFH 8 Kbytes FF:2000H FF:1FFFH 8 Kbytes FF:0000H 00:E000H

Regin 00:
00:FFFFH 8 Kbytes

00:DFFFH

00:0000H Fig. 3.20 Reubicacin de memoria de programa en la regin 00:

3.5.1.6 Bytes cargados en la pila por una interrupcin En cuanto a los bytes que se cargan en la pila por una interrupcin, el usuario puede elegir entre dos opciones: una de ellas permite cargar en la pila los dos primeros bytes del contador de programa (PC); la otra opcin carga los tres bytes del contador de programa y el registro de estado PSW1. El bit INTR (bit 4 de la localizacin UCONFIG1) configura una de las dos opciones. Si se pone este bit a cero se almacenan en la pila slo dos bytes del contador de programa. Si se pone a 1 se almacena todo el contador de programa ms el registro de estado.

Los autores, 2001; Edicions UPC, 2001.

You might also like