1 estructura bÆsica de un sistema microprocesador

48
1 Estructura básica de un sistema microprocesador 15 1 Estructura básica de un sistema microprocesador 1.1 Introducción 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 diseño. Algoritmo o programa Sistema procesador Proceso a gobernar Salidas Entradas Salida del proceso 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 lógica programable, como es el caso de los microprocesadores, microcontroladores, procesadores digitales de señal (DSP), etc. Los sistemas procesadores también pueden trabajar en paralelo, aumentando la velocidad de ejecución de los programas. 1.2 Estructura básica de un sistema microprocesador La estructura básica 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 tecnología de los semiconductores, ha permanecido inalterada desde el momento de su concepción. En la estructura básica de un sistema microprocesador (figura 1.2) se distinguen los siguientes bloques: la unidad central de proceso CPU, la memoria, el módulo de entradas/ºsalidas y los buses de direcciones, de datos y de control. © Los autores, 2001; © Edicions UPC, 2001.

Upload: others

Post on 27-Jun-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Estructura bÆsica de un sistema microprocesador

1 Estructura básica de un sistema microprocesador 15

1 Estructura básica de un sistema microprocesador

1.1 Introducción

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 diseño.

Algoritmo

oprograma

Sistema

procesador

Proceso

a

gobernar

SalidasEntradas

Salida del

proceso

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 lógica programable, como es el caso de los microprocesadores,

microcontroladores, procesadores digitales de señal (DSP), etc. Los sistemas procesadores también

pueden trabajar en paralelo, aumentando la velocidad de ejecución de los programas.

1.2 Estructura básica de un sistema microprocesador

La estructura básica 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 tecnología de los semiconductores, ha

permanecido inalterada desde el momento de su concepción.

En la estructura básica de un sistema microprocesador (figura 1.2) se distinguen los siguientes

bloques: la unidad central de proceso CPU, la memoria, el módulo de entradas/ºsalidas y los buses de

direcciones, de datos y de control.

© Los autores, 2001; © Edicions UPC, 2001.

Page 2: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25116

Memoria

( M )

Unidad

central

de

proceso

(CPU)

Módulo

de

E/S

Bus de direcciones

Bus de control

Bus de datos

Fig. 1.2 Diagrama de bloques de la estructura básica 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

aritméticas, lógicas, de transferencia de datos, etc.

La memoria está destinada a almacenar las instrucciones y los datos del programa y los resultados

obtenidos en su ejecución. Sobre la memoria opera la CPU, leyendo instrucciones y escribiendo o

leyendo datos. Existen dos tipos básicos de memoria: la memoria ROM de sólo lectura y la memoria

RAM de lectura/escritura. Para acceder a la memoria se deben realizar una selección previa de ésta,

más un direccionamiento de la posición concreta a que se desea acceder para la lectura o la escritura.

El módulo de entradas/salidas, E/S o I/O, permite la comunicación 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 líneas físicas que permiten la transferencia de información entre todos

los bloques que constituyen el sistema microprocesador. Los buses se pueden clasificar, en función del

tipo de información que transportan, en tres tipos: el bus de direcciones, el bus de datos y el bus de

control. El bus de direcciones determina la dirección de memoria a que se va a acceder por la CPU y,

también, se utiliza para seleccionar, dentro de un rango de direcciones, distintos tipos de memoria, de

la misma forma que para seleccionar distintos tipos de periféricos a través del módulo 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.

Page 3: 1 Estructura bÆsica de un sistema microprocesador

1 Estructura básica de un sistema microprocesador 17

microprocesador, encargándose de buscar, decodificar, ejecutar las instrucciones y de generar las

señales de control adecuadas para ello.

La unidad de proceso está formada por la unidad aritmético-lógica, ALU, y por los registros del

sistema microprocesador. La ALU se encarga de realizar las operaciones aritméticas y lógicas del

sistema, como pueden ser la suma, resta, multiplicación, función AND lógica, función OR lógica, 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 también el registro PC (Program Counter), o contador de programa, que es

un registro especial encargado de enviar, por medio del bus de direcciones, la posición de memoria

que corresponde a la siguiente instrucción que se debe ejecutar. El contador de programa, PC, se

actualiza automáticamente cuando se ejecuta una instrucción, de manera que siempre apunta a la

siguiente instrucción 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.

ALU

Acumulador

Registro de

2º operando

Unidad

de

control (UC)

Registro

de estado

Bus interno de la CPU

Unidad de proceso (UP)

Control

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 operación aritmética, o suele ser, en la CPU,

el registro destinatario del resultado obtenido en la operación.

Otro registro que se debe destacar es el registro de estado, debido a que contiene bits que actúan como

indicadores o alarmas de ciertos sucesos acontecidos en las operaciones aritméticas. 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 número contenido en el acumulador.

© Los autores, 2001; © Edicions UPC, 2001.

Page 4: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25118

1.2.2 Módulo de entradas/salidas (E/S)

El sistema microprocesador necesita de dispositivos de entrada/salida para gobernar y comunicarse

con el entorno de la aplicación, con la función principal de hacer de interfaz entre el sistema y los

periféricos externos asociados a éste.

Módulo

de

E/S

Bus de datos

Bus de control

Bus de direcciones

Enlaces con

dispositivos

periféricos

Fig. 1.4 Modelo genérico de un módulo de E/S

Las operaciones de E/S se hacen sobre una amplia gama de periféricos conectados al sistema

microprocesador (impresoras, teclados, monitores, convertidores A/D y D/A, sensores, actuadores,

etc.), y con los que se suelen intercambiar señales de control y de datos. En estas operaciones se debe

coordinar el tráfico entre los recursos internos del sistema microprocesador y los periféricos, pues a

menudo la velocidad de transferencia de datos de los periféricos es más lenta, o necesitan un

determinado sincronismo.

El módulo de E/S se puede realizar por medio de instrucciones específicas que lo conforman y que

residen en el programa del sistema microprocesador; se puede hacer mediante interrupciones, donde

los periféricos pueden activar líneas de interrupción de la CPU, que detienen la ejecución del

programa y pasan a ejecutar un programa específico pensado para atender al periférico que ha causado

la interrupción; se puede hacer tratando las entradas/salidas como posiciones de memoria, donde se

seleccionan los periféricos mediante ciertos rangos de direcciones y se envían y reciben datos que

gestionan al periférico.

También 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 periféricos.

1.2.3 Buses del sistema

Un bus es el medio por el cual se transmite información por los distintos módulos que componen un

sistema microprocesador. Un bus puede ser unidireccional o bidireccional, es decir, puede transmitir

la información en una única dirección, 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 característica triestado, que consiste en un estado de alta impedancia en las

líneas del dispositivo conectados al bus, de forma que permite que quede desconectado eléctricamente

del bus, y que así la CPU pueda acceder a uno de los distintos dispositivos conectados al mismo.

© Los autores, 2001; © Edicions UPC, 2001.

Page 5: 1 Estructura bÆsica de un sistema microprocesador

1 Estructura básica de un sistema microprocesador 19

Un dispositivo triestado tiene una señal de control que determina si el estado será de alta impedancia,

o no. El estado en alta impedancia hace que el dispositivo se desconecte eléctricamente de la línea en

cuestión (figuras 1.5 y 1.6).

0

1

Control

Control

0

1

0

1

Alta impedancia

a

b

a

b

Fig. 1.5 Conexión de dos buffers triestados a una misma

línea de bus

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Control

Entradas Salidas

Buffer

Fig. 1.6 Estructura de un buffer triestado

La figura 1.5 muestra la conexión de dos buffers de salida a una misma línea de un bus. En esta figura

se observa el caso en que, para evitar colisiones entre los estados lógicos de la salida de ambos

buffers, el buffer a permanece en estado de alta impedancia mientras el buffer b está transmitiendo

información por la línea del bus.

El bus de direcciones tiene la tarea de llevar la dirección de la posición de memoria, o del módulo de

E/S, a la que la CPU desea acceder. El contenido del bus es unidireccional y siempre lo proporciona la

CPU a través de la unidad de control. El número de líneas 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, serán necesarias 16 líneas de dirección para formar

el bus de direcciones.

El bus de datos debe soportar el traspaso de información entre la CPU, la memoria y los módulos 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 líneas destinadas a llevar las señales que gobiernan y

sincronizan todo el sistema microprocesador, como son las señales del tipo /RD, /WR, ALE, reset,

líneas de interrupción, etc. Con estas señales se llevan a cabo distintas operaciones como, por ejemplo,

la selección, lectura y escritura en las memorias externas, o en los periféricos externos.

Uno de los problemas que se debe considerar en un bus es la carga que puede soportar, es decir, el

número de dispositivos o de puertas lógicas que se pueden conectar a una misma línea. En general,

cada nuevo dispositivo receptor que se conecta a una línea supone un incremento en la corriente que

© Los autores, 2001; © Edicions UPC, 2001.

Page 6: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25120

debe suministrar el emisor cuando está a nivel alto, VOH (1 lógico), y en la corriente que debe absorber

cuando está a nivel bajo, VOL (0 lógico), 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

tecnología o de la familia lógica utilizada. La tabla 1.1 muestra el valor de estos parámetros 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 número máximo de receptores que puede soportar un emisor específico.

IH1

I H2

I H3

IH4I OH

V=VOH

Emisor

Receptores

4H3H2H1HOH IIIII +++=

Fig. 1.7 Corriente que suministra el emisor cuando su

salida está a nivel alto, VOH (1 lógico)

IL1

I L2

I L3

IL4I OL

V=VOL

Emisor

Receptores

4L3L2L1LOL IIIII +++=

Fig. 1.8 Corriente que absorbe el emisor cuando su

salida está a nivel bajo, VOL (0 lógico)

Tabla 1.1 Especificaciones de nivel lógico para las familias lógicas TTL, LSTTL y CMOS (esta última dada para

la familia GS CD4000 serie “B” con una tensión de alimentación de VDD=5V)

Descripción TTL CMOS LSTTL

VOH Valor mínimo de tensión de salida a 1 lógico 2.4V 4.95V 2.7V

VOL Valor máximo de tensión de salida a 0 lógico 0.4V 0.05V 0.5V

VIHValor mínimo de tensión de entrada

aceptable como un 1 lógico2.0V 3.5V 2.0V

VILValor máximo de tensión de entrada

aceptable como un 0 lógico0.8V 1.5V 0.8V

IIH Corriente máxima absorbida a 1 lógico 40µA 0.3µA 20µA

IIL Corriente máxima suministrada a 0 lógico -1.6mA -0.3µA -0.4mA

IOH Corriente máxima de salida a 1 lógico -400µA -0.16mA -400µA

IOLCorriente máxima absorbida de salida a 0

lógico16mA 0.44mA 8mA

Otro problema que es común a los buses es el de las reflexiones que se pueden producir en las líneas,

debido a que un pulso situado en una línea de un bus se comporta de manera parecida a una señal de

radio frecuencia en una línea de transmisión. Este fenómeno afecta sobre todo a las líneas de larga

longitud, haciendo que aparezcan sobreoscilaciones y transitorios repentinos en la recepción de los

pulsos transmitidos por las líneas, que distorsionan los niveles lógicos transmitidos. Las reflexiones

producidas en las líneas (figura 1.9) son debidas a la falta de adaptación de impedancias entre el

emisor y el receptor, de forma que el receptor no absorbe toda la energía transmitida y parte de esta

energía se refleja hacia el emisor.

© Los autores, 2001; © Edicions UPC, 2001.

Page 7: 1 Estructura bÆsica de un sistema microprocesador

1 Estructura básica de un sistema microprocesador 21

Emisión Recepción

Pulso corto

Pulso largo

Fig. 1.9 Reflexiones en el receptor debidas a reflexiones producidas en la línea

Para que no se produzcan reflexiones la impedancia de entrada de los receptores debe ser idéntica a la

impedancia que presenta la línea conectada a éstos. La impedancia de una línea trazada en un circuito

impreso suele tener un valor comprendido entre los 100Ω y 200Ω, por lo que la adaptación se puede

conseguir conectando una resistencia de adaptación de 180Ω ó 220Ω entre la entrada del receptor y

masa, lo que se denomina terminación pasiva.

220Ω

470Ω

5V

220Ω

Terminación pasiva

Terminación activa

Emisor

Emisor

Receptor

Receptor

Fig. 1.10 Terminaciones pasiva y activa de una línea de un bus para eliminar o reducir las reflexiones en líneas

de larga longitud

La terminación pasiva, no obstante, presenta el problema de que la resistencia de adaptación es una

carga más para el transmisor, por lo que reduce el número de receptores que se le pueden conectar.

Esta situación se puede mejorar utilizando un divisor de tensión que sitúa la línea a la mitad del

margen de tensión para la familia TTL, y que, además, adapta el receptor a la impedancia

característica de la línea (figura 1.10). Esta solución se denomina terminación activa. Con la

terminación 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

características comunes, como son los dispositivos de entrada/salida, las memorias para albergar

© Los autores, 2001; © Edicions UPC, 2001.

Page 8: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25122

programas y datos, los dispositivos de comunicación asíncrona con otros sistemas, los dispositivos de

entrada y visualización de información, 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 aplicación, sin llegar a

especificar el tipo de microprocesador, los dispositivos y los periféricos empleados.

Memorias

RAMEPROM

EEPROM

Puertos

de E/SE/S

analógicas

TimersPuerto

serie

CPU

Generadores

de reloj y

sincronismo

Controlador

de teclado y

visualización

RS-232C

RS-422

RS-485

Acceso

directo a

memoria

DMA

Buses de direcciones, control y datos

Otr

os

dis

posi

tivos

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

comunicación, 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 diseño 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 volátil, como la PROM, la FLASH

y la EPROM, para albergar el programa del sistema, como una memoria volátil, como la SRAM o

DRAM, para albergar los datos generados y utilizados por el programa.

En los sistemas basados en microcontrolador las memorias más ampliamente utilizadas son del tipo

EPROM y SRAM, aunque también se usan otro tipo de memorias como la OTPROM (One time

programmable), la NOVRAM (Non-volatile RAM) y memorias del tipo serie que envían y reciben los

datos vía 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 propósito general. Estos circuitos integrados se utilizan en los microprocesadores/

microcontroladores, para disponer de E/S o para ampliar el número de E/S. A través de los puertos de

E/S se puede hacer el control de los periféricos, la transmisión y recepción de datos entre la CPU y los

periféricos, la activación 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.

Page 9: 1 Estructura bÆsica de un sistema microprocesador

1 Estructura básica de un sistema microprocesador 23

8 líneas 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 generación y del sincronismo de señales, o de la temporización de

determinados sucesos, se necesitan circuitos integrados Timers, que son temporizadores/contadores

capaces de contabilizar y temporizar señales de acuerdo con una señal de reloj de entrada. Además,

también hay circuitos integrados específicos para la generación de varias señales 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

multifunción, con cuatro temporizadores programables, un controlador de hasta 16 fuentes de

interrupción, un puerto de E/S programable y un canal USART de comunicación serie asíncrona.

Otro elemento importante es el puerto serie que proporciona el soporte al sistema microprocesador

para poder comunicarse, vía serie, con otros sistemas, empleando estándares del tipo RS-232C, RS-

422, etc. En este sentido existen en el mercado circuitos integrados que soportan la comunicación

serie asíncrona, 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

comunicación con otros sistemas, o el SIO MC68564 de Motorola que soporta la comunicación serie

síncrona y asíncrona con otros sistemas.

La variedad de circuitos integrados específicos que se ofrecen para el soporte de los sistemas basados

en microprocesador es amplia. Prácticamente, 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 número determinado de dígitos, circuitos integrados para el arbitraje y la gestión de

los buses del sistema microprocesador, circuitos integrados para la gestión de interrupciones, circuitos

integrados para el control y acceso de una unidad lectora de disquetes, circuitos integrados para

detectar las caídas de tensión de la red eléctrica, etc. El número de circuitos integrados de soporte a un

sistema basado en microcontrolador es considerable y está sometido a un proceso continuo de mejora

y renovación, 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 periódica 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 computación y procesado de datos y al procesado de señales. A

medida que la tecnología de silicio fue evolucionando, permitiendo la integración de un mayor

número de transistores en la misma área de silicio, la complejidad de los microprocesadores aumentó

también y se produjo una especialización según el campo de aplicación. En este momento, los

microprocesadores se especializan básicamente en el entorno de la computación y del procesado de

datos, aunque también se aplican en determinados procesos industriales donde se necesita de una

computación intensa de datos. Por otra parte, aparecen los microcontroladores, especialmente

concebidos para el ámbito de control de procesos industriales y para la gestión y el control de

máquinas diversas. Por último, también surgen los procesadores digitales de señal (DSP),

especialmente pensados para el procesado de señal, como, por el ejemplo, el procesado de la señal de

© Los autores, 2001; © Edicions UPC, 2001.

Page 10: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25124

voz en teléfonos móviles y el filtrado de señales de televisión; aunque también se emplean en el

control de motores y en tareas de control, en general, donde las señales son de rápida variación.

CPU

Generadores

de reloj y

sincronismo

Controlador

de teclado y

visualización

RS-232C

RS-422

RS-485

Acceso

directo a

memoria

DMA

Otr

os

dis

posi

tivos

CI Microcontrolador

Puertos

de E/SE/S

analógicas

Timers

Memorias

RAMEPROM

EEPROM

Puerto

serie

Buses de direcciones, control y datos

Fig. 1.12 Concepción de un microcontrolador basada en la inclusión 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 inclusión de algunos de los

dispositivos que aparecen en la figura 1.11 dentro del mismo circuito integrado. En consecuencia,

según la figura 1.12, un microcontrolador está formado por una CPU, más los elementos

imprescindibles para interactuar con el exterior y para solucionar y simplificar una buena parte de las

aplicaciones que hasta el momento se venían realizando con los sistemas basados en microprocesador.

En la actualidad los microcontroladores suelen incorporar, además de la CPU, puertos de E/S,

memoria ROM, EPROM, OTPROM o FLASH para albergar el programa realizado, memoria RAM,

registros de propósito general que facilitan la tarea del programador, temporizadores y contadores para

contabilizar y temporizar eventos, puerto serie con el que implementar estándares del tipo RS-232C,

etc, convertidor analógico/digital para la lectura de señales analógicas, salidas con modulación de

pulsos, etc.

En este momento, en el mercado existen multitud de fabricantes de microcontroladores que, además,

ofrecen una amplia gama de versiones, capaces de ajustarse a distintos tipos de aplicaciones. En

consecuencia, el diseñador debe tener muy claros los criterios de elección, en función de las

prestaciones y los costos de las herramientas de desarrollo que se deben adquirir, como son los

emuladores, las tarjetas de evaluación y los programas de software para el desarrollo de la aplicación.

© Los autores, 2001; © Edicions UPC, 2001.

Page 11: 1 Estructura bÆsica de un sistema microprocesador

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 compañía Intel Corporation.Esta familia fue diseñada para emplearse en pequeñas aplicaciones y podía soportar hasta un máximode 4k bytes de código de programa y 256 bytes para datos. La MCS-48 ya no se fabrica en laactualidad. Las principales características que tenía esta familia se resumen en la tabla 2.1.

Tabla 2.1 Principales características de la familia MCS-48

Microcontroladores

Versión básica 8035AHL 8039AHL 8049AHLVersión con ROM 8048AH 8049AH 8050AHLVersión con EPROM 8748H 8749H -

Características

Memoria RAM interna 64 128 256Memoria EPROM/ROM 1k bytes 2k bytes 4k bytesTemporizadores 1 1 1Fuentes de interrupción 2 2 2Líneas de E/S 27 27 27

2.2 La familia MCS-51

La MCS-51 es en la actualidad la familia básica de microcontroladores de 8 bits de Intel. Esta familiaes adecuada para soportar aplicaciones sencillas y de mediana complejidad y se ha convertido en unode los estándares del mercado, puesto que se ha utilizado en multitud de aplicaciones y, además, otrosfabricantes, como Siemems Components, Atmel, Philips Semiconductors, OKI Semiconductor, etc.,proporcionan versiones especializadas de ésta. La tabla 2.2 muestra los principales componentes deesta familia, donde se han excluido las versiones con memoria ROM interna, puesto que ésta debe serimplementada por el propio fabricante mediante máscara en la fase de producción, lo que supone quetan sólo sea rentable en grandes series de producción; está, pues, lejos del alcance de la economía dela mayor parte de los usuarios. Las principales características de la MCS-51 se listan a continuación:

- 32 líneas 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 función especial (SFR).

© Los autores, 2001; © Edicions UPC, 2001.

Page 12: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25126

- Espacio de memoria para programas de hasta 64k.- Espacio de memoria para datos de hasta 64k.- Hasta 3 temporizadores de 16 bits cada uno.- Comunicación serie asíncrona (UART full-duplex).- De 5 a 6 fuentes de interrupción 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

Versión

OTROM/EPROM

bytes

Mem.RAM

Bytes

Líneasde E/S

Nº de

Timers

Líneas deinterrup.

Nºcanales

PCA

A/DModos

bajo

consumo

Veloc.reloj

Mhz

8031AH - 128 32 2 5 0 0 - 128751BH 4K EPROM 128 32 2 5 0 0 - 128032AH - 256 32 3 6 0 0 - 128752BH 8K EPROM 256 32 3 6 0 0 - 12

80C31BH - 128 32 2 5 0 0

12,1687C51 4K EPROM 128 32 2 5 0 0

12,16,20,2487C52 8K EPROM 256 32 3 6 0 0

12,16,20,2487C54 16K EPROM 256 32 3 6 0 0

12,16,20,2487C58 32K EPROM 256 32 3 6 0 0

12,16,20,2487L52 8K OTPROM 256 32 3 6 0 0

12,16,2087L54 16K OTPROM 256 32 3 6 0 0

12,16,2087L58 32K OTPROM 256 32 3 6 0 0

12,16,2080C51FA - 256 32 3 7 5 0

12,1687C51FA 8K EPROM 256 32 3 7 5 0

12,16,20,2487C51FB 16K EPROM 256 32 3 7 5 0

12,16,20,2487C51FC 32K EPROM 256 32 3 7 5 0

12,16,20,2487L51FA 8K OTPROM 256 32 3 7 5 0

12,16,2087L51FB 16K OTPROM 256 32 3 7 5 0

12,16,2087L51FC 32K OTPROM 256 32 3 7 5 0

12,16,2080C51GB - 256 48 3 15 10 8

12,1687C51GB 8K EPROM 256 48 3 15 10 8

12,1680C152JA - 256 40 2 11 0 0

16.580C152JB - 256 56 2 11 0 0

16.580C51SL-BG - 256 24 2 10 0 4

1687C51SLAH 16K EPROM 256 24 2 10 0 4

16

2.3 La familia MCS-151

La familia MCS-151 de microcontroladores de 8 bits es totalmente compatible, a nivel de juego deinstrucciones y de encapsulado, con la MCS-51. Esta familia, al igual que la familia posterior MCS-251, es una mejora y actualización en prestaciones de la familia MCS-51. El número de componentesde la MCS-151 es reducido y se muestra en la tabla 2.3, y sus principales características se resumen acontinuación:

- Procesamiento paralelo de instrucciones “Pipeline”.- Juego de instrucciones y encapsulado compatibles con la MCS-51.

© Los autores, 2001; © Edicions UPC, 2001.

Page 13: 1 Estructura bÆsica de un sistema microprocesador

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 líneas de entrada/salida (E/S).- 7 fuentes de interrupción con 4 niveles de prioridad.- Batería o array de contadores programable (PCA).- Salidas con modulación de anchura de pulsos (PWM).- Temporizador de watchdog.- Comunicación serie asíncrona (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

Versión ROM/OTPROM RAM interna

80C151SB - 256 bytes

83C151SA 8K bytes ROM 256 bytes

83C151SB 16K bytes ROM 256 bytes

87C151SA 8K bytes OTPROM 256 bytes

87C151SB 16K bytes OTPROM 256 bytes

2.4 La familia MCS-251

La familia de microcontroladores de 8 bits MCS-251 es el resultado de la mejora y actualización delas familias MCS-51 y MCS-151. Esta familia presenta un aumento general de prestaciones conrespecto a las anteriores, en cuanto al número de instrucciones, velocidad y flexibilidad; mantiene, almismo tiempo, la compatibilidad tanto a nivel de hardware como de software, lo que posibilita quepueda sustituir, con un mínimo coste y de manera directa, a la MCS-51, y actualizar así lasaplicaciones que están soportadas por esta familia.

El primer miembro de la familia MCS-251 es el 8XC251Sx que se comercializa en varias versiones,en función de la cantidad de memoria interna disponible. En la tabla 2.4 se muestran losmicrocontroladores que forman parte de esta familia, y a continuación se listan sus principalescaracterísticas:

- Procesamiento paralelo de instrucciones “Pipeline”.- 24 líneas de dirección internas que permiten un espacio de hasta 16 Mbytes de memoria.- Juego de instrucciones ampliado con respecto a la MCS-51, con instrucciones aritméticas y

lógicas de 16 y de 32 bits.- Encapsulado y juego de instrucciones, en modo binario, compatibles con la MCS-51.- Acceso a los registros de propósito general a nivel de byte, de Word (2 bytes) y de Double

Word (4 bytes).

© Los autores, 2001; © Edicions UPC, 2001.

Page 14: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25128

- Puntero de la pila (registro Stack Pointer) de 16 bits, que permite acceder a una memoria depila de hasta 64 kbytes.

- Tiempo mínimo de ejecución de una instrucción 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 líneas de entrada/salida (E/S).- 7 fuentes de interrupción con 4 niveles de prioridad.- Batería o array de contadores programable (PCA).- Salidas con modulación de anchura de pulsos (PWM).- Temporizador de watchdog.- Comunicación serie asíncrona (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

Memoria interna

Versión OTPROM/

EPROM

(kbytes)

ROM

(kbytes)

RAM

(bytes)

80C251SB80C251SQ

00

00

1024512

83C251SA83C251SB83C251SP83C251SQ

0000

8168

16

10241024512512

87C251SA87C251SB87C251SP87C251SQ

8168

16

0000

10241024512512

Estas características proporcionan importantes mejoras con respecto a la familia MCS-51, como son elincremento de la velocidad de ejecución para una misma frecuencia de reloj, el incremento de laeficiencia 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 tamaño.

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 laarquitectura de la MCS-51. La oferta que tiene es muy extensa, por lo que es fácil hallar una versiónque se ajuste a las necesidades de un proyecto. Este fabricante tiene microcontroladores con memoriaEPROM, OTPROM o FLASH internas, versiones que soportan el bus serie I2C, temporizador de

© Los autores, 2001; © Edicions UPC, 2001.

Page 15: 1 Estructura bÆsica de un sistema microprocesador

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, funcionamientoen baja tensión, etc. La tabla 2.5 muestra los principales componentes de esta familia.

Tabla 2.5 Microcontroladores de Philips Semiconductors

Ver

sió

n

RO

M

OT

P o

FL

AS

H

RA

M (

by

tes)

Tim

ers

PW

M

PC

A

Watc

hdo

g

Lín

eas

E/S

(I/

O)

Inte

rru

pci

on

es

Int.

exte

rna

s

A/D

(b

its)

A/D

(ca

na

les)

Pro

tecc

ión

pro

gra

ma

UA

RT

I2C

Ca

rcte

ríst

ica

ses

pec

iale

s

Ma

x. fr

eq.

(MH

z)

80C31/80C32 - - 128-256 3 - - - 32 6 2 - -

- 2.7-5.5V,Low-power 338xC51/8xC52 8k 8k 128-256 3 - - - 32 6 2 - -

- 2.7-5.5V,Low-power 338xC54/8xC58 16-32k 16-32k 256 3 - - - 32 6 2 - -

- 2.7-5.5V,Low-power 3389C5x - 4-32k 128-256 3 - - - 32 6 2 - -

- MTP Flash 338xC51Fx 8-32k 8-32k 256 4

32 7 2 - -

- 2.7-5.5V 338xC51Rx+ 16-64k 16-64k 512-1024 4

32 7 2 - -

- 2.7-5.5V 3389C51Rx+ - 32-64k 512-1024 4

32 7 2 - -

- Flash-12V ISP 3387LPC762 - 2k 128 2 - -

18 12 3 - - BOD,PUR,Keypad

interrupt.Low-power20

87LPC764 - 4k 128 2 - -

18 12 3 - - BOD,PUR,Keypad

interrupt.Low-power20

87LPC767 - 4k 128 2 - -

18 12 3 8 4

51LPC con A/D 2087LPC768 - 4k 128 2

-

18 12 3 8 4

A/D y PWM 2087LPC769 - 4k 128 2 - -

18 12 3 8 4

A/D y D/A 208xC591 16k 16k 512 3

-

32 15 2 10 6

CAN 2.0B/PeliCAN 1689C51Rx2 - 16-64k 512-1024 4

32 7 2 - -

- Flash,5V,ISP/IAP 3389C66x - 16-64k 1k-2k 4

32 8 2 - -

Flash,5V,ISP/IAP 20/338xC554 16k 16k 512 3

-

48 15 2 10 8 - 2.7-5.5V,Capture/

compare16

80/83C557E489C557E4

32k 32k 1024 3

-

48 2 10 8 Low EMI, 2 PWM

Capture/compare16

80C557E683C557E6

48k 48k 1536 3

-

48 2 10 8 Low EMI, 2 PWM

Capture/compare16

8xC557E8 64k 64k 2048 3

-

48 2 10 8 Low EMI, 2 PWM

Capture/compare16

8xC524 16k 16k 512 3 - -

32 8 2 - - -

- 248xC528 32k 32k 512 3 - -

32 8 2 - -

- 1680/83/87C552 8k 8-16k 512 3

-

48 15 2 10 8 -

- 2480/83/87C652 8k 8-16k 256 2 - - - 32 7 2 - -

- 248xC750 1k 1k 64 1 - - - 19 2 - - - - - - 168xC748 2k 2k 64 2 - - - 19 2 - - - - - - 168xC751 2k 2k 256 1 - - - 19 2 - - - -

- 168xC575 8k - 256 3 -

32 2 - - -

- - 168xC576 8k - 256 3 -

32 2 10 6 -

- - 168xC749 2k 2k 64 2

- - 21 2 8 5 - - - - 168xC752 2k 2k 64 1

- - 21 2 8 5 - -

- 168xC591 16k 16k 512 3

-

32 15 2 10 6

CAN 2.0B/PeliCAN 168xC592 16k 16k 512 3

-

48 6 2 10 8

- CAN bus controller 168xCE598 32k 32k 512 3

-

48 6 2 10 8

CAN bus controller 16

Las versiones que tienen bus serie I2C se pueden conectar por medio de este bus a distintos periféricosy microcontroladores. El bus I2C utiliza tan sólo dos terminales del microcontrolador, uno como líneade datos y otro como línea de reloj, y es capaz de operar en un sistema con multi-másters y de soportarmultitud de periféricos 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.

Page 16: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25130

para la industria del automóvil y en sistemas de manufactura automatizada, pues inicialmente este busfue concebido para reducir el número elevado de cables en un automóvil. El bus CAN es un bus seriede alta velocidad formado por dos hilos, que puede llegar a distancias de hasta 40 metros y con el quese pueden realizar estructuras de bus con hasta 30 nodos de comunicación.

2.5.2 Microcontroladores de Siemens

Siemens es un fabricante que tiene una amplia gama de productos en multitud de sectores distintos. Enel ramo de semiconductores tiene la familia C500 de microcontroladores, compatibles tanto a nivel dehardware como de software con la MCS-51. La tabla 2.6 muestra los principales componentes de estafamilia. Los microcontroladores de Siemens pueden funcionar a altas frecuencias de reloj, puedentener memoria ROM o OTPROM, puerto serie full-duplex, modos especiales de bajo consumo, variosregistros de punteros de datos DPTR, etc.

Tabla 2.6 Microcontroladores de Siemens

Ver

sió

n

RO

M

RA

M (

by

tes)

RO

M P

rote

gid

a

Lín

eas

E/S

A/D

(b

its)

A/D

(C

an

ale

s)

Tim

ers

(16

bit

s)

Inte

rru

pci

on

es

MD

U

Pu

erto

ser

ie

PW

M (

can

ale

s)

Pu

nte

ros

de

da

tos

DP

TR

(16

bit

s)

Watc

hdo

g

Ma

x. fr

eq. re

loj

(MH

z)

C501G-L/-1R -/8k 256

32 - - 3 6 - USART - 1 - 40C501G-E 8k OTP 256

32 - - 3 6 - USART - 1 - 40C504-L/-2R -/16k 512

32 10 8 4 12 - USART 6 1

40C504-2E 16k OTP 512

32 10 8 4 12 - USART 6 1

40C513-1R 8k 256 - 32 - - 3 7 - USART+SSC - 1 - 12

C513A-L/-R/-2R -/12k/16k 512 - 32 - - 3 7 - USART+SSC - 1 - 12C513A-2E 16k OTP 512

32 - - 3 7 - USART+SSC - 1 - 16C505L-4E 32k OTP 512 - 46 10 8 3 12 - USART 4 8

20C505-L/-2R -/16k 512

34 8 8 3 12 - USART 4 8

20C505C-L/-2R -/16k 512

34 8 8 3 12 - USART 4 8

20C505A-4E 32k OTP 1280

34 10 8 3 12 - USART 4 8

20C505CA-4E 32k OTP 1280

34 10 8 3 12 - USART 4 8

20C515-L/-1R -/8k 256

56 8 8 3 12 - USART 4 1

24C515A-L/-4R -/32k 1280

56 10 8 3 12 - USART 4 1

24C515C-L/-8R -/64k 2304

57 10 8 3 15 - USART+SSC 4 8

10C515C-8E 64k OTP 2304

57 10 8 3 15 - USART+SSC 4 8

10C517A-L/4R -/32k 2304

68 10 12 4 17

USART+UART 21 8

24C509-L - 3328 - 64 10 15 5 19

USART+UART 29 8

16SAB 80C515 8k 256

56 8 8 3 12 - USART 4 1

20SAB 80C535 - 256 - 56 8 8 3 12 - USART 4 1

20SAB 80C515A - 1280 - 56 10 8 3 12 - USART 4 1

18SAB 83C515A-5 32k 1280

56 10 8 3 12 - USART 4 1

18SAB 80C517 8k 256

68 8 12 3 12

USART+UART 21 8

16SAB 80C537 - 256 - 68 8 12 4 14

USART+UART 21 8

16SAB 80C517A - 2304 - 68 10 12 4 17

USART+UART 21 8

18SAB 83C517A-5 32k 2304

68 10 12 4 17

USART+UART 21 8

18

Las versiones SAB80C517, SAB80C517A, SAB80C517A-5, SAB80C537, C517A-L/4R y C509-Ltienen una unidad de multiplicación y división por hardware, MDU, que es capaz de realizardivisiones 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.

Page 17: 1 Estructura bÆsica de un sistema microprocesador

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 laarquitectura de la MCS-51. Una de las características más relevantes de los microcontroladores de estefabricante es que todos ellos tienen memoria interna flash. Estos microcontroladores tienen un preciomás reducido que los microcontroladores con memoria interna EPROM. La tabla 2.7 muestra losmicrocontroladores con memoria flash de Atmel y las distintas características de cada uno. Lascaracterísticas 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.- Múltiples fuentes de interrupción.- La versión AT89S tiene 2K de memoria EEPROM interna, una interfaz SPIde bus serie y un temporizador de Watchdog.

Tabla 2.7 Características de los microcontroladores flash de Atmel

Características AT89C1051 AT89C2051 AT89C51 AT89LV51 AT89C52 AT89LV52 AT89C55 AT89S8252

Memoria flash (bytes) 1K 2K 4K 4K 8K 8K 20K 8KMemoria RAM (bytes) 64 128 128 256 256 256 256 256Mem. EEPROM interna 0 0 0 0 0 0 0 2KInterfaz serie SPI - - - - - - -

Proframación In-system

SI SI SI SI SI SI

Nº de Timers 1 2 2 3 3 3 4 3Nº de bits de seguridad(Lock bits)

2 2 3 3 3 3 3 3

Watchdog timer - - - - - - -

UART serie -

Salida de Power Down

mediante interrupción- - - - - - -

Comparador analógico SI SI - - - - - -Terminales de I/O 15 15 32 32 32 32 32 32Fuentes de interrupción 3 6 6 6 8 8 8 9Bus externo de datos/direcciones

- -

Modos Power Down yIdle

Alimentación Vcc 2.7-6.0 2.7-6.0 4.0-6.0 2.7-6.0 4.0-6.0 2.7-6.0 2.7-6.0 2.7-6.0Frecuencia Clock 0-24 0-24 0-24 0-24 0-24 0-24 0-33 0-33Patillas del encapsulado 20 20 40/44 40/44 40/44 40/44 40/44 40/44I/O Current Sink

(por patilla)20mA 20mA 10mA 10mA 10mA 10mA 10mA 10mA

Corriente total máxima deI/O (mA)

80mA 80mA 71mA 71mA 71mA 71mA 71mA 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, conencriptación en tiempo real, y en utilizar memoria del tipo NOVRAM para almacenar el programa, en

© Los autores, 2001; © Edicions UPC, 2001.

Page 18: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25132

lugar de ROM o EPROM. La segunda familia que oferta es de alta velocidad, capaz de ejecutar lasinstrucciones hasta tres veces más rápidamente que la familia MCS-51.

La primera familia está formada por los microcontroladores DS5000 y DS5002T, cuyas principalescaracterísticas son:

- 100% compatible en hardware y software con la MCS-51.- NOVRAM de 8k ó 32kbytes.- Zona particionada para código 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 código.- Generador aleatorio de número.- Interrupción por fallo de tensión.

La familia de alta velocidad está formada por los microcontroladores DS80C310, DS80C320,DS80C323, DSC390, DS83C520, DS83C530, DS87C520, DS87C530 y DS87C550. Lascaracterísticas 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.- Detección de fallo de tensión.- Dos punteros de datos, DPTR, para acceder a memoria externa.- Temporizador de watchdog.- Memoria RAM interna de 256 bytes.

La versión DS80C320 tiene 13 fuentes de interrupción, de las que 6 corresponden a fuentes externas.Las versiones DS87C520 y DS87C530 tienen 13 y 14 fuentes de interrupción, respectivamente,1kbyte de memoria SRAM interna accesible con la instrucción MOVX y 16kbytes de memoriaEPROM. La versión DS87C550 tiene estas mismas características y, además, incluye un convertidorA/D de 10 bits y con 8 canales multiplexados, 8kbytes de memoria EPROM y 4 canales de PWM conuna precisión de 8 bits.

La versión DS80C310 es un modelo reducido de la DS80C320, pensada para las aplicaciones donde elcoste es un factor importante. La versión DS80C323 es un modelo de bajo consumo y baja tensión dela DS80C320; tiene una frecuencia máxima de reloj de 18MHz, consume tan sólo 10mA y puedealimentarse entre 2.7V y 5.5V.

La versión DSC390 incorpora un bus serie CAN dual de alta velocidad, formado por dos interfacesCAN 2.0B. Esta versión también incorpora 4kbytes de memoria SRAM interna. Por último, lasversiones DS83C520 y la DS83C530 tienen 16kbytes de memoria ROM interna, al ser ideadas paragrandes series de fabricación.

© Los autores, 2001; © Edicions UPC, 2001.

Page 19: 1 Estructura bÆsica de un sistema microprocesador

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 MCS-51, cuyas características generales ya se han descrito en el capítulo 2. De esta arquitectura caberesaltar el área de registros especiales y el direccionamiento de la memoria interna.

SCON

PCON

TCON TMOD TH0

TH1 TL1

TL0

SBUF

RCAP2H*

RCAP2L* TH2* TL2*

T2CON*

IE IPInterrupciones. Puerto serie.

Temporizadores. PCA

Registro dedireccionesprograma

IncrementadorPC

BUFFER

PC

DPTR

MemoriaEPROM/

ROM

LatchPuerto 2

LatchPuerto 0

LatchPuerto 1

LatchPuerto 3

Puerto 0 Puerto 2

Puerto 3Puerto 1

ACC

TMP1 TMP2

ALU

PSW

B

MemoriaRAMinterna

StackPointer

SP

Controly

secuenc.

Reg

istr

o de

inst

rucc

ione

s

Reg

istr

o de

dire

cc. R

AM

OSC

XTAL1XTAL2 P1.0 ... P1.7 P3.0 ... P3.7

P2.0 ... P2.7P0.0 ... P0.7

PSEN

ALE

EA

RESET

VCC

VSS

* Sólo en las versiones con 3 temporizadores

Fig. 3.1 Arquitectura interna de la familia MCS-51

© Los autores, 2001; © Edicions UPC, 2001.

Page 20: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25134

El núcleo del microcontrolador está formado por la unidad de control, la unidad aritmético-lógica(ALU), el registro de estado (PSW), el acumulador y el contador de programa (PC). Este último es unregistro de 16 bits que se utiliza como puntero hacia la memoria de programas y su valor apuntasiempre a la dirección de memoria que contiene la instrucción a ejecutar.

Cabe destacar, en esta figura, la importancia del acumulador, puesto que interviene en la mayor partede las instrucciones, sobre todo en las instrucciones aritméticas.

La familia MCS-51 tiene cuatro puertos: P0, P1, P2 y P3. Los puertos son de 8 bits, y cada bit puedeser configurado de forma individual como entrada o como salida (E/S), siendo transparente para elprogramador. La MCS-51 tiene versiones con memoria interna de programas EPROM, OTPROM oROM; no obstante, en caso de necesitar memoria externa, los puertos P0 y P2 soportan un bus dedirecciones de 16 bits y un bus de datos de 8 bits para acceder a ésta. En este caso, el byte bajo del busde direcciones y el bus de datos comparten el mismo puerto, P0, mediante una multiplexacióntemporal entre ambos buses. En cuanto al byte alto del bus de direcciones, éste queda íntegramentesoportado por el puerto P2. La multiplexación temporal realizada en el puerto P0 es una manera hábilde optimizar el número de terminales del microcontrolador, minimizando el tamaño de suencapsulado.

En la figura 3.1 aparecen, además, un bloque que representa la memoria RAM interna, con la cualopera 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 comunicación serie asíncrona,interrupciones externas, el control de lectura y escritura de la memoria externa de datos y las entradasde los temporizadores/contadores de la familia. El puerto P1 en las versiones 8X51C51FX soporta lasentradas y salidas del array de contadores programable PCA.

3.1.1 Relación de terminales

La disposición de los terminales de esta familia se muestra en la figura 3.2. En concreto se muestra elencapsulado de los microcontroladores 87C51BH en formato DIP y PLCC.

VCC

P0.0/AD0P0.1/AD1

P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5

P0.6/AD6P0.7/AD7(/EA)/(VPP)

ALE/(/PROG)

/PSENP2.7/A15P2.6/A14P2.5/A13

P2.4/A12P2.3/A11

P2.2/A10P2.1/A9P2.0/A80

T2/P1.0T2EX/P1.1

P1.2P1.3P1.4

P1.5P1.6P1.7

RESET

RXD/P3.0TXD/P3.1

(/INT0)/P3.2(/INT1)/P3.3

T0/P3.4T1/P3.5

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

XTAL2

XTAL1VSS

8

7

5

1

B

H

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

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

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

(/W

R)/

P3.

6P

1.4

A12

/P2.

4

A11

/P2.

3

A10

/P2.

2

A9/

P2.

1

A8/

P2.

0

NC

VS

S

XT

AL

1

XT

AL

2

(/R

D)/

P3.

7P

1.3

P1.

2

P1.

0

P1.

1

NC

VC

C

P0.

0/A

D0

P0.

1/A

D1

P0.

2/A

D2

P0.

3/A

D3

18 19 20 21 22 23 24 25 26 27 28

17

16

15

14

13

12 NCNC

11

10

9

8

7

6 5 4 3 2 1 44 43 42 41 40

39

38

37

36

35

34

33

32

29

30

31

8751BH

Fig. 3.2 Microcontrolador 87C51BH en encapsulado DIP o PLCC

© Los autores, 2001; © Edicions UPC, 2001.

Page 21: 1 Estructura bÆsica de un sistema microprocesador

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

La relación de terminales que aparecen en la figura es la siguiente:

- VCC: tensión de alimentación: +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 dedirecciones y el bus de datos mediante una multiplexación temporal en el caso de tener que utilizarmemoria 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 dedirecciones (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 propósito general,aunque para aquellas versiones que tienen 3 temporizadores, los terminales P1.0 y P1.1 realizan lasfunciones alternativas T2 y T2EX del temporizador Timer2, respectivamente. El puerto en lasversiones con array de contadores programable PCA soporta las entradas y salidas de ésta. Losterminales 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 actúan como entradas de los módulos 0, 1, 2,3 y 4 de la PCA cuando trabaja en modo captura, respectivamente, y como salidas de los mismosmódulos cuando la PCA trabaja en modo comparación y en modulación 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 propósito general; noobstante soporta las funciones especiales más importantes de la familia MCS-51, como las señalesTXD y RXD del puerto de comunicación serie, las entradas de interrupción /INT0 y /INT1, lasentradas externas T0 y T1 de los temporizadores y las señales de lectura y escritura en memoriaexterna de datos /RD y /WR, respectivamente (tabla 3.1).

- ALE/(/PROG): este terminal (ALE, Addres Latch Enable) permite deshacer la multiplexacióntemporal entre el byte bajo del bus de direcciones y el bus de datos, realizada en el puerto P0. La señalALE suele conectarse a la señal de reloj de un latch de 8 bits, como por ejemplo el 74373, que permitedeshacer la multiplexación. En las versiones de la familia con memoria de programa interna EPROM oOTPROM, este terminal se emplea en modo /PROG en la fase de programación de la memoria.

-/PSEN: este terminal (/PSEN, Program Store Enable) se activa a 0 lógico cuando el microcontroladoraccede a la memoria externa de programas y se pone a 1 lógico en caso contrario.

- (/EA)/VPP: este terminal (/EA, External Acces) colocado a 1 lógico (Vcc) hace que elmicrocontrolador ejecute el código almacenado en la EPROM, OTPROM o ROM internas. Si secoloca a “0” (masa), el microcontrolador ejecuta el código de programa de la memoria externa deprogramas, y activa el bus de direcciones, el bus de datos y las señales de control. Como VPP, elterminal se utiliza para proporcionar la tensión de programación necesaria de la memoria EPROM oOTPROM interna.

- RESET: este terminal cuando se pone a “1” reinicializa el microcontrolador, poniendo el contador deprograma (PC) a 0000H, el puntero de la pila (SP) a 07H, todos los puertos (P0 a P3) a FFH y lamayoría de los registros a cero.

© Los autores, 2001; © Edicions UPC, 2001.

Page 22: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25136

-XTAL1, XTAL2: estos terminales son la entrada de la señal de reloj del microcontrolador. Puedeutilizarse un resonador cerámico o un cristal de cuarzo (figura 3.3); aunque, también se puede utilizaruna señal de reloj externa.

XTAL2

XTAL1

VSS

MCS-51

C

C

Fig. 3.3 Oscilador con cristal de cuarzo o resonador cerámico para la MCS-51.C=30pF±10pF para cristales de cuarzo. C=40pF±10pF para resonadores cerámicos

Tabla 3.1 Funciones alternativas de los puertos P1 y P3

Nombre Función alternativa Descripción de la función alternativa

P1.0 T2* Entrada o 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 módulo 0 del PCA.

P1.4 CEX1† Entrada/salida del módulo 1 del PCA.

P1.5 CEX2† Entrada/salida del módulo 2 del PCA.

P1.6 CEX3† Entrada/salida del módulo 3 del PCA.

P1.7 CEX4† Entrada/salida del módulo 4 del PCA.

P3.0 RXD Recepción del puerto de comunicación serie.P3.1 TXD Transmisión del puerto de comunicación serie.P3.2 /INT0 Interrupción externa 0.P3.3 /INT1 Interrupción externa 1.P3.4 T0 Entrada externa del Timer 0.P3.5 T1 Entrada externa del Timer 1.P3.6 /WR Habilitación de escritura en memoria externa.P3.7 /RD Habilitación 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 constitución interna de cada uno de los puertos se muestra en la figura 3.4. En el caso del puertoP0, cualquier de sus terminales, al disponer de un par de transistores NMOS conectados a P0.X, puedetener tres estados diferentes: 1 lógico (Vcc) si el transistor NMOS1 está en conducción y el transistorNMOS2 en corte, 0 lógico (tierra) si el transistor NMOS1 está en corte y el transistor NMOS2 enconducción, y alta impedancia cuando ambos transistores están en corte, por lo que el terminal quedaflotante desconectado de Vcc y de masa.

© Los autores, 2001; © Edicions UPC, 2001.

Page 23: 1 Estructura bÆsica de un sistema microprocesador

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-up1 y un transistor NMOS conectado a tierra, por lo que tan sólo pueden tener dos estados: 1

lógico si el transistor NMOS está en corte y 0 lógico si el transistor está en conducción.

ESCRIBEEN LATCH

DLATCH

CL

Q

Q

B1

B2

1

0

MUX

N1

P0.X

N2

DIREC/DATO

CONTROL

VCC

BIT DEL PUERTO 0 (P0)

BUS INT.

LEELATCH

LEEPIN

ESCRIBEEN LATCH

BUS INT.DLATCH

CL

Q

Q

B1

B2

1

0

MUX

P2.X

DIREC

CONTROL

VCC

BIT DEL PUERTO 2 (P2)

LEELATCH

LEEPIN

PULL-UPINTERNO

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

DLATCH

CL

Q

Q

B1

B2

P3.X

VCC

LEELATCH

LEEPIN

PULL-UPINTERNO

Funciónalternativade salida

ESCRIBEEN LATCH

BUS INT.

Función alternativade entrada

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

Según la figura 3.4, todos los terminales de los puertos tienen una báscula D interna que se empleapara almacenar la información que se desea leer o escribir en cada terminal, de manera que basta conque una instrucción ponga un estado determinado en un terminal, para que este estado se mantengaestable hasta que sea cambiado por otra instrucción del programa. Por ejemplo la instrucción SETBP1.1 pone a 1 lógico el terminal P1.1: para ello se almacena un 1 lógico en la báscula D, lo que poneal transistor asociado en corte, pues la puerta NAND fuerza un 0 lógico en su base.

Los puertos P0 y P2 tienen además un multiplexor, MUX, y una lógica adicional, que permite almicrocontrolador utilizar estos puertos como tales o como bus de direcciones y de datos. En esteúltimo caso, el microcontrolador emplea las señales DIREC, DATO y CONTROL para establecer losestados 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 deinterrupciones /INT0 e /INT1, las entradas T0 y T1 para los temporizadores internos, etc. Estasfunciones alternativas se introducen mediante la puerta NAND que aparece en la figura 3.4.

1 Pull-up es el término anglosajón empleado para definir a una resistencia conectada a la tensión de alimentación del

circuito, Vcc. Esta resistencia asegura que el terminal esté a la tensión Vcc cuando en transistor NMOS está en corte.

© Los autores, 2001; © Edicions UPC, 2001.

Page 24: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25138

Todos los puertos tienen al menos un buffer conectado al pin de entrada (B1), y un buffer conectado ala salida de la báscula D (B2), que intervienen en el proceso de lectura de los puertos. El buffer B1está gobernado por la señal Read Latch, mientras que el buffer B2 está gobernado por la señal ReadPin. En el juego de instrucciones de la MCS-51, existen instrucciones que leen el estado lógicoprocedente del buffer B2 y instrucciones que leen el estado lógico procedente del buffer B1. Estasúltimas son instrucciones que leen el estado lógico de la báscula D, modifican este estado y escriben elresultado obtenido en la báscula D. A este tipo de instrucciones se les denomina de “lectura-modificación- 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 báscula para evitar un posible error producido por una malainterpretación del nivel lógico en la entrada del terminal de un puerto.

En cuanto a la conexión de dispositivos externos, los puertos P1, P2 y P3 pueden soportar unacorriente de entrada máxima en un terminal de 1.6mA en estado lógico cero, transistor NMOS enconducción. En cambio, el puerto P0 puede soportar hasta una corriente de 3.2mA a cero lógico.

3.2 Organización 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 propósito general.- Área de registros de función 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 ylos registros de propósito general pertenecen a la estructura interna de la MCS-51. Los registros defunción especial SFR son registros que configuran los recursos internos de la MCS-51, como son lasinterrupciones, el funcionamiento de los temporizadores, la comunicación serie asíncrona, etc.

3.2.1 Área de memoria de código de programa y memoria de datos

El mapa de memoria de la MCS-51 está segmentada en dos bloques de memoria de 64kbytes detamaño cada uno (figura 3.5), un bloque está destinado a almacenar el código de programa (memoriade programa) y el otro a contener las variables y datos asociados al programa (memoria de datos).Estos dos bloques se direccionan a través de las 16 líneas de direcciones, A0-A15, de la familia. La

memoria de programa (figura 3.5a) es de sólo lectura2 y suele ser externa, aunque se han de considerar

las versiones con memoria ROM, EPROM y OTPROM interna, que son de tamaño reducido y

destinadas a albergar los programas realizados en aplicaciones poco complejas o de tipo medio3. El

bloque de memoria de datos (figura 3.5b) (64kbytes) es externo al microcontrolador y puede ser tantode lectura como de escritura.

2 Notar que /PSEN es una señal de lectura que sólo actúa 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.

Page 25: 1 Estructura bÆsica de un sistema microprocesador

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

Mem.externa

FFFFH

EA = 0

PSEN

a) b) c)

PSEN

RD RD128k

0000H

Mem.interna

EA = 1

0000H

0FFFH/1FFFH

Mem.externa

1000H/2000H

FFFFH

Memoria de programa(sólo lectura)

00H

7FH80H

FFH

FFH

Mem. RAMinterna

128 bytes

Área deregistros

especialesSFR

Mem. RAMinterna 8032/8052

128 bytes

(80H-FFH)

Memoria de datos(lectura/escritura)

0000H

FFFFH

RD

WR

Mem.externa

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

El microcontrolador activa diferentes señales en función del tipo de bloque de memoria al que accede.Si va a realizar una lectura del código de programa, sitúa la dirección que desea leer en el bus de

direcciones, A0-A15, y activa la señal /PSEN4. Por contra, si va a realizar una lectura o escritura en la

memoria de datos, sitúa la dirección correspondiente en A0-A15 y activa la señal /RD o /WR, segúnvaya a leer o a escribir un dato, respectivamente. La CPU comienza a ejecutar el programa, tras unreset o al conectar la alimentación, por la dirección 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

código de programa a la memoria interna o a la memoria externa5, y para aclarar cuál es el tipo de

memoria del que debe leer el código, dispone de la señal /EA. Si /EA está a 0 lógico, elmicrocontrolador ejecuta el código almacenado en la memoria externa, y si /EA está a 1 lógico,ejecuta el código almacenado en la memoria interna. En esta última situación, el microcontrolador noactiva la señal /PSEN ni los buses de direcciones y datos, puesto que no son necesarios. No obstante,el fabricante contempla la particularidad de que el código de programa pueda estar almacenado enambos tipos de memoria, parte en la memoria interna y el resto en la memoria externa. En este caso, elmicrocontrolador ejecuta primero el código de programa de la memoria interna y, luego, pasa aejecutar el código almacenado en la memoria externa; activa entonces la señal /PSEN y los buses dedirecciones y datos. Cabe destacar que esta particularidad carece de sentido, puesto que losmicrocontroladores con memoria EPROM o OTPROM tienen un coste más elevado que el del resto, y

su utilización sólo se justifica por el mayor número de puertos útiles6 y por la reducción del área de

circuito impreso que posibilitan.

La memoria de programas y la memoria de datos pueden combinarse, si se desea, en un único bloquede memoria de 128kbytes: para ello se deben combinar las señales /RD y /PSEN para que formen una

4 La señal /PSEN es activa cuando está en estado 0 lógico.

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.

Page 26: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25140

única señal de lectura, lo que se consigue mediante una puerta AND lógica (figura 3.5c).

3.2.2 Área de memoria interna y de registros de propósito general

Según la figura 3.6, la familia MCS-51 tiene 128 bytes de memoria interna -posiciones de la 00H a la7FH- y un área para los registros de función especial (SFR) de 128 bytes -posiciones de la 80H a laFFH-. El área de memoria interna está estructurada en tres partes: a) área de registros de propósitogeneral formado por cuatro bancos con ocho registros cada uno, b) área accesible bit a bit y c) área dememoria RAM general.

Sólodirecc.

indirecto

Direcc.directo eindirecto

Sólodirecc.directo

00H

7FH80H 80H

FFH FFHSFRMem. Int

*

* Sólo en 8032/8052

00H07HBANCO 0

08H0FH

BANCO 1

10H17HBANCO 2

18H1FH

BANCO 3

20H

2FH

7 6 ............ 0F 8E ............

............30H

7FH

Bancos deregistros32 bytes

MemoriaRAM general

80 bytes

Área direcc.bit a bit.16 bytes,128 bits

a) b)

7E7F

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

a) Área de registros de propósito general

El área de registros de propósito general -posiciones de la 00H a la 1FH (figura 3.6b)- está formadapor cuatro bancos de registros con ocho registros cada uno, lo que hace un total de 32 registrosdisponibles. De estos cuatro bancos de registros, sólo uno puede estar activo en un instantedeterminado, mediante una selección previa con los bits RS0 y RS1 del registro de estado (PSWProgram Status Word, -tabla 3.2-). Luego, en realidad tan sólo se pueden usar los ocho registroscorrespondientes 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 abarcacada uno de los bancos: por ejemplo, para el banco 0, el registro R0 está ubicado en la posición 00Hde la memoria interna, el registro R1 en la posición 01H, el registro R2 en la posición 02H, y asísucesivamente hasta el registro R7, que está en la posición 07H de la memoria interna; siguiendo esteorden el registro R0 del banco 1 ocupa la posición 08H de la memoria interna, el registro R0 del banco2 está en la posición 10H de la memoria interna y el registro R0 del banco 3 ocupa la posición 18H dela memoria interna.

Tabla 3.2 Selección del banco de registros

Direcciones RS1 (PSW) RS0 (PSW)Banco 0 00H-07H 0 0Banco 1 08H-0FH 0 1Banco 2 10H-17H 1 0Banco 3 18H-1FH 1 1

© Los autores, 2001; © Edicions UPC, 2001.

Page 27: 1 Estructura bÆsica de un sistema microprocesador

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)- queson accesibles a nivel de bit, por lo que se dispone de 128 bits accesibles de manera individual.

Memoria RAM interna

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

21H

20H

2FH

Memoria RAM interna

07H 06H 05H 04H 03H 02H 01H 00H

21H

20H

2FH

0FH 0EH D0H 0CH 0BH 0AH 09H 08H

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

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 unpunto que lo define como bit de un byte. Por ejemplo, al bit 5 del byte 20H se puede acceder como20H.5. La otra forma consiste en utilizar una dirección para cada uno de los bits de esta zona, dondehay un total de 128 bits; por tanto, el primer bit, el 20H.0, tiene asignada la dirección 00H y el últimobit, el 2FH.7, tiene asignada la dirección 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 y7FH de la memoria interna (figura 3.6b). En las versiones 8032AH, 8052AH y 8752BH esta zona seamplía en 128 bytes más, 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 lamemoria interna y contiene los registros que determinan el modo de funcionamiento y la configuraciónde los recursos internos de la familia MCS-51.

La tabla 3.3 muestra la situación de los registros del SFR dentro del espacio de memoria y el valor quetoman tras la realización de un reset. Los registros con el superíndice * aparecen en todas las versionescon 3 temporizadores y los registros con el superíndice † aparecen en las versiones 8XC51FX. Laszonas en blanco de la tabla 3.3 no están implementadas físicamente, y quedan reservadas para futurasampliaciones de registros que desee hacer el fabricante. La tabla 3.4 muestra el listado de los registrosdel SFR, una pequeña descripción de éstos y la dirección que corresponde a cada registro.

Se debe destacar que todos los registros de la tabla 3.3 que aparecen en la primera columna sonaccesibles bit a bit, mientras que el resto de registros no lo son. Los registros de la primera columnason aquellos que tienen una dirección 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 puedeacceder como B.2, etc.

© Los autores, 2001; © Edicions UPC, 2001.

Page 28: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25142

Tabla 3.3 Situación de los registros del SFR de la MCS-51 y su valor tras un reset

F8 CH†

00000000CCAP0H†

XXXXXXXXCCAP1H†

XXXXXXXXCCAP2H†

XXXXXXXXCCAP3H†

XXXXXXXXCCAP4H†

XXXXXXXX

FF

F0 B00000000

F7

E8 CL†

00000000CCAP0H†

XXXXXXXXCCAP1H†

XXXXXXXXCCAP2H†

XXXXXXXXCCAP3H†

XXXXXXXXCCAP4H†

XXXXXXXX

EF

E0 ACC00000000

E7

D8 CCON†

00X00000CMOD†

00XXX000CCAPM0†

X0000000CCAPM1†

X0000000CCAPM2†

X0000000CCAPM3†

X0000000CCAPM4†

X0000000DF

D0 PSW00000000

D7

C8 T2CON*

00000000T2MOD*

XXXXXX00RCAP2L*

00000000RCAP2H*

00000000TL2*

00000000TH2*

00000000CF

C0 C7B8 IP

X0000000SADEN†

00000000BF

B0 P311111111

IPH†

X0000000B7

A8 IE00000000

SADDR†

00000000AF

A0 P211111111

A7

98 SCON00000000

SBUFXXXXXXXX

9F

90 P111111111

97

88 TCON00000000

TMOD00000000

TL000000000

TL100000000

TH000000000

TH100000000

8F

80 P011111111

SP00000111

DPL00000000

DPH00000000

PCON00XX0000

87

X=Estado indefinido * 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 lasposiciones 80H y FFH. En consecuencia, comparten las mismas direcciones que el SFR (80H-FFH),por lo que se produce un solapamiento en cuanto a asignación de direcciones. Para resolver esteconflicto 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 directa7

(direccionamiento directo), se accede al área de SFR; y si, por contra, el direccionamiento se realiza

de una forma indirecta8 (direccionamiento indirecto), se accede al área ampliada de memoria. Los

distintos modos de direccionamiento se tratarán en el capítulo siguiente.

7 En el direccionamiento directo, la dirección es de forma directa un operando de la instrucción.

Ej. MOV 90H, #3BH; Escribe 3BH en la localización 90H=P1 (Puerto P1) del SFR.8 En el direccionamiento indirecto, la dirección está contenida en un registro del microcontrolador. Para un 8052:

Ej. MOV R0, #90H; MOV @R0, #3BH; Escribe 3BH en la posición de memoria interna 90H.Nota: # indica el número es un dato numérico y @ es el indicativo del direccionamiento indirecto.

© Los autores, 2001; © Edicions UPC, 2001.

Page 29: 1 Estructura bÆsica de un sistema microprocesador

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

Tabla 3.4 Registros del área de SFR para la MCS-51

Símbolo Nombre DirecciónP0P1P2P3SP

DPLDPH

PCONTCONTMOD

TL0TH0TL1TH1

SCONSBUF

IESADDR†

IPH†

IPSADEN†

T2CON*

RCAP2L*

RCAP2H*

TL2*

TH2*

PSWCCON†

CMOD†

CCAPM0†

CCAPM1†

CCAPM2†

CCAPM3†

CCAPM4†

ACCCL†

CCAP0L†

CCAP1L†

CCAP2L†

CCAP3L†

CCAP4L†

BCH†

CCAP0H†

CCAP1H†

CCAP2H†

CCAP3H†

CCAP4H†

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 energía (Power Control).Control de los temporizadores (Timer Control).Configuración 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 comunicación serie (Serial Control).Buffer de datos de la comunicación serie (Serial Buffer).Habilitación de interrupciones (Interrupt Enable).Dirección esclavo (Slave Address).Byte alto del registro de prioridad de interrupciones.Registro de prioridad (Interrupt Priority).Máscara 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 módulo 0 de comparación/captura del PCA.Byte bajo del módulo 1 de comparación/captura del PCA.Byte bajo del módulo 2 de comparación/captura del PCA.Byte bajo del módulo 3 de comparación/captura del PCA.Byte bajo del módulo 4 de comparación/captura del PCA.Registro B.Byte alto del Timer/Counter del PCA.Byte alto del módulo 0 de comparación/captura del PCA.Byte alto del módulo 1 de comparación/captura del PCA.Byte alto del módulo 2 de comparación/captura del PCA.Byte alto del módulo 3 de comparación/captura del PCA.Byte alto del módulo 4 de comparación/captura del PCA.

80H90HA0HB0H81H82H83H87H88H89H8AH8CH8BH8DH98H99HA8HA9HB7HB8HB9HC8HCAHCBHCCHCDHD0HD8HD9HDAHDBHDCHDDHDEHE0HE9HEAHEBHECHEDHEEHF0HF9HFAHFBHFCHFDHFEH

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

© Los autores, 2001; © Edicions UPC, 2001.

Page 30: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25144

3.3 Arquitectura interna de la MCS-251

La figura 3.8 muestra el diagrama funcional de bloques de la arquitectura interna de losmicrocontroladores de la familia MCS-251. Al igual que en la MCS-51, esta familia dispone de cuatropuertos de entrada/salida, P0, P1, P2 y P3, de 8 bits cada uno, donde cada bit puede ser configuradoindividualmente como entrada o como salida, o bien puede realizar una función alternativa relacionadacon los periféricos o con el acceso a la memoria externa. De la misma forma que para la MCS-51, lospuertos P0 y P2 soportan el bus de datos y el bus de direcciones, para el caso de necesitar memoriaexterna. Las funciones alternativas de los puertos P1 y P3 están relacionadas con los periféricos y conseñales de control.

CódigoOTPROM/ROM

8Kbytes ó16Kbytes

Puerto 0drivers

P0.7:0

Puerto 2drivers

P2.7:0

Puertos de entrada/salida ybuses de acceso a memoria

RAM512 Bytes o1024 Bytes

Puerto 1drivers

P1.7:0

Puerto 3drivers

P3.7:0

Puertos de entrada/saliday señales de periféricos

Temporizadorwatchdog

Temporizadorescontadores

PCA

Puerto Serie

Periféricos

Bus

IB

Intefaz delos periféricos

Control deinterrupciones

Clocky reset

Memoria de datos (16)

Memoria de direcciones (16)

Interfaz del Bus

Secuenciadorde instrucciones

Bus

de

dato

s (8

)

Bus

de

dire

ccio

nes

(24)

SRC1 (8)

SRC2 (8)

Interfaz dela memoria

de datos

Registros depropósitogeneral

DST (16)

Clock y reset

ALU

Núcleo de los µC de la familia MCS-251

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.

Page 31: 1 Estructura bÆsica de un sistema microprocesador

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 deser compatible con ésta en cuanto a encapsulado y juego de instrucciones. A pesar de estacompatibilidad, el juego de instrucciones en la MCS-251 ha sido considerablemente ampliado, eincluye instrucciones que operan con datos de 8, 16 y 32 bits y que facilitan el desarrollo de programasen lenguajes de alto nivel como el lenguaje C. Para mantener al mismo tiempo la compatibilidad conla MCS-51 y la ampliación y mejora del juego de instrucciones, se han definido los modos de trabajofuente source y binario binary. En el modo fuente se puede emplear las nuevas instrucciones y lostipos de direccionamientos ideados para la MCS-251, por lo que el código de programa generadosuele ser más compacto y eficiente. En el modo binario se programa de la misma manera que con laMCS-51 y por tanto es completamente compatible con ésta. Con este modo la MCS-251 puedesustituir a la MCS-51 de forma directa, en aplicaciones ya desarrolladas, y sin necesidad de tener quegenerar nuevos programas.

El espacio de memoria que es capaz de direccionar la familia MCS-251 es de 16Mbytes tanto paracódigo de programa como para datos, puesto que el contador de programa es de 24 bits, pero enrealidad el espacio de memoria real es de 256kbytes de memoria externa, ya que como bus dedirecciones se dispone de los puertos P0 y P2, y las líneas A16 y A17, que son funciones alternativasde los puertos P3 y P1, respectivamente.

La MCS-251 incorpora también cierta cantidad de memoria interna de programa y datos, así como uncontrolador de interrupciones y distintos periféricos como un temporizador Watchdog, trestemporizadores/contadores, un array de contadores programable (PCA) y un puerto de comunicaciónserie.

Una de las características de la MCS-51 consiste en que multiplexa temporalmente el byte bajo del busde direcciones (A0-A7) y el bus de datos (D0-D7) en el puerto P0. Esta multiplexación se mantienepara la MCS-251 y se denomina modo no paginado. Sin embargo, para la MCS-251 la multiplexacióntemporal también 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á más adelante el acceso a lamemoria externa es más eficiente, el puerto P0 en este caso permanecería estable con la direccióncorrespondiente al byte bajo del bus de direcciones (A0-A7). Esta manera de realizar la multiplexacióntemporal en el puerto P2 se denomina modo paginado.

La familia también incorpora dos modos de funcionamiento de bajo consumo denominados Idle yPower Down, que son adecuados para aplicaciones alimentadas con baterías. El modo Idle para laseñal de reloj de la CPU, detiene la ejecución del programa y ello hace que el consumo de energía seaun 40% menor, pero mantiene la señal de reloj en los periféricos, y permite que sigan enfuncionamiento. El modo Power Down detiene las señales de reloj de la CPU y de los periféricos, conlo que consigue una reducción en el consumo de energía de hasta un 60%.

3.3.1 Relación de terminales

La figura 3.9 muestra el encapsulado en formato DIP y PLCC, y la disposición de terminales de laMCS-251.

© Los autores, 2001; © Edicions UPC, 2001.

Page 32: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25146

1234567891011121314151617181920

4039383736353433323130292827262524232221

P1.0/T2P1.1/T2EX

P1.2/ECIP1.3/CEX0P1.4/CEX1P1.5/CEX2

P1.6/CEX3/WAITP1.7/CEX4/A17/WCLK

RSTP3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD/A16

XTAL1XTAL2

VSS

VCC

AD0/P0.0AD1/P0.1AD2/P0.2AD3/P0.3AD4/P0.4AD5/P0.5AD6/P0.6AD7/P0.7EA/VPALE/PROG/PSENA15/P2.7A14/P2.6A13/P2.5A12/P2.4A11/P2.3A10/P2.2A9/P2.1A8/P2.0

8XC251Sx

6 5 4 3 2 1 44 43 42 41 40

3938373635343332313029

18 19 20 21 22 23 24 25 26 27 28

7891011121314151617

8XC251Sx

AD4/P0.4AD5/P0.5AD6/P0.6AD7/P0.7EA/VPVSS2

ALE/PROGPSENA15/P2.7A14/P2.6A13/P2.5

P1.5/CEX2P1.6/CEX3/WAIT

P1.7/CEX4/A17/WCLKRST

P3.0/RXDVCC2

P3.1/TXDP3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6

/WR

P3.7

/RD

/A16

XT

AL

2X

TA

L1

VS

S

VS

S2

A8/

P2.

0A

9/P

2.1

A10

/P2.

2A

11/P

2.3

A12

/P2.

4

P1.4

/CE

X1

P1.3

/CE

X0

P1.2

/EC

I P1

.1/T

2EX

P1.0

/T2

VS

S1

VC

C

AD

0/P0

.0A

D1/

P0.1

AD

2/P0

.2A

D3/

P0.3

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

La relación de terminales de los microcontroladores de la familia MCS-251 es la siguiente:

- VCC, VCC2: entradas de alimentación. Vcc y VCC2 se deben poner a +5V. VCC2 permite reducir elruido que puede haber en la línea de alimentación.

- 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 dedirecciones y el bus de datos mediante una multiplexación temporal en el modo no paginado, en elcaso de tener que utilizar memoria externa (AD0,…, AD7). En las versiones con memoria interna deprograma, el código de programa se introduce a través de este puerto, en la fase de programación yverificación.

- P2.0, P2.1… P2.7: puerto bidireccional bit a bit de E/S P2. P2 puede soportar el byte alto del bus dedirecciones y el bus de datos mediante una multiplexación 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 propósito general, noobstante soporta varias funciones especiales de la familia MCS-51 (tabla 3.5), que están relacionadascon el temporizador Timer 2, con el array de contadores programable PCA, la señal WAIT quecontrola los estados de espera en los ciclos de acceso a la memoria externa, la línea A17 del bus dedirecciones y la señal WCLK que es la salida de reloj para estados de espera en el acceso de memoriaexterna.

Los terminales P1.3, P1.4, P1.5, P1.6, P1.7 son entradas/salidas CEX0, CEX1, CEX2, CEX3, CEX4de la PCA, respectivamente. Estos terminales actúan como entradas de los módulos 0, 1, 2, 3 y 4 de laPCA cuando trabaja en modo captura, respectivamente, y como salidas de los mismos módulos cuandola PCA trabaja en modo comparación y en modulación de anchura de pulsos (PWM).

La función alternativa de P1.7 se determina mediante RD1 y RD0 del registro de configuraciónUCONFIG0. Si RD1=RD0= 0, su función es la línea A17 del bus de direcciones. No obstante, si el bitWCON.1 está 1, en P1.7 se genera una señal cuadrada de frecuencia que es la mitad de la señal dereloj del microcontrolador.

© Los autores, 2001; © Edicions UPC, 2001.

Page 33: 1 Estructura bÆsica de un sistema microprocesador

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 propósito general quesoporta diversas funciones especiales de la familia MCS-51 al igual que el puerto P1 (tabla 3.5). Lasfunciones que soporta este puerto son las señales TXD y RXD del puerto de comunicación serie, lasentradas de interrupción /INT0 y /INT1, las entradas externas T0 y T1 de los temporizadores, lasseñales de lectura y escritura en memoria externa /RD y /WR, y la línea A16 del bus de direcciones.

La función alternativa de P3.7 también depende del estado de los bits RD1 y RD0 de UCONFIG0. SiRD1=RD0= 1, su función alternativa es /RD y si RD1= 0 y, RD0 = 1 o RD1= 0 y RD0=0, su funciónalternativa es la línea A16 del bus de direcciones.

Tabla 3.5 Descripciones de las funciones de los pines de los puertos de entrada/salida

Nombredel pin

Nombre del pin confunción alternativa

Descripción de la función 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 módulo 0 del PCA.P1.4 CEX1 Entrada/salida del módulo 1 del PCA.P1.5 CEX2 Entrada/salida del módulo 2 del PCA.P1.6 CEX3 Entrada/salida del módulo 3 del PCA.P1.7 CEX4, A17, WCLK E/S del módulo 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 interrupción externa 0.P3.3 /INT1 Entrada interrupción externa 1.P3.4 T0 Entrada Timer 0.P3.5 T1 Entrada Timer 1.P3.6 /WR Habilitación de escritura en memoria externa.P3.7 /RD, A16 Habilitación de lectura en mem. externa o A16 del bus de

direcciones

- /PSEN: este terminal se activa cuando el microcontrolador realiza operaciones de lectura en lamemoria externa en determinados rangos de direcciones, dependiendo del valor de los bits deconfiguración RD1 y RD0.

- (/EA)/VP: este terminal puesto a 1 hace que el microcontrolador ejecute el código almacenado en lasEPROM, OTPROM o ROM internas. Si se coloca a 0, el microcontrolador ejecuta el código deprograma de la memoria externa de programas, activa el bus de direcciones, el bus de datos y lasseñales de control. VP se utiliza para proporcionar la tensión de programación necesaria de lamemoria EPROM o OTPROM interna.

- XTAL1, XTAL2: estos terminales son la entrada de la señal de reloj del microcontrolador. Puedeutilizarse un resonador cerámico o un cristal de cuarzo. También se puede utilizar una señal externa dereloj. 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 64períodos de reloj para realizar la operación de reset.

© Los autores, 2001; © Edicions UPC, 2001.

Page 34: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25148

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 algunadiferencia como el hecho de que el puerto P1 tenga funciones alternativas y se introduzcan los modospaginado y no paginado de direccionar la memoria. Debido a ello, en el puerto P2 se introduce la señalDATO para determinar los estados lógicos del puerto, puesto que en el modo paginado el puerto pasaa soportar el bus de datos además del byte alto del bus de direcciones; y los puertos P1 y P3 pasan atener la misma estructura interna (figura 3.10).

La estructura interna de los puertos de la MCS-251 es prácticamente idéntica a la estructura de laMCS-51, por lo que la explicación de su funcionamiento se ha realizado en el apartado 3.1.2.

ESCRIBEEN LATCH

DLATCH

CL

Q

Q

B1

B2

1

0

MUX

N1

P0.X

N2

DIRECC/DATO

CONTROL

VCC

BIT DEL PUERTO 0 (P0)

BUS INT.

LEELATCH

LEEPIN

ESCRIBEEN LATCH

BUS INT.DLATCH

CL

Q

Q

B1

B2

1

0

MUX

P2.X

DIRECC/DATOCONTROL

VCC

BIT DEL PUERTO 2 (P2)

LEELATCH

LEEPIN

PULL-UPINTERNO

BIT DEL PUERTO 1 y 3 (P1 y P3)

DLATCH

CL

Q

Q

B1

B2

P3.X

VCC

LEELATCH

LEEPIN

PULL-UPINTERNO

Funciónalternativade salida

ESCRIBEEN LATCH

BUS INT.

Función alternativade entrada

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

3.4 Organización 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 dememoria:

-El espacio de memoria para programas y datos.-El área de registros de propósito general.-El área de registros de función especial SFR.

En la figura 3.11 se observa cómo los espacios de memoria de la familia MCS-251 se han ampliadoconsiderablemente respecto a la familia MCS-51.

El espacio de memoria para programas y datos de la MCS-251 se utiliza para almacenar el código delprograma que debe ejecutar el microcontrolador, así como los datos, resultados intermedios y

© Los autores, 2001; © Edicions UPC, 2001.

Page 35: 1 Estructura bÆsica de un sistema microprocesador

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

resultados finales relacionados con dicho programa. Este espacio tiene un tamaño de 16Mbytes deposiciones de memoria distribuidas en 256 regiones de 64kbytes cada una, numeradas de la 00: a laFF:.

La familia MCS-251 está diseñada para tener hasta un máximo de 64kbytes de memoria interna novolátil, ubicada en la región FF:. La memoria RAM interna está ubicada en la región 00:, comenzandoa partir de la dirección 00:0020H. La dimensión de la memoria interna depende de la versión demicrocontrolador.

El área de registros de propósito general contiene 64 registros de 8 bits numerados decimalmente del 0al 63. Estos registros tienen la función de guardar los datos y resultados que intervienen con másfrecuencia en el programa.

El espacio SFR puede tener hasta 512 registros de 8 bits de función específica que están, en la mayoríade los casos, relacionados con la programación de los periféricos que incorpora el microcontrolador.Las direcciones de los registros de este área van de la S:000H a la S:1FFH. En la dirección de unregistro del área SFR se utiliza el prefijo “S:” para diferenciarla de una dirección de memoria.

Área de memoria16 Mbytes

Área SFR512 bytes

Área de registros depropósito general

64 bytes

00:0000H

FF:FFFFH

0

63

S:000H

S:1FFH

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 los16Mbytes de memoria teóricamente útiles, tan sólo se pueden usar 8 regiones de 64 kbytes, enconcreto la 00:, 01:, 02:, 03:, FC:, FD:, FE: y FF:, donde se pueden almacenar indistintamente códigode programa o datos. El resto de regiones de memoria, de la 04: a la FB:, están reservadas y no puedenser utilizadas por el usuario.

El número de líneas de direcciones de los microcontroladores de la serie 8XC251Sx es configurablepor el usuario: el valor máximo es 18, lo que limita el número máximo de posiciones de memoriaexterna que se pueden direccionar de forma directa a 256kbytes.

Las 8 posiciones de memoria que van de la dirección FF:FFF8H a la FF:FFFFH están reservadas parala configuración del dispositivo. En concreto, en la versión 8XC251Sx se utilizan sólo los bytes

© Los autores, 2001; © Edicions UPC, 2001.

Page 36: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25150

FF:FFF8H y FF:FFF9H para realizar la configuración, el resto se reservan para la configuración defuturas versiones de este microcontrolador.

En la región 00: se ubica la memoria RAM interna, en concreto entre la dirección 00:0020H y la00:021FH, para aquellas versiones que disponen de 512 bytes de memoria RAM interna, o bien entrela dirección 00:0020H y la 00:041FH para aquellas versiones que disponen de 1Kbyte de posicionesde memoria RAM interna. La memoria RAM interna está destinada exclusivamente a guardar datos yaque no se puede ejecutar instrucciones almacenadas en ella. Los primeros 32 bytes de memoria, de ladirección 00:0000H a la 00:001FH, están asociados al área de registros. Por otra parte, las posicionesde memoria comprendidas entre la 00:0020H y la 00:007FH son accesibles a nivel de bit.

Bytes de configuraciónFF:FFF8H - FF:FFFFH

Memoria externaFF:FFF7H

FF:2000H/FF:4000H

OTPROM/ROM interna

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

RAM interna

SB, SQ: 1 Kbytes (00:0020H - 00:041FH)SA, SP: 512 bytes (00:0020H - 00:021FH)

32 bytes de registros de trabajo00:0000H - 00:001FH

Memoria externa

00:FFFFH

00:0220H/00:0420H

Área de memoria16 Mbytes

Memoria externa

FF:0000H

Regiones reservadas 04: a FB:

FF:FFFFH

FE:FFFFH

FE:0000H

FD:FFFFH

FD:0000H

FC:FFFFH

FC:0000H

03:FFFFH

03:0000H

02:FFFFH

02:0000H

01:FFFFH

01:0000H

00:FFFFH

00:0000H

Memoria externa

Memoria externa

Memoria externa

Memoria externa

Memoria externa

Región FF:

Región 00:

Fig. 3.12 Implementación hardware del área de memoria de los microcontroladores 8XC251SA, SB, SP y SQ

La memoria interna de lectura está ubicada en la dirección FF:. Las diferentes versiones delmicrocontrolador 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 restode zonas se deben implementar, en caso que se utilicen, mediante de integrados de memoria externos.

© Los autores, 2001; © Edicions UPC, 2001.

Page 37: 1 Estructura bÆsica de un sistema microprocesador

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

3.4.2 Área de registros de propósito genérico

El área de registros de propósito general de la familia MCS-251 dispone de 64 registros numeradosdesde el 0 al 63, aunque los registros que están ubicados entre las posiciones 32 y 55 están reservadospara futuras versiones, lo que reduce el número total de registros disponibles a 40, como se muestra enla figura 3.13.

0 1 2 3 4 5 6 78 9 10 11 12 13 14 15

16 17 18 19 20 21 22 2324 25 26 27 28 29 30 31

56 57 58 59 60 61 62 63

Posiciones32-55 reservadas

Área de registros

Fig. 3.13 Área de registros de propósito general

Los registros situados entre la posición 0 y 7 están implementadas físicamente en las direcciones00:0000H a 00:001FH. Estas 32 posiciones de memoria constituyen un área dentro del espacio dememoria denominada banco de registros, similar a la que poseen los microcontroladores de la familiaMCS-51. Hay en total 4 bancos de registros de 8 posiciones cada uno, que aparecen representados enla figura 3.14.

0 1 2 3 4 5 6 7

Bancos de registros

Área de memoria

18H 1FH

10H 17H

08H 0FH

00H 07H Banco 0

Banco 1

Banco 2

Banco 3

Área de registros

0 1 2 3 4 5 6 78

63

00:0020H

FF:FFFFH

Fig. 3.15 Ubicación de las localizaciones 0 –7 del área de registros

© Los autores, 2001; © Edicions UPC, 2001.

Page 38: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25152

Al igual que ocurre en la familia MCS-51, sólo uno de los cuatro bancos es accesible a través de losregistros. El banco accesible o activo se selecciona a través de los bits RS0 y RS1 del registro deestado PSW (tabla 3.6).

Tabla 3.6 Selección del banco de registros

Banco Rango de Bits de selección de bancodirecciones RS1 RS0

Banco 0 00H-07H 0 0Banco 1 08H-0FH 0 1Banco 2 10H-17H 1 0Banco 3 18H-1FH 1 1

Después de hacer un reset del microcontrolador, el banco activo por defecto es el banco cero, ya quelos bits RS1 y RS0 se ponen a cero. Para cambiar de banco de registro se debe modificar el valor delos bits RS1 y RS0 mediante la instrucción adecuada.

El área de registros tiene la particularidad de que permite acceder a la información contenida en ella anivel de byte, 16 bits (Word) y 32 bits (Dword), lo cual facilita la tarea de los compiladores de C paraesta familia. No todos los registros del área de registros son accesibles de las tres formas indicadas: laslocalizaciones que son accesibles a nivel de byte son las que van de la cero a la 15. Para identificar unregistro al cual se accede a nivel de byte, se utiliza la letra R seguida del número de la localizacióncorrespondiente (figura 3.16). Por ejemplo, si se desea escribir el byte 5BH en la localización 9 sedebe utilizar el nombre R9 para hacer referencia a esta localización:

MOV R9,#5BH

Sólo 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 número de la localizaciónde menor peso que interviene en dicho registro. Por ejemplo, el registro WR2 está formado por laslocalizaciones 2 y 3. En la figura 3.16 están 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 número de la localización demenor peso que interviene en el registro Dword. Por ejemplo, el registro DR28 está formado por laslocalizaciones 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 microcontroladoresde la familia MCS-51 poseen una función específica. 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 accesiblestambién a través del área de registros de función específica (SFR).

© Los autores, 2001; © Edicions UPC, 2001.

Page 39: 1 Estructura bÆsica de un sistema microprocesador

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 susregistros de tipo byte, del R0 al R15, puede realizar la función del acumulador en las instruccionesaritméticas y lógicas, 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 entransferencias y operaciones aritméticas y lógicas. En cambio en la familia MCS-251 cualquierregistro, del R0 al R15, puede realizar la tarea de acumulador. Por lo tanto, el acumulador no tiene, enesta 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 demenor peso del DPX (DPL, DPH y DPXL) son accesibles también a través del área SFR. Los registrosDPL y DPH forman el puntero de datos DPTR de 16 bits. En la familia MCS-51 este registro seemplea de forma única para acceder a la memoria externa de datos; sin embargo, para la familia MCS-251 el acceso a la memoria externa o interna se puede hacer mediante cualquier registro de tipo Wordo Dword. El registro DPXL ubicado en la localización 57 del área de registros, permite seleccionar laregión de memoria (00:-FF:) a la que se desea acceder a través del puntero de datos extendido.

0 1 2 3 4 5 6 78 9 10 11 12 13 14 15

16 17 18 19 20 21 22 2324 25 26 27 28 29 30 31

56 57 58 59 60 61 62 63

Localizaciones32-55 reservadas

Área de registrosR0 R1 R2 R3 R4 R5 R6 R7

R8 R9 R10 R11R12 R13 R14 R15

Registro byte

WR0 WR2 WR4 WR6WR8 WR10 WR12 WR14

WR16 WR18 WR20 WR22WR24 WR26 WR28 WR30

Registro word

Registro dword

DR0DR8DR16DR24

DR56

DR4DR12DR20DR28

DR600 1 2 3 4 5 6 7

Bancos de registros

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 lalocalización 63 es el puntero de pila, SP, de la familia MCS-51. EL byte de la localización 62 es laparte alta del puntero de pila, SPH. Estos dos bytes controlan el funcionamiento de la pila, que en lafamilia MCS-251 puede tener una dimensión máxima de 64 kbytes correspondientes a la región 00: dememoria.

© Los autores, 2001; © Edicions UPC, 2001.

Page 40: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25154

DR60 = Puntero extendido de pila, SPX

60 61 62 63

SPH SP

SPH S:BEH

SP S:81H

Parte alta del puntero de pila

Puntero de pila

DPXL DPH DPL

56 57 58 59

DR56 = Puntero extendido de datos, DPX

DPXL S:84H

DPH S:83H

DPL S:82H

Parte alta del puntero de pila

Parte baja del puntero de datos

Parte baja del puntero extendido de datos

R10, Registro B; R11, registro acumulador

B ACC

B S:F0H

ACC S:E0H

Área de registros Area SFR

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

3.4.3 Área de registros de función específica SFR

La mayoría de los registros del área de registros de función específica (SFR) están vinculados a laprogramación de los periféricos de la familia MCS-251. En la tabla 3.7 aparecen los registros del áreaSFR junto con el valor que adquieren cuando se realiza un reset del microcontrolador.

Las direcciones del área SFR que no están ocupadas por registros (zonas sombreadas en la tabla 3.7)no están implementadas, por lo que no se pueden utilizar. Al área SFR sólo se puede acceder a nivelde 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 dirección y una pequeñadescripción de la función que realizan.

© Los autores, 2001; © Edicions UPC, 2001.

Page 41: 1 Estructura bÆsica de un sistema microprocesador

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 1/9 2/A 3/B 4/C 5/D 6/E 7/FF8 CH

00000000CCAP0Hxxxxxxxx

CCAP1Hxxxxxxxx

CCAP2Hxxxxxxxx

CCAP3Hxxxxxxxx

CCAP4Hxxxxxxxx

FF

F0 B00000000

F7

E8 CL00000000

CCAP0Lxxxxxxxx

CCAP1Lxxxxxxxx

CCAP2Lxxxxxxxx

CCAP3Lxxxxxxxx

CCAP4Lxxxxxxxx

EF

E0 ACC00000000

E7

D8 CCON00x00000

CMOD00xxx000

CCAPM0x0000000

CCAPM1x0000000

CCAPM2x0000000

CCAPM3x0000000

CCAPM4x0000000

DF

D0 PSW00000000

PSW100000000

D7

C8 T2CON00000000

T2MODxxxxxx00

RCAP2L00000000

RCAP2H00000000

TL200000000

TH200000000

CF

C0 C7B8 IPL0

x0000000SADEN00000000

SPH00000000

BF

B0 P311111111

IPH0x0000000

B7

A8 IE000000000

SADDR00000000

AF

A0 P211111111

WDTRSxxxxxxxx

A7

98 SCON00000000

SBUFxxxxxxxx

9F

90 P111111111

97

88 TCON00000000

TMOD00000000

TL000000000

TL100000000

TH000000000

TH100000000

8F

80 P011111111

SP00000111

DPL00000000

DPH00000000

DPXL00000001

PCON00xx0000

87

0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F

Tabla 3.8 Registros del área SFR

Mnemónico Nombre Dirección

Registros básicos

ACC Acumulador S:E0HB Registro B S:F0HPSW Registro de estado (Program Status Word) S:D0HPSW1 Registro de estado 1 S:D1HSP Parte baja del puntero de pila (Stack Pointer) S:81HSPH Parte alta del puntero de pila S:BEHDPTR Puntero de datos (Data Pointer) -- DPL Parte baja del DPTR S:82H DPH Parte alta del DPTR S:83HDPXL Parte baja del puntero extendido de datos S:84HPCON Registro de control de potencia (Power Control) S:87HIE0 Registro de habilitación de interrupciones S:A8HIPH0 Parte alta del registro de prioridad de interrupciones S:B7HIPL0 Parte baja del registro de prioridad de interrupciones S:B8H

© Los autores, 2001; © Edicions UPC, 2001.

Page 42: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25156

Tabla 3.8 Registros del área SFR (continuación)

Mnemónico Nombre Dirección

Registros de los puertos de entrada/salida

P0 Puerto 0 S:80HP1 Puerto 1 S:90HP2 Puerto 2 S:A0HP3 Puerto 3 S:B0H

Puerto de comunicación serie

SCON Registro de control del puerto serie S:98HSBUF Registro buffer del puerto serie S:99HSADEN Máscara de direcciones esclavo (Slave Address Mask) S:B9HSADDR Dirección esclavo (Slave Address) S:A9HRegistros del Watchdog y de los Timer/Counter 0, 1 y 2

TL0 Parte baja del Timer/Counter 0 S:8AHTH0 Parte alta del Timer/Counter 0 S:8CHTL1 Parte baja del Timer/Counter 1 S:8BHTL2 Parte alta del Timer/Counter 1 S:8DHTL2 Parte baja del Timer/Counter 2 S:CCHTH2 Parte alta del Timer/Counter 2 S:CDHTCON Registro de control de los Timer/Counter 0 y 1 S:88HTMOD Registro de control de modo de los Timer/Counter 0 y 1 S:89HT2CON Registro de control del Timer/Counter 2 S:C8HT2MOD Registro de control de modo del Timer/Counter 2 S:C9HRCAP2L Byte bajo de captura del Timer/Counter 2 S:CAHRCAP2H Byte alto de captura del Timer/Counter 2 S:CBHWDTRST Registro Watchdog S:A6HRegistros del array de controladores programables (PCA)

CCON Registro de control del Timer/Counter PCA S:D8HCMOD Registro de modo del Timer/Counter PCA S:D9HCCAPM0 Registro modo 0 del Timer/Counter PCA S:DAHCCAPM1 Registro modo 1 del Timer/Counter PCA S:DBHCCAPM2 Registro modo 2 del Timer/Counter PCA S:DCHCCAPM3 Registro modo 3 del Timer/Counter PCA S:DDHCCAPM4 Registro modo 4 del Timer/Counter PCA S:DEHCL Byte bajo del Timer/Counter del PCA S:E9HCH Byte alto del Timer/Counter del PCA S:F9HCCAP0L Byte bajo del módulo 0 de comparación/captura del PCA S:EAHCCAP1L Byte bajo del módulo 1 de comparación/captura del PCA S:EBHCCAP2L Byte bajo del módulo 2 de comparación/captura del PCA S:ECHCCAP3L Byte bajo del módulo 3 de comparación/captura del PCA S:EDHCCAP4L Byte bajo del módulo 4 de comparación/captura del PCA S:EEHCCAP0H Byte alto del módulo 0 de comparación/captura del PCA S:FAHCCAP1H Byte alto del módulo 1 de comparación/captura del PCA S:FBHCCAP2H Byte alto del módulo 2 de comparación/captura del PCA S:FCHCCAP3H Byte alto del módulo 3 de comparación/captura del PCA S:FDHCCAP4H Byte alto del módulo 4 de comparación/captura del PCA S:FEH

© Los autores, 2001; © Edicions UPC, 2001.

Page 43: 1 Estructura bÆsica de un sistema microprocesador

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 están contenidos dentro de losespacios de direcciones de la familia MCS-251, lo que posibilita la compatibilidad con los programasdiseñados para la familia MCS-51. En la figura 3.18 se muestra cómo quedan ubicados los espacios dedirecciones de la familia MCS-51 dentro de la arquitectura de la familia MCS-251. Los 64kbytes dememoria de programa de la familia MCS-51 se corresponden con la región FF: del área de memoria dela familia MCS-251.

Memoria interna de datosMCS-51

Memoria externa de datosMCS-51

Memoria de programaMCS-51

Área de memoria (16Mbytes)

SFRs MCS-51

Reg. MCS-51

Área SFR (512 Bytes)

Área de registros (64 Bytes)

0

8

63

S:000H

S:07FH

S:1FFH

S:100H

FFFFH

0000HFF:0000H

02:0000H

01:0000H

00:0000H 00H

FFH

FFFFH

0000H

FFH80H

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 región de memoria especificada por elregistro DPXL. Se puede acceder a este registro a través de la localización 57 o a través de ladirección S:084H del área SFR. El valor que adquiere por defecto este registro después de hacer unreset es el 01:, como se muestra en la figura 3.18, por lo que inicialmente la memoria externa de datosestá ubicada en la región 01:. La memoria externa de datos se puede reubicar en otra regiónprogramando adecuadamente el registro DPXL.

Los 256 bytes de memoria RAM interna de la familia MCS-51 están ubicados en las direcciones delárea de memoria 00:0000H-00:00FFH.

Los 128 bytes del área SFR de la familia MCS-51 están ubicados dentro de los 512 bytes del área SFRde la familia MCS-251 a partir de la dirección S:080H, como se muestra en la figura 3.18, paramantener la compatibilidad con la familia MCS-251.

Los registros de trabajo R0-R7 de la familia MCS-51, están ubicados en los 32 primeros bytes del áreade memoria de la familia MCS-251 para mantener la compatibilidad.

© Los autores, 2001; © Edicions UPC, 2001.

Page 44: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25158

3.5 Configuración de la serie 8XC251Sx

Una de las características más interesantes de la familia de microcontroladores MCS-251 es laposibilidad de configurar ciertas prestaciones de su funcionamiento para adaptarlo a las exigenciasespecíficas de la aplicación, lo que proporciona al usuario una gran flexibilidad en el diseño. Lasopciones de configuración abarcan diferentes categorías:

• Interfaz con la memoria externa.• Modos de obtención del código de operación.• Selección de los bytes guardados en la pila por una interrupción.

Reubicación de los 8kbytes de memoria de lectura interna en la región 00: para aquellas versiones quedisponen 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 dirección FF:FFF8H, y el UCONFIG1, en la dirección FF:FFF9H (figura 3.19).

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

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

UCONFIG0

UCONFIG1

/WSA1,0 : Control de inserción de estados de espera para memoria externa/XALE : Activación de la señal ALE extendidaRD1,0 : Selección del número de líneas del bus externo de direcciones/PAGE : Selección de modo paginado o no paginadoSRC : Selección de modo fuente o modo binario

INTR : Selección de bytes almacenados en la pila por una interrupciónWSB : Activación de estado de espera en accesos a memoria externa /WSB1,0 : Control de inserción de estados de espera para memoria externa/EMAP : Reubicación de la memoria de lectura interna en la región 00:

Fig. 3.19 Bytes de configuración UCONFIG0 y UCONFIG1

Para los dispositivos que incorporan memoria ROM/OTPROM/EPROM interna, la información sobrela configuración se almacena en memoria no volatil en estas direcciones. Para aquellas versiones demicrocontrolador que no disponen de memoria ROM/OTPROM/EPROM interna la configuración sealmacena en memoria externa en las direcciones indicadas.

3.5.1 Configuración del acceso a la memoria externa

Existen distintas opciones que permiten configurar el acceso a la memoria externa de forma másadecuada a la aplicación que se está diseñando:

© Los autores, 2001; © Edicions UPC, 2001.

Page 45: 1 Estructura bÆsica de un sistema microprocesador

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

1. La ubicación del bus de datos en el puerto cero (modo no paginado) o el puerto 2(modo paginado).

2. El número de líneas del bus de direcciones externo (16, 17 o 18).3. Las regiones de memoria asignadas a las señales de control de lectura /RD y /PSEN.4. Los estados de espera en el acceso a la memoria externa (0, 1, 2 ó 3 estados de espera).

La ubicación de cierta cantidad de memoria de programa interna en la región 00:.

3.5.1.1 Modos paginado y no paginado

Con respecto a la ubicación del bus de datos, se puede elegir entre dos posibilidades: modo paginado omodo no paginado, utilizando el bit /PAGE (bit 1 de la localización UCONFIG0).

En el modo no paginado (/PAGE = 1) el bus de datos está ubicado en el puerto cero, al igual que enlos microcontroladores de la familia MCS-51. Por tanto, este modo es el adecuado para aplicacionesdonde 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, bajociertas condiciones, reducir el tiempo de acceso a la memoria externa. En este modo se puede leer uncódigo de operación en tan sólo 2 ciclos de reloj, en lugar de los cuatro ciclos necesarios en el modono paginado.

3.5.1.2 Número de líneas del bus de direcciones

Los bits RD y RD1 (bits 2 y 3 de la localización UCONFIG0) permiten seleccionar el número delíneas de bus de direcciones externas y el rango de direcciones controlado por las señales de lectura/RD y /PSEN y la señal de escritura /WR.

En la tabla 3.9 se muestran las distintas posibilidades de configuración con respecto a los bits RD0 yRD1.

RD1:0 = 00 (18 líneas de bus de direcciones)

Si se programan los bits RD1 y RD0 a cero lógico se obtiene una configuración de 18 líneas de busexterno de direcciones, lo que permite direccionar un total de 256kbytes de posiciones de memoriaexternas, que es la máxima cantidad de memoria que pueden direccionar los microcontroladores de laserie 8XC251Sx. Las 16 primeras líneas del bus de direcciones (de la A0 a la A15) están soportadaspor los puertos P0 y P2, la línea A16 del bus de direcciones está ubicada en el canal P3.7 y la línea demayor peso, A17, en el canal P1.7. Con esta configuración se utilizan dos señales para controlar elacceso ala memoria externa:

• /PSEN: controla las operaciones de lectura de la memoria externa para cualquier dirección (dela 00:0000H a la FF:FFFFH).

• /WR: controla las operaciones de escritura de la memoria externa para cualquier dirección (dela 00:0000H a la FF:FFFFH).

© Los autores, 2001; © Edicions UPC, 2001.

Page 46: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25160

RD1:0 = 01 (17 líneas de bus de direcciones)

Si se programan los bits RD1 y RD0 con los valores 0 y 1 respectivamente, se obtiene 17 líneas de busexterno de direcciones: las 16 primeras líneas, A0-A15, implementadas mediante los puertos P0 y P2,y la línea A16 implementada con el canal P3.7. Con esta configuración se pueden direccionar hasta128kbytes de memoria externa. Las señales que controlan la lectura y escritura en la memoria externason las mismas que para la configuración RD1:0 = 00.

RD1:0 = 10 (16 líneas de bus de direcciones)

La configuración RD1 =1 RD0 = 0 permite tener un total de 16 líneas de bus de direcciones, de la A0a la A15, implementadas con los puertos P0 y P2. Esta configuración permite direccionar hasta64kbytes de memoria externa. Las señales de control de lectura y escritura son las mismas que en lasdos configuraciones anteriores.

RD1:0 = 11 (16 líneas de bus de direcciones)

Con esta configuración se tienen sólo 16 líneas de bus externo de direcciones, implementadas en lospuertos P0 y P2. Esta es la única configuración que mantiene la compatibilidad con la familia MCS-51y para ello dispone de tres señales de control de acceso a la memoria externa (como en la familiaMCS-51):

• /PSEN: señal de control de lectura en la memoria externa para las regiones FC:, FD:, FE: y FF:.• /RD: señal de control de lectura en la memoria externa para las regiones 00:, 01:, 02: y 03:.• /WR: señal de control de escritura en la memoria externa para las regiones 00:, 01:, 02: y 03:.

Tabla 3.9 Selección de señales de control para los posibles valores de RD1, RD0

RD1 RD0 P1.7/CEX/A17 P3.7/RD/A16 Direcciones asociadas a las señales de controlPSEN RD WR

00 A17 A16 Todas A16 Todas01 P1.7/CEX4 A16 Todas A16 Todas10 P1.7/CEX4 P3.7 Todas P3.7 Todas11 P1.7/CEX4 /RD ≥ 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 necesariocuando la memoria externa a la que accede el microcontrolador no es suficientemente rápida. Cadaestado de espera alarga la duración del ciclo 2 períodos de reloj y es posible incluir hasta un máximode 3 estados de espera.

Se puede especificar la inserción de estados de espera de forma independiente en la región 01:, lo cualpermite ubicar una memoria lenta en esa región manteniendo, sin embargo, un acceso rápido en elresto de regiones.

Existen 4 bits para especificar los estados de espera: los bits WSA0 y WSA1 (bits 5 y 6 de lalocalización UCONFIG0), que permiten definir estados de espera para todas las regiones excepto la01:, y los bits WSB0 y WSB1 (bits 1 y 2 de la localización UCONFIG1), que permiten definir estados

© Los autores, 2001; © Edicions UPC, 2001.

Page 47: 1 Estructura bÆsica de un sistema microprocesador

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

de espera en la región 01:.

En la tabla 3.10 se muestran los estados de espera que se introducen en función de los valores queadquieren los bits antes indicados.

Tabla 3.10 Configuración de los estados de espera

Regiones WSA1 WSA0 Estados de espera00: 02: 03: FC: FD: FE: FF: 0 0

0 11 01 1

3210

WSB1 WSB001: 0 0

0 11 01 1

3210

Por otra parte poniendo a cero el bit /XALE (bit 4 de la localización UCONFIG0) se alarga el tiempodurante el cual la señal ALE está activa.

3.5.1.4 Configuración del código de operación

Con respecto a los modos de asignación de códigos de operación a las instrucciones, el usuario puedeseleccionar dos posibles modos: el modo binario que genera un código de operación compatible conlos microcontroladores de la familia MCS-51, y el modo fuente, que es específico de la familia MCS-251.

Cuando se configura el microcontrolador se debe elegir necesariamente uno de los dos modos. Se debeelegir aquel modo que permita obtener el código más eficiente. En principio los microcontroladores dela 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 código más eficiente enmodo binario; en cambio las instrucciones exclusivas de la familia MCS-251 generan un código máseficiente en modo fuente.

A modo de ejemplo se presenta en la tabla 3.11 varias instrucciones (de la familia MCS-51 y MCS-251) con sus correspondientes códigos de operación obtenidos en los dos modos.

Tabla 3.11 Ejemplos de códigos de operación en modo binario y modo fuente

Instrucción Familia Código de operaciónModo binario Modo fuente

DEC A MCS-51 14H 14HSUBB A,R4 MCS-51 9CH A5 9CHSUB R4,R4 MCS-251 A5 9CH 9CH

© Los autores, 2001; © Edicions UPC, 2001.

Page 48: 1 Estructura bÆsica de un sistema microprocesador

Microcontroladores MCS-51 y MCS-25162

3.5.1.5 Reubicación de memoria de programa en la región 00:

Para las versiones del microcontrolador 8XC251Sx con 16kbytes de memoria interna, el usuario tienela posibilidad de reubicar 8kbytes en la región 00:, lo cual permite un acceso más rápido a tablas deconstantes almacenadas en esta memoria usando direccionamiento directo.

Para poder realizar esta reubicación será necesario poner a cero el bit /EMAP (bit 0 de la localizaciónUCONFIG1). Con este bit a cero, los 8kbytes de memoria de programa interna que van de la direcciónFF:2000H a la dirección FF:3FFFH quedan reubicados en las direcciones 00:E000H-00:FFFFH(figura 3.20).

Región FF:

FF:0000H

FF:1FFFH8 Kbytes

8 Kbytes

FF:2000H

FF:3FFFH

FF:4000H

FF:FFFFH

Región 00:

00:E000H

00:FFFFH

8 Kbytes

00:0000H

00:DFFFH

EMAP = 0

Fig. 3.20 Reubicación de memoria de programa en la región 00:

3.5.1.6 Bytes cargados en la pila por una interrupción

En cuanto a los bytes que se cargan en la pila por una interrupción, el usuario puede elegir entre dosopciones: una de ellas permite cargar en la pila los dos primeros bytes del contador de programa (PC);la otra opción carga los tres bytes del contador de programa y el registro de estado PSW1.

El bit INTR (bit 4 de la localización UCONFIG1) configura una de las dos opciones. Si se pone estebit a cero se almacenan en la pila sólo dos bytes del contador de programa. Si se pone a 1 se almacenatodo el contador de programa más el registro de estado.

© Los autores, 2001; © Edicions UPC, 2001.