You are on page 1of 47

ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.

German Pereira Muoz


ICEI Instituto de Capacitacion en Electronica e Informatica
1
CaptuIo
2
Estructura interna de Ia famiIia MCS-51
FamiIia MCS-51
La familia de microcontroladores MCS-51 la componen los dispositivos listados en la
figura 1.1, los cuales estan basados en la arquitectura interna que se mostrara en el apartado
siguiente. El 8051 original se construyo con la tecnologia HMOS I . La tecnologia que hoy
en dia se utiliza para la construccion de estos dispositivos es la CHMOSIII, estando
referencia da como 80C51FA. Los diferentes microcontroladores que conforman la familia
se designaran como 8XC51FA, 8XC51FB, 8XC51FC, 8XL51FA, 8Xl51FB, 8XL51FC, y
sus versiones realzadas 8XC52, 8XC54, 8XC58 las cuales aaden mayores prestaciones
para aplicaciones tales como control de motores, en las que requieran salidas PWM, I/O de
alta velocidad y mayor numero de elementos contadores / temporizadores El rango de
frecuencia de estos dispositivos va de 3 MHz a 20 Mhz, operando con memoria de
programa y datos externas; y hasta 24 Mhz cuando opera con memoria de Programa y datos
internas.
Existe una version a 3V denominada 8XL51FX, la cual opera en el rango de 2.7V a 3.6V y
un rango de frecuencia de 3.5 MHz a 20 Mhz.
Fig. 1.1.1 Miembros de la familia MCS-51.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
2
Las caracteristicas generales de la familia MCS-51 son:
- CPU de 8 bits.
- Oscilador y circuiteria de reloj incorporados.
- 32 lineas de entrad/salida.
- Posibilidad de direccionar 64 Kbytes de memoria de programa externa.
- Posibilidad de direccionar 64 Kbytes de memoria RAM externa.
- Dos temporizadores/contadores de 16 bit (tres en el 8052/8032).
- Cinco fuentes de generacion de interrupciones (6 en el 8052/8032), con dos niveles
de prioridad.
- Port serie full duplex.
- Procesador booleano.
PatiIIas de MCS-51
Los chips de la familia MCS-51 se sirven en un encapsulado industrial estandar de 40 pins
Dual In-Line. Los pins de entrada/salida se muestran en la figura siguiente y a continuacion
se hace una descripcion de ellos.
Fig. 1.2.1 Pins de los chips de la familia MCS-51
Nota: Los pins con * solo estan presentes en el 8052.
N VCC
Entrada de la tension de alimentacion . 5V DC.
N VSS
Conexion de masa del circuito.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
3
N PORT 0
Este es un port de entrada/salida de 8 bits bidireccional y en drenador abierto. Como port de
salida, cada pin puede gobernar 8 entradas TTL del tipo LS. Los pins del port que tienen un
1 escrito en ellos quedan flotantes, y en este estado, se pueden utilizar como
entradas de alta impedancia. Durante los accesos a la Memoria externa de Programa y a la
Memoria RAM externa, este port tiene multiplexados la parte baja del bus de direcciones y
el bus de datos. Cuando sucede esto, este utiliza resistencias de carga internas cuando emite
unos y puede gobernar las 8 entradas TTL del tipo LS. El Port 0 tambien es el encargado
de recibir la informacion durante la programacion de aquellos chips que contienen una
EPROM interna, y saca la informacion durante la verificacion de la programacion de
aquellos chips que contienen una ROM o EPROM. Durante la verificacion de la
programacion, es necesario colocar resistencias de carga externas.
N PORT 1
El Port 1 es un port de entrada/salida bidireccional de 8 bits conresistencias de carga
interna. Los buffers de salida de cada pin de este port pueden gobernar 4 entradas TTL del
tipo LS. Los pins de dicho port que tienen unos escritos en el, son puestos a 1 mediante las
resistencias de carga internas, y en este estado, pueden utilizarse como entradas. Utilizados
como entradas, si los pins de este port se ponen a 0 exteriormente, nos entregaran corriente
debido a dichas resistencias de carga. El Port 1 tambien recibe el byte bajo de direcciones
durante el proceso de programacion de los chips que contienen EPROM y durante la
verificacion de la programacion en aquellos chips que tienen ROM o EPROM internas.
En los chips 8032AH y 8052AH, los pins P1.0 y P1.1 tambien sirven para las funciones
respectivas de T2 y T2EX.
N PORT 2
El Port 2 es un port de entrada/salida bidireccional de 8 bits con resistencias de carga
internas. Los buffers de salida de cada pin de este port pueden gobernar 4 entradas TTL del
tipo LS. Los pins de dicho port que tienen unos escritos en el, son puestos a 1 mediante las
resistencias de carga internas, y en este estado, pueden utilizarse como entradas. Utilizados
como entradas, si los pins de este port se ponen a 0 exteriormente, nos entregaran corriente
debido a dichas resistencias de carga. Este port nos suministra el byte alto de direcciones
durante los ciclos de busqueda de instruccion en la Memoria de Programa externa y durante
los accesos a la Memoria de Datos externa (RAM) que utilicen una direccion de 16 bits
(MOVX DPTR). En esta aplicacion, este utiliza resistencias de carga internas cuando
saca unos por los pins. Durante los accesos a la Memoria de Datos externa que utilicen
direcciones de 8 bits (MOVX Ri), el Port 2 saca el contenido del Registro de Funcion
Especial P2. El Port 2 tambien recibe el byte alto de direcciones durante la programacion
de los chips que contienen una EPROM y durante la verificacion de la programacion de
aquellos chips que contienen una ROM o EPROM internas.
N PORT 3
El Port 3 es un port de entrada/salida bidireccional de 8 bits con resistencias de carga
internas. Los buffers de salida de cada pin de este port pueden gobernar 4 entradas TTL del
tipo LS. Los pins de dicho port que tienen unos escritos en el, son puestos a 1 mediante las
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
4
resistencias de carga internas, y en este estado, pueden utilizarse como entradas. Utilizados
como entradas, si los pins de este port se ponen a 0 exteriormente, nos entregaran corriente
debido a dichas resistencias de carga. EL Port 3 tambien se utiliza para diversas funciones
especiales de la familia MCS-51, tal como se indica en la figura 1.2.2.
Fig. 1.2.2 Funciones alternativas del Port 3
N RST
Entrada de reset. Si el oscilador esta funcionando y en este pin
aparece un impulso a nivel alto que se mantenga durante dos ciclos
maquina, el dispositivo se resetea.
Fig. 1.2.3 Contenido de los SFR despues de un reset
Un reset configura los pins ALE` y PSEN` como entradas. La RAM interna no queda
afectada por un reset y los Registros de Funciones Especiales quedan con los valores
indicados en la figura 1.2.3.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
5
N ALE/PROG`
Pulso de salida para latchear el byte bajo de la direccion durante un acceso a memoria
externa. Esta seal puede gobernar 8 entradas TTL del tipo LS. Este pin tambien es la
entrada de impulsos de programacion cuando se estan programando dispositivos que
contienen una EPROM.
En condiciones normales, esta seal se emite constantemente a razon de 1/6 de la
frecuencia del oscilador, por tanto se puede utilizar para temporizaciones externas o como
reloj. Sin embargo, tengase en cuenta que en cada acceso a la Memoria de Datos externa
(RAM), se omite dicha seal.
N PSEN`
Es la seal que se utiliza para leer la Memoria de Programa externa. PSEN puede gobernar
8 entradas TTL del tipo LS.
Cuando un dispositivo esta ejecutando un programa desde la Memoria de Programa
externa, PSEN se activa dos veces por cada ciclo maquina, a excepcion de cuando se
accede a Memoria de Datos externa (RAM), que entonces se omite.
N EA`/VPP
Este pin debe mantenerse a 0 mediante hardware para permitir que cualquier dispositivo de
la familia MCS-51 pueda ejecutar un programa en la Memoria de Programa externa desde
la posicion 0 a la 0FFFH (0 a 1FFFH en el 8032AH y en el 8052AH).
Notese, sin embargo, que si en los dispositivos con EPROM interna se programa el bit de
Seguridad, estos no podran ejecutar programa de la Memoria de Programa externa.
A este pin debera conectarse la tension de programacion de 21V (VPP) durante la
programacion de los dispositivos con EPROM interna.
N XTAL1
Entrada al amplificador inversor del oscilador.
N XTAL2
Salida del amplificador inversor del oscilador.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
6
Arquitectura interna
Fig. 1.3.1 Diagrama de bloques de la familia MCS-51.
Organizacin de Ia memoria
El 8051 tiene dos espacios diferenciados para el direccionamiento de la Memoria de
Programa (ROM o EPROM) y para la Memoria de Datos (RAM). Los 4 kbytes inferiores
(8 kbytes para el 8052), pueden ser residentes en el chip. La Memoria de Datos puede
consistir en 64 kbytes de RAM externa, a los cuales se le pueden sumar los 128 bytes
(256 para el 8052) de RAM interna mas el numero de Registros de Funciones Especiales.
En la figura 1.3.1 podemos ver la organizacion de la RAM interna,con el detalle de las
posiciones de memoria que se pueden direccionarbit a bit.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
7
Fig. 1.3.1 RAM interna v posiciones direccionables bit a bit
El bloque de memoria que se describe en la figura anterior es la memoria RAM interna que
puede utilizar el usuario. En ella se destacan 4 bancos de 8 registros de 8 bits cada uno, los
cuales se pueden escoger mediante el registro PSW, 16 posiciones de memoria RAM que se
pueden utilizar como posiciones normales o como bits direccionables independientemente,
segun el valor que se indica en cada uno de ellos, y el resto de posiciones hasta la 128
(7FH) vienen direccionadas como memoria RAM normal.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
8
Organizacin de Ios registros de funciones especiaIes
A continuacion, en la figura 1.3.2 podemos observar la disposicion de los Registros de
Funciones Especiales (SFR), sus direcciones y en aquellos que son direccionables bit a bit,
la direccion de cada uno de sus bits.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
9
Nota: Los registros con * solo estan presentes en el 8052.
Fig. 1.3.2 Organi:acion de los SFR v sus direcciones
A continuacion se describen brevemente dichos registros. Cuando se traten los apartados
que los afectan, se dara una descripcion mas detallada de la funcion de cada uno de sus bits
y su programacion.
N ACC o A
Este es el registro Acumulador. Normalmente, en todos los nemonicos, cuando nos
referimos al Acumulador lo haremos con la
letra A.
N B
Registro B. Este registro se utiliza durante las operaciones de multiplicacion y division.
Para las demas instrucciones, se puede utilizar como un registro de proposito general.
N PSW
Este registro contiene la informacion de estado del programa, como podemos observar en la
siguiente figura:
Fig. 1.3.3 Registro de Estado de Programa.
Veamos el significado de cada uno de estos bits:
- CY : Flag de acarreo.
- AC : Flag de acarreo auxiliar (para operaciones BCD).
- F0 : Flag de cero (utilizable por el usuario para uso general).
- RS1 y RS0 : Bits de control 1 y 0 para seleccionar el banco de registros con que queremos
trabajar. El banco con que trabajaremos dependera de las siguientes combinaciones:
Fig. 1.3.4 Seleccion de los Bancos de Registros.
- OV : Flag de desbordamiento.
- --- : Reservado.
- P : Flag de paridad. Puesto a uno o a cero por hardware para
indicar que el Acumulador existe un numero impar/par de uno.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
10
N SP
Es el registro de Stack Pointer y tiene 8 bits. Se incrementa antes de que un dato sea
guardado en el Stack durante la ejecucion de las instrucciones PUSH y CALL.
Debido a que el Stack puede residir en cualquier lugar de la RAM interna, el Stack pointer
se inicializa con el valor 07H despues de un reset, y por tanto el Stack empieza en la
posicion 08H.
N DPTR
El registro Puntero de Datos esta dividido en dos partes, un byte alto (DPH) y un byte bajo
(DPL). Su mision es la de guardar una direccion de 16 bits. Se puede utilizar como un
registro de 16 bits o como dos registros independientes de 8 bits.
N PORTS 0 a 3
P0, P1, P2 y P3 son los latch de los SFR de los Ports 0, 1, 2 y 3 respectivamente.
N SBUF
El Buffer de Datos Serie actua como dos registros independientes, el buffer de transmision
y el buffer de recepcion. Cuando se carga un dato en el SBUF, este se convierte en buffer
de transmision (cargando un dato en el SBUF se inicializa la transmision). Cuando se lee un
dato del SBUF este pasa a ser el buffer de recepcion.
N REGISTROS DEL TIMER
Los pares de registros (TH0, TL0), (TH1, TL1) y (TH2, TL2) son registros contadores de
16 bits de los temporizadores / contadores 0, 1 y 2 respectivamente.
N RCAP2H, RCAP2L
Este par de registros son los registros de captura del Timer 2 en el 'modo de captura. En
este modo, en respuesta a una transicion en el pin T2EX del 8052, el valor de TH2 y TL2 se
copia en RCAP2H y RCAP2L. El Timer 2 tambien tiene un modo de funcionamiento como
el contador recargable de 16 bits y RCAP2H y RCAP2L guardan el valor a recargar para
esto modo. Estos registros se describiran en una seccion posterior.
N REGISTROS DE CONTROL
Los Registros de Funciones Especiales IP, IE, TMOD, TCON, T2CON, SCON y PCON
contienen los bits de control y estado para el sistema de interrupciones, para los
temporizadores / contadores y el port serie. Estos se describiran en secciones posteriores.
EI osciIador y circuitera de reIoj
Los pins XTAL1 y XTAL2 son la entrada y salida de una etapa inversora incluida en el
chip, a las que se puede conectar un cristal de cuarzo para obtener el oscilador. Este
oscilador gobierna el generador de reloj interno. Este, a su vez, proporciona las seales de
reloj para el chip. Estas seales tienen una frecuencia mitad de la frecuencia del oscilador, y
definen las fases internas, los estados y los ciclos maquina que se describiran en una
seccion posterior. Dependiendo del tipo de tecnologia con el que este fabricado el chip
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
11
(HMOS o CHMOS), se deben destacar unas particularidades sobre el oscilador y el circuito
de reloj.
Versiones HMOS
La circuiteria del oscilador para las versiones HMOS (HMOS I y HMOS II) de la familia
MCS-51 es una simple etapa inversora diseada para utilizarse como un oscilador de
reactancia positiva controlado por un cristal de cuarzo.
En esta aplicacion, el cristal funciona en su modo fundamental de respuesta como una
reactancia inductiva en resonancia en paralelo con una capacidad externa del cristal Las
caracteristicas del cristal y los valores de las capacidades (C1 y C2) no son criticas. Se
pueden utilizar capacidades de 30 pF, tal y como se puede ver en la figura 1.3.5, y cristales
de cualquier frecuencia, pero de buena calidad. En aplicaciones que deba tenerse en cuenta
el coste, se puede utilizar un resonador ceramico en lugar de cristal.
Cuando nos encontremos en este caso, C1 y C2 normalmente se escogen de valores mas
elevados (47 pF), de todas maneras, se puede consultar al fabricante del resonador ceramico
a cerca del valor ideal de dichas capacidades.
Fig 1.3.5. Oscilador interno para versiones HMOS
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
12
Versiones CHMOS
Tal como se muestra en la figura 1.3.6, la circuiteria del oscilador para el 80C51 consiste en
una etapa inversora preparada para ser gobernada por un cristal de cuarzo, formando un
oscilador de reactancia positiva, de la misma forma que en las versiones HMOS, sin
embargo, existen unas diferencias importante
Fig 1.3.6 Oscilador interno para las versiones CHMOS.
Una diferencia es que el 80C51 tiene la posibilidad de parar el oscilador del software
(escribiendo un 1 en el bit PD del registro PCON). Otra diferencia es que en el 80C51 el
circuito interno de reloj esta gobernado por XTAL2.
La resistencia de realimentacion Rf de la figura 1.3.6 esta constituida por dos transistores
FET uno de canal P y otro de canal N, puestos en paralelo, controlados por el bit PD, de tal
manera que Rf esta abierta cuando PD 1. Los diodos D1 y D2, que actuan como fijadores
a VCC y VSS, suprimen los parasitos de los FET de Rf. El oscilador se puede utilizar con
los mismos componentes externos que en las versiones HMOS, tal como se muestra en la
figura 1.3.7. Tipicamente C1C230 pF cuando el elemento de realimentacion es un cristal
de cuarzo, y C1C247 pF cuando se utiliza un resonador ceramico.
Para gobernar los dispositivos CHMOS con un reloj externo, se debe aplicar la seal
externa a XTAL1, dejando XTAL2 al aire, tal como se muestra en la figura 1.3.7. La razon
de este cambio respecto a los dispositivos HMOS es que en estos los circuitos internos de
reloj vienen gobernados por XTAL2. En las versiones CHMOS los circuitos internos de
reloj estan gobernados por XTAL1.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
13
Fig. 1.3.7 Uso de un relof externo para gobernar dispositivos CHMOS.
Diagramas de tiempo de Ia CPU
Un ciclo maquina consiste en 6 estados (12 periodos del oscilador). Cada estado se divide
en dos Fase 1 y Fase 2. Durante la Fase 1 es activo el reloj de la Fase 1 y durante la Fase 2
es activo el reloj de la Fase 2. Entonces, un ciclo maquina que consiste en 12 periodos del
oscilador, enumerados S1P1 (Estado1, Fase1) a S6P2 (Estado 6, Fase 2). Cada fase dura un
periodo del oscilador.
Normalmente, las operaciones aritmeticas y logicas se realizan durantela Fase 1 y las
transferencias entre los registros internos se realizan durante la Fase 2. El diagramas de la
figura 1.3.8 nos muestra el ciclo de busqueda y ejecucion de una instruccion, referenciados
respecto a los estados y fases internos. Debido a que estas seales internas de reloj no son
accesibles para el usuario, se muestran las seales XTAL1 y ALE para poder tener una
referencia externa.
La seal ALE se activa normalmente dos veces por cada ciclo maquina: una vez durante
S1P2 y S2P1, y de nuevo durante S4P2 y S5P1.
La ejecucion de una instruccion de un ciclo empieza en S1P2, cuando el codigo de
operacion es almacenado dentro del Registro de Instruccion. Si esta instruccion es de dos
bytes, el segundo byte se lee durante S4 del mismo ciclo maquina. Si es una instruccion de
un byte, se produce otro ciclo de busqueda de codigo de operacion, pero el byte leido se
ignora, y el Contador de Programa no se incrementa. En cualquier caso, la ejecucion de la
instruccion se completa al final de S6P2.
La mayoria de instrucciones del 8051 se ejecutan en un ciclo. Las instrucciones de
multiplicacion y division (MUL y DIV) son las unicas que necesitan mas de dos ciclos para
ejecutarse. Necesitan 4 ciclos. Normalmente, en cada ciclo maquina, se buscan dos bytes de
codigo en la Memoria de Programa. La unica excepcion a esto es cuando se ejecuta una
instruccion MOVX. MOVX es una instruccion de 1 byte y 2 ciclos que accede a la
Memoria de Datos externa (RAM).
Durante la ejecucion de esta instruccion se omiten dos fetch mientras se direcciona y activa
la Memoria de Datos externa. La figura 1.3.8.d nos muestra una instruccion MOVX.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
14
Fig. 1.3.8 Secuencias de busqueda v efecucion de instrucciones.
Estructura y funcionamiento de Ios ports
Los cuatro ports del 8051 son vi direccionables. Cada uno consiste en un latch (Registro de
Funciones Especiales P0 a P3), un amplificador de salida y un buffer de entrada.
Fig. 1.3.9 Funciones alternativas del Port 1 v Port 3.
Nota : P1.0 y P1.1 solamente tienen esta funcion en el 8052.
Los amplificadores de salida de los Ports 0 y 2, y los buffers de entrada del Port 0 se
utilizan para acceder a la memoria externa. En esta aplicacion, el Port 0 proporciona el byte
bajo de la direccion de memoria, multiplexado en el tiempo con el byte que se va a leer o a
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
15
escribir. El Port 2 proporciona el byte alto de direccion para la memoria externa, cuando la
direccion es de 16 bits. Si no es asi, los pins del Port 2 emiten el contenido del Registro de
Funciones
Especiales P2. Todos los pins del Port 3 y dos del Port 1 (en el 8052) son multifuncionales.
No son solamente pins de port si no que tambien se utilizan para varias funciones
especiales como las mostradas en la figura 1.3.9.
Las funciones alternativas solo se pueden activar si el bit correspondiente del latch en el
SFR del port contiene un 1. De otra forma, el pin del port se mantiene a 0.
Configuraciones de entrada / saIida
La figura 1.3.10 nos muestra un diagrama funcional a nivel de bit de los ports. El latch de
bit viene representado como un biestable del tipo D, el cual introduce un valor desde el bus
interno en respuesta a una seal de 'escribir en el latch' que proporciona la CPU. La
salida Q del biestable pasa al bus interno es respuesta a la seal de 'leer latch' que
proporciona la CPU. EL nivel del pin del port se coloca por si mismo en el bus interno
cuando la CPU envia la seal de ' leer pin '. Algunas instrucciones que leen un port
activan la seal de ' leer latch', y otras activan la seal de ' leer pin'. Estas se detallaran
mas adelante.
Los amplificadores de salida de los Ports 0 y 2 son conmutables a un bus interno de
DIRECCIONES y DIRECCIONES / DATOS mediante una seal interna de control, para
poder utilizarse en los accesos a memoria externa. Durante estos accesos, el SFR de P2 se
mantiene sin ningun cambio, pero el SFR de P0 queda con unos escritos en el.
Los Ports 1, 2 y 3 tienen resistencias de carga internas. El Port 0 tiene salidas en drenador
abierto. Cada linea de entrada / salida puede utilizarse independientemente como entrada o
salida. (Los Ports 0 y 2 no pueden utilizarse como ports de entrada / salida de proposito
general cuando se estan utilizando como Bus de Direcciones / datos). Para utilizarse como
entrada, el latch del bit del port debe contener un 1, lo cual desconecta el amplificador FET
de salida. Entonces, para los Ports 1, 2 y 3 el pin se pone a 1 mediante la resistencia de
carga interna, pero puede ponerse a 0 mediante un fuente exterior.
El Port 0 difiere de los anteriores por no tener resistencias de carga internas. El FET de
resistencia de carga en el amplificador de salida de P0 se utiliza solamente cuando el Port
esta sacando unos durante los accesos a memoria externa. De otra manera, el FET de
resistencia de carga esta desconectado. Consecuentemente, las lineas de P0 que se utilizan
como lineas de salida del port son de drenador abierto. El hecho de escribir un 1 en el latch
del bit, desconecta ambos FET de salida, y por tanto, el pin queda al aire. En esta
condicion, se puede utilizar como entrada de alta impedancia. Debido a que los Ports 1, 2 y
3 tienen resistencias de carga internas, estos se denominan en ocasiones ports '
quasibidireccionales '. Cuando estan configurados como entradas, estan a 1 y pueden
entregar corriente cuando se les fuerza un 0 externamente. De otro lado, el Port 0 se
considera bidireccional ' verdadero ', debido a que configurado como entrada esta al aire.
Todos los latch de los ports del 8051 tienen 1 escritos en ellos despues de un reset. Si a
continuacion se escribe un 0 en el latch del port, este puede ser reconfigurado como entrada
escribiendo un 1.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
16
Fig. 1.3.10 Latch de cada bit de los ports v buffers de I/O.
Escritura en un port
En la ejecucion de una instruccion que cambia el valor del latch de un port, el nuevo valor
llega al latch durante el S6P2 del ultimo ciclo de la instruccion. Sin embargo, los latch del
port son de hecho muestreados por sus buffers de salida solamente durante la Fase 1 de
cualquier periodo de reloj. (Durante la Fase 2 el buffer de salida guarda el valor que habia
visto durante la Fase 1 previa) . Consecuentemente, el nuevo valor del latch del port no
podra aparecer en el pin de salida hasta la siguiente Fase 1, la cual sucedera en el S1P1 del
siguiente ciclo maquina, tal y como se observa en la figura 1.3.11.
Fig. 1.3.11 Secuencia de escritura en un puerto.
Si un cambio en el Port 1, 2 o 3 requiere una transicion de 0 a 1, se conecta una resistencia
de carga adicional durante el S1P1 y el S1P2 del ciclo en el cual ocurre la transicion. Esto
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
17
se hace para aumentar la velocidad de transicion. La resistencia de carga extra puede
conducir cerca de 100 veces la corriente que puede conducir la resistencia de carga normal.
Se habra notado que las resistencias de carga internas son FET`s y no resistencias lineales.
Acceso a Ia memoria externa
Los accesos a la memoria externa pueden ser de dos tipos: accesos a la Memoria de
Programa externa y accesos a la Memoria de Datos externa (RAM). Los accesos a la
Memoria de Programa externa utilizan la seal PSEN para leer el dato. Los accesos a la
Memoria de Datos externa utilizan las seales RD o WR para leer o escribir
(funciones alternativas de P3.7 y P3.6).
Los ciclos de busqueda de codigo de operacion de la Memoria de Programa externa
siempre utilizan una direccion de 16 bits. Los accesos a la Memoria de Datos externa
pueden utilizar tanto una direccion de 16 bits (MOVX DPTR) como una direccion de 8
bits
(MOVX Ri).
Cuando se utiliza una direccion de 16 bits, el byte alto de la direccion sale por el Port 2
(figura 1.3.12),en donde se mantiene durante el tiempo que dura el ciclo de lectura o
escritura. Notese que el Port 2 utiliza resistencias de carga durante todo el tiempo que esta
emitiendo bits de direccion que son 1. Esto sucede con la ejecucion de la instruccion
MOVX DPTR. Durante este tiempo el latch del Port 2 (el Registro de Funciones
Especial) no tiene que contener unos y el contenido del SFR del Port 2 no se modifica. Si el
ciclo de memoria externa no es seguido inmediatamente por otro ciclo de memoria externa,
en el siguiente ciclo aparecera el contenido no modificado del SFR del Port 2.
Si se utiliza una direccion de 8 bits (MOVX Ri), el contenido del SFR del Port 2
permanece en los pins del mismo a lo largo del ciclo de memoria externa. Esto puede
facilitar la paginacion.
En cualquier caso, en el Port 0, el byte bajo de la direccion esta multiplexado en el tiempo
con el byte de datos. La seal ADDR/DATA gobierna a ambos FET de los buffers de salida
del Port 0. De este modo, los pins del Port 0 no son salidas en drenador abierto, y no
necesitan resistencias de carga externas. La seal ALE se puede utilizar para introducir el
byte de direcciones en un latch externo. El byte de direccion es valido en el flanco de
bajada de la seal ALE. Entonces, en un ciclo de escritura, el byte de dato que se debe
escribir aparece en el Port 0 justamente antes de que se active la seal WR, y permanece
asi hasta que dicha seal desaparece. En un ciclo de lectura, el byte de entrada es aceptado
en el Port 0 justamente antes de que se desactive la seal de lectura. Durante cualquier
acceso a la memoria externa, la CPU escribe 0FFH en el latch del Port 0 (el Registro de
Funcion Especial), borrando de esta manera cualquier informacion que hubiera en el SFR
del Port 0.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
18
Fig. 1.3.13. Acceso a Memoria de Programa externa
La Memoria de Programa externa se accede bajo dos condiciones:
1.- Siempre que la seal EA` sea activa.
2.- Siempre que el contador de programa (PC) contenga un numero que sea mas grande que
0FFFH (1FFFH para el 8052).
Esto requiere que las versiones de dispositivos que no tienen memoria ROM interna tengan
cableado el pin EA a masa, para permitir que los 4 kbytes mas bajos (8 kbytes para el 8052)
de Memoria de Programa puedan buscarse en el exterior.
Cuando la CPU ejecuta un programa desde la Memoria de Programa externa, los 8 bits del
Port 2 estan dedicados a una funcion de salida y no pueden utilizarse como entradas/salidas
de proposito general. Durante los ciclos de busqueda de instruccion en memoria externa,
ellos sacan el byte alto del PC. Durante este tiempo, los amplificadores del Port 2 utilizan
resistencias de carga internas para emitir los bits del PC que sean 1.
En las figuras 13.14 y 1.3.15 se observan se observan los ciclos de lectura y escritura de
memoria externa respectivamente.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
19
Fig. 1.3.14 Ciclo de lectura de la Memoria de Datos externa.
Fig. 1.3.15 Ciclo de escritura de la Memoria de Datos externa.
SeaI PSEN'
La seal de lectura para la busqueda de codigo de operacion (fetch) externo es PSEN. Esta
seal no se activa para la busqueda de codigo de operacion interno. Cuando la CPU accede
a la Memoria de Programa externa, PSEN se activa dos veces cada ciclo (a excepcion de
una instruccion MOVX) aunque el byte buscado se necesite o no para la instruccion en
curso. Cuando PSEN se activa, su diagrama temporal no es el mismo que el de RD. Un
ciclo completo de RD, incluyendo la activacion y desactivacion de ALE y RD, tarda 12
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
20
periodos del oscilador. Un ciclo completo de PSEN, incluyendo la activacion y
desactivacion de ALE y PSEN, tarda 6 periodos del oscilador. La secuencia de ejecucion se
muestra en la figuras 1.3.8.
SeaI ALE
La principal funcion de ALE es la de proporcionar la seal correcta en el tiempo al latch
externo para que este pueda guardar el byte bajo de una direccion , proveniente de P0,
durante los ciclos de busqueda de instruccion en la Memoria de Programa externa. Debido
a esto, ALE se activa dos veces cada ciclo maquina. Esta activacion tiene lugar aun cuando
el ciclo no implique un fetch externo. El unico momento en que no se produce el impulso
de ALE es durante el ciclo de una instruccion MOVX se elimina (ver figuras 1.3.14 y
1.3.15).
Consecuentemente, en cualquier sistema que no se utilice Memoria de Datos externa, ALE
se activa constantemente cada 1/6 de la frecuencia de oscilador, y puede utilizarse como
reloj externo o para cualquier aplicacion de temporizacion.
SoIapamiento de Ios espacios de Ias memorias de programa y datos
externos
En algunas aplicaciones es deseable ejecutar un programa desde la misma memoria fisica
que se esta utilizando para guardar datos. En el 8051, las Memorias de Programa y Datos
externas pueden combinarse mediante la funcion logica AND entre PSEN y RD (ver
figuras 1.3.16 y 1.3.17). Esta funcion logica de las dos seales produce un impulso de
lectura a nivel bajo que puede utilizarse para combinar las dos memorias. Debido a que el
ciclo de PSEN es mas rapido que el de RD, es necesario que la memoria externa sea
suficientemente rapida para acomodarse a este ciclo.
A) MEMORIA DE PROGRAMA.
Fig. 1.3.16 Solapamiento de la Memoria de Programa.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
21
B) MEMORIA DE DATOS.
Fig. 1.3.17 Solapamiento de la Memoria de Datos.
Temporizadores / contadores
El 8051 tiene dos registros de 16 bits temporizadores / contadores:
Timer 0 y Timer 1. El 8052 tiene estos dos mas un tercero, el Timer 2.
Los tres pueden configurarse para funcionar como temporizadores o como contadores.
En la funcion de temporizador el registro se incrementa cada ciclo maquina. Por tanto, uno
puede pensar que es un contador de ciclos maquina. Debido a que un ciclo maquina de
temporizacion es de un 1/12 de la frecuencia del oscilador.
En la funcion de contador el registro se incrementa en respuesta a la transicion de 1 a 0 en
su correspondiente pin de estrada externo, T0, T1 o (en el 8052) T2. En esta funcion la
entrada externa se muestra durante el S5P2 de cada ciclo maquina. Cuando los muestreos
ven un 1 en un ciclo y un 0 en el siguiente ciclo, el contador se incrementa. El nuevo valor
del contador aparece en el registro durante S3P1 del ciclo siguiente al cual se detecto la
transicion. Debido a que este tarda dos ciclos maquina (24 periodos del oscilador) en
reconocer la transicion de 1 a 0, la maxima velocidad del conteo sera 1/24 de la frecuencia
del oscilador. No hay restricciones por lo que respecta al ciclo de trabajo de la seal de
entrada externa, pero para asegurar que un nivel se muestrea al menos una vez antes de que
cambie, este debe mantenerse al menos durante un ciclo maquina completo. En adicion a la
seleccion de temporizador o contador, el Timer 0 y el Timer 1 tienen cuatro modos de
direccionamiento que se pueden seleccionar. El Timer 2 tiene tres modos de
funcionamiento: 'captura' , autorrecarga y generador de baud-rates.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
22
Timer 0 y Timer 1
Estos temporizadores / contadores estan presentes tanto en el 8051 como en el 8052. La
funcion de temporizador o contador se selecciona por el bit de control C/T del Registro de
Funcion Especial TMOD (ver figura 1.3.18). Estos dos temporizadores/ contadores tienen
cuatro modos de funcionamiento seleccionables mediante los bits M1 y M0 de TMOD. Los
modos 0, 1 y 2 son iguales para ambos. El modo 3 es diferente. A continuacion se
describiran los cuatro modos de funcionamiento.
Fig. 1.3.18 Registro TMOD.
Veamos el significado de cada uno de estos bits:
N GATE : Cuando esta a 1 actua como control de entrada. El temporizador/contador
'x es habilitado solamente cuando el pin INT'X esta a 1 y cuando el pin de
control TRX esta a 1. Cuando esta a 0, el Timer x es habilitado siempre que el
bit de control TRx este a 1.
N C/T` : Seleccionador de temporizador o contador. Cuando esta a 0 se selecciona el
funcionamiento como temporizador (entrada por el reloj interno del sistema).
Cuando esta a 1 se selecciona el funcionamiento como contador (entrada por el pin
de entrada 'Tx).
N M1 y M0 : Bits de control 1 y 0 para seleccionar el modo de funcionamiento del
temporizador/contador. El modo dependera de las siguientes combinaciones:
Fig. 1.3.19 Seleccion de los modos de funcionamiento de los Timers.
MODO 0
El hecho de poner cualquier Timer eN Modo 0, hace que este se asemeje al Timer del 8048
(Familia anterior a la MCS-51), el cual es un contador de 8 bits con un prescaler que divide
por 32. La figura 1.3.20 no muestra el funcionamiento del Modo 0, aplicado al Timer 1.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
23
Fig. 1.3.20 Tempori:ador/contador 1 en Modo 0.
En este modo, el registro del temporizador se configura como un registro de 13 bits.
Cuando el conteo pasa de todos los bits a 1 a todos a 0 , se activa el flag de interrupcion del
timer TF1. La entrada de conteo, para el timer, se habilita cuando TR11 y GATE0 o
INT11 . (Poniendo GATE1 permitimos que el timer pase a ser controlado por la entrada
externa INT1, de cara a facilitar la medida de anchura de impulso). TR1 es un bit de control
de Registro de Funcion Especial TCON (figura 1.3.21) . El bit GATE pertenece a TMOD.
El registro de 13 bits lo forman 8 bits TH1 y los cinco bits bajos del TL1. Los tres bits mas
altos de TL1 son determinados y se pueden ignorar. El hecho de activar el flag de puesta en
marcha (TR1) no borra los registros.
El funcionamiento del Modo 0 es el mismo para el Timer 0 que para el Timer 1.
Para ello, basta con sustituir en la figura 1.3.18 TR1, TF1 e INT1 por sus seales
correspondientes del Timer 0. Hay dos bits de GATE diferentes uno para el Timer 1
(TMOD.7) y otro para el Timer 0 (TMOD.3).
Fig. 1.3.21 Registro TCON.
Veamos el significado de cada uno de estos bits:
- TF1 : Es el flag de desbordamiento del Timer 1. Se pone a 1 por hardware cuando
hay un desbordamiento del temporizador/contador 1. Puesto a cero por hardware
cuando el
- procesador ejecuta la subrutina de interrupcion.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
24
- TR1 : Bit de control de puesta en marcha del Timer 1. Puesto a 1/puesto a 0 por
software para poner en marcha / parar el temporizador/contador.
- TF0 : Es el flag de desbordamiento del Timer 0. Se pone a 1 por hardware cuando
hay un desbordamiento del temporizador/contador 1 . Puesto a cero por hardware
cuando el procesador ejecuta la subrutina de interrupcion.
- TR0 : Bit de control de puesta en marcha del Timer 0 Puesto a 1/puesto a 0 por
software para poner en marcha / parar el temporizador/contador.
- IE1 : Flag de flanco de la interrupcion 1. Puesto a 1 por hardware cuando se detecta
un flanco de interrupcion externa. Puesto a cero cuando se ha procesado la
interrupcion.
- IT1 : Bit de control del tipo de interrupcion 1. Puesto a 1/puesto a 0 por software
para especificar el tipo de disparo de las instrucciones externas por el flanco de
bajada/por nivel bajo.
- IE0 : Flag de flanco de la interrupcion 0. Puesto a 1 por hardware cuando se detecta
un flanco de interrupcion externa. Puesto a cero cuando se ha procesado la
interrupcion.
- IT0 : Bit de control del tipo de interrupcion 0. Puesto a 1/puesto a 0 por software
para especificar el tipo de disparo de las interrupciones externas por flanco de
bajada/por nivel bajo.
MODO 1
El Modo 1 es le mismo que el Modo 0 a excepcion de que el registro del Timer funciona
con los 16 bits.
Fig. 1.3.22 Tempori:ador/contador 1 en Modo 1.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
25
MODO 2
El Modo 2 configura al registro del timer como un contador de 8 bits (TL1) con recarga
automatica, tal como se muestra en la figura 1.3.20. El desbordamiento de TL1 no tan solo
pone a 1 a TF1, sino que recarga a TL1 con el contenido de TH1, el cual ha sido
preprogramado por software. La recarga no altera el valor de TH1.
Este modo de funcionamiento es el mismo para el Timer 0.
Fig. 1.3.23 Tempori:ador/contador 1 en Modo.
MODO 3
El Timer 1 en Modo 3 simplemente mantiene su conteo. El efecto es el mismo que poner
TR10. El Timer 0 en Modo 3 funciona con TL0 y TH0 como dos contadores
independientes. La figura 1.3.24 nos muestra la logica para este modo y para el Timer 0.
TL0 utiliza los bits de control del Timer 0 : C/T, GATE, TR0, INT0 y TF0. TH0 queda
limitado a a funcion de timer (cuenta ciclos maquina) y toma el control de TR1 y TF1 del
Timer 1. Por tanto, ahora TH0 controla la interrupcion del Timer 1.
El Modo 3 esta pensado para aquellas aplicaciones que necesiten un temporizador o
contador extra de 8 bits. Con el Timer 0 en Modo3, un 8051 puede parecer que tenga tres
temporizadores/contadores, y un 8052 como si tuviera 4. Cuando el Timer 0 esta en Modo
3, el Timer 1 puede ponerse en marcha o pararse programandolo o desprogramandolo en
Modo 3, o puede ser utilizado por el port serie como generador de baud rate, o de hecho,
utilizarlo en cualquier aplicacion que no requiera interrupciones.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
26
Fig. 1.3.24 Tempori:ador/contador 0 en Modo 3.
Timer 2
El Timer 2 es in temporizador/contador de 16 bits que solo esta presente en el 8052. Al
igual que los Timers 0 y 1, puede operar como temporizador o como contador. Esto se
selecciona mediante el bit C/T2 del Registro de Funcion Especial T2CON (figura 1.3.22).
Tiene tres modos de funcionamiento : 'captura, autorecarga y generador de baud rate, los
cuales se seleccionan por unos bits del T2CON mostrado en la 1.3.25.
Fig. 1.3.25 Registro T2CON.
Veamos el significado de cada uno de estos bits :
- TF2 : Es el flag de desbordamiento del Timer 2. Se pone a 1 mediante el
desbordamiento del Timer 2 y se debe poner a 0 por software. TF2 no se debe poner
a 1 cuando RCLK1 o TCLK1.
- EXF2 : Es el flag externo del Timer 2 que se pone a uno cuando se produce una
'captura o recarga debido a un flanco de bajada en T2EX y EXEN21. Cuando las
interrupciones del Timer 2 estan habilitadas, EXF21 ocasionara que la CPU
vectorize la subrutina de interrupcion del Timer 2. EXF2 se debe poner a 0 por
software.
- RCLK : Es el flag del reloj de recepcion. Cuando esta a 1, hace que el port serie
utilice los impulsos de desbordamiento del Timer 2
- para su reloj de recepcion en modos 1 y 3. RCLK0 hace que el
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
27
- desbordamiento del Timer 1 se use para el reloj de recepcion.
- TCLK : Es el flag del reloj de transmision. Cuando esta a 1, hace que el port serie
utilice los impulsos de desbordamiento del Timer 2 para su reloj de transmision en
modos 1 y 3. TCLK0 hace que el desbordamiento del Timer 1 se use para el reloj
de transmision.
- -EXEN2 : Es el flag externo de habilitacion del Timer 2. Cuando esta a 1, permite
que se produzca una 'captura o recarga como resultado de un flanco descendente
en T2EX si es que el Timer 2 no se esta utilizando para gobernar el port serie.
EXEN20 hace que el Timer 2 ignore lo que pasa en T2EX.
- TR2 : Puesta en marcha/paro del Timer 2. Un 1 logico pone en marcha al timer.
- C/T2` : Timer 2 seleccionado como temporizador o contador.
4 0 Timer interno (OSC/12).
4 1 Contador externo (disparo por flancos de bajada).
- CP/RL2` : Flag de 'captura/recarga. Cuando esta a 1, se produciran 'capturas en
los flancos descendentes de T2EX si EXEN21. Cuando esta a 0, se producira una
autorecarga siempre que haya desbordamiento del Timer 2 o flancos descendentes
en T2EX si EXEN21. Cuando RCLK1 o TCLK1, este bit se ignora y se fuerza
al timer a autocargarse cuando se produce un desbordamiento del Timer 2.
Fig. 1.3.26 Seleccion de los modos de operacion del Timer 2.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
28
Fig. 1.3.27 Tempori:ador/contador 2 en Modo 'Captura'.
En el modo de 'captura hay dos opciones que se seleccionan mediante el bit EXEN2 de
T2CON. Si EXEN20, entonces el Timer 2 queda configurado como un temporizador o
contador de 16 bits el cual pone a 1 el bit TF2 cuando se produce un desbordamiento del
mismo, el cual se puede utilizar para generar una interrupcion. Si EXEN21, el Timer 2
queda configurado como en el caso anterior, pero con la caracteristica aadida de que si se
produce una transicion de 1 a 0 en el pin externo T2EX, el valor de los registros TL2 y TH2
es 'capturado respectivamente, en los registros RCAP2L y RCAP2H. Ademas, la
transicion hace que se ponga a 1 el bit EXF2 de T2CON, y EXF2, al igual que TF2, puede
generar una interrupcion. Este modo queda ilustrado en la figura 1.3.27. En el modo de
autorecarga hay de nuevo dos opciones, las cuales son seleccionadas por el bit EXEN2 de
T2CON. Si EXEN0, entonces cuando se produce un desbordamiento del Timer 2 no
solamente se pone a 1 TF2 si no que tambien ocasiona que los registros del Timer 2 se
recarguen con el valor de 16 bits de los registros RCAP2L y RCAP2H. los cuales deben
haber sido preprogramados por software.
Si EXEN1, el Timer 2 se comporta como en el modo anterior, pero con la caracteristica
aadida de que una transicion de 1 a 0 en la entrada externa T2EX tambien dispara la
recarga de 16 bits y pone a 1 EXF2.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
29
El modo de autorecarga queda mostrado en la figura 1.3.28.
Fig. 1.3.28 Tempori:ador/contador 2 en Modo Autorecarga.
El modo generador de baud rate se selecciona mediante RCLK1 y/o TCLK1. Esto se
describira conjuntamente con el port serie.
Interfase serie
El port serie es full duplex, o sea, que puede transmitir y recibir a la vez. Tambien posee
una recepcion con buffer, es decir, puede empezar la recepcion de un segundo byte antes de
que se haya leido, del registro de recepcion, el byte recibido con anterioridad. (Sin
embargo, si el primer byte no ha sido leido durante el tiempo de recepcion del segundo
byte, se perdera uno de los dos bytes). Los registros de transmision y recepcion del port
serie son accesibles mediante el Registro de Funcion Especial SBUF. El hecho de escribir
en SBUF, carga el registro de transmision, y el hecho de leer SBUF hace que accedamos
fisicamente al registro de recepcion. El port serie puede operar de 4 modos diferentes:
MODO 0
Los datos serie entran y salen por RXD. TXD saca el reloj de desplazamiento. Se
transmiten/reciben 8 bits (el LSB primero). El baud rate queda fijado a 1/12 de la
frecuencia del reloj.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
30
MODO 1
Se transmiten (a traves de TXD) o reciben (a traves de RXD) 10 bits: un bit de start (0), 8
bits de datos (el LSB primero) y un stop bit (1). En la recepcion, el bit de stop va a parar a
RB8 del Registro de Funcion Especial SCON. El baud rate es variable.
MODO 2
En este modo se transmiten (a traves de TXD) o reciben (a traves de RXD) 11 bits: un bit
de start (0), 8 bits de datos (el LSB primero), un noveno bit de datos programable y un stop
bit (1). En la transmision, al noveno bit de datos (TB8 en SCON) se le puede asignar el
valor 0 o 1, o, por ejemplo, se puede transferir a TB8 el bit de paridad (P, en el PSW). En
recepcion, el noveno bit de datos se introduce en RB8 del registro de Funcion Especial
SCON, y el stop bit se ignora. El baud rate es programable a 1/32 o 1/64 de la frecuencia
del oscilador.
MODO 3
En este modo se transmiten (a traves de TXD) o reciben (a traves de RXD) 11 bits: un bit
de start (0), 8 bits de datos (el LSB primero), un noveno bit de datos programable y un stop
bit (1). De hecho, el Modo 3 es el mismo que el Modo 2 en todos los aspectos, con la unica
diferencia del baud rate. El baud rate en Modo 3 es variable. En todos los modos, la
transmision se inicia mediante cualquier instruccion que utilice SBUF como registro
destino. La recepcion se inicia en Modo 0 por la condicion de que RI0 y REN1. En los
otros modos la recepcion se inicia mediante la llegada del bit start si REN1.
Comunicaciones muItiprocesador
Los Modos 2 y 3 tienen condiciones especiales para las comunicaciones multiprocesador.
En estos modos, se reciben 9 bits de datos. El bit noveno va a parar a RB8. Despues llega el
bit de stop. El port puede programarse para que cuando se reciba el bit de stop, se active la
interrupcion del port serie se RB81. Esto es posible poniendo a 1 el bit SM2 de SCON.
Una manera de utilizar esta caracteristica en los sistemas multiprocesador es la siguiente.
Cuando el procesador central quiere transmitir un bloque de informacion a alguno de los
procesadores secundarios, este primero envia una direccion la cual identifica el procesador
destino. Un byte dedireccion difiere de un byte de dato porque el noveno bit es un 1 en el
byte de direccion y un 0 en el byte de dato. Con SM21, ningun procesador secundario
podra generar interrupcion por la llegada de un byte de dato. Sin embargo, la llegada de un
byte de direccion podra hacer que todos los procesadores secundarios generen interrupcion,
y asi, cada uno podra examinar el byte recibido y mirar si esta siendo direccionado. El
procesador secundario direccionado podra borrar su bit SM2 y prepararse para recibir los
bits de datos que le lleguen. Los procesadores secundarios que no son direccionados, dejan
a 1 su bit SM2 y continuan con la realizacion de sus tareas, ignorando los bytes de datos
que lleguen.
En Modo 0 el bit SM2 no tiene ningun efecto, y en Modo 1 se puede utilizar para
comprobar la validez del bit de stop. En la recepcion en Modo 1, si SM21, no se podra
activar la interrupcion de recepcion a menos de que no se reciba un bit de stop valido.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
31
Registros de controI deI port serie
El registro de control y estado del port serie es el Registro de Funcion Especial SCON, que
se muestra en la figura 1.3.29. Este registro no solo contiene los bits de seleccion de modo,
si no que tambien contiene el noveno bit de dato para la transmision y recepcion (TB8 y
RB8), y los bits de interrupcion del port serie (TI y RI).
Fig. 1.3.29 Registro SCON.
Veamos el significado de cada uno de estos bits:
- SM0 y SM1 : Estos bits especifican el modo de funcionamiento del port serie, tal
como se muestra en la figura siguiente 1.3.30.
- SM2 : Habilita la comunicacion multiprocesador en Modos 2 y 3. En Modos 2 o 3,
si SM2 esta a 1, entonces RI no sera activado si el noveno bit de dato recibido
(RB8) es un 0. En Modo 1, si SM21, entonces RI no sera activado si no recibe un
bit de stop valido. En Modo 0, SM2 debe ser 0.
Fig. 1.3.30 Seleccion de los modos de funcionamiento del port serie.
- REN : Habilita la recepcion serie. Para habilitarla, se debe poner a 1 por software.
Para inhibir la recepcion debe ponerse a 0.
- TB8 : Es el noveno bit de dato que se transmitira en los Modos 2 y 3. Se debe poner
a 1 o 0 por software.
- RB8 : En los Modos 2 y 3, es el noveno bit de dato que se recibe. En Modo 1, si
SM20, RB8 es el bit de stop recibido. En Modo 0, RB8 no se utiliza.
- TI : Es el flag de interrupcion de la transmision. En cualquier transmision serie, se
pone a 1 por hardware al final del octavo bit, en Modo 0, o al principio del bit de
stop, en los otros modos. Debe ponerse a 0 por software.
- RI : Es el flag de interrupcion de la recepcion. En cualquier recepcion serie (ver
SM2), se pone a 1 por hardware al final del octavo bit, en Modo 0, o a la mitad del
bit de stop, en los otros modos. Debe ponerse a 0 por software.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
32
Baud rates
El baud rate en Modo 0 queda fijado:
El baud rate en Modo 2 depende del valor del bit SMOD en el Registro de Funcion
Especial PCON. Si SMOD0 (valor por defecto despues de un reset), el baud rate es 1/64
de la frecuencia del oscilador. Si SMOD1, el baud rate es 1/32 de la frecuencia de
oscilador.
En el 8051, los baud rates en Modos 1 y 3 vienen determinados por el desbordamiento del
Timer 1. En el 8052, estos baud rates pueden venir determinados por el Timer 1, o por el
Timer 2 o por ambos (uno para la transmision y el otro para la recepcion).
UTILIZACION DEL TIMER 1 PARA GENERAR BAUD RATES
Cuando se utiliza el Timer 1 como generador de baud rates, estos, en los Modos 1 y 3
vienen determinados por el desbordamiento del Timer 1 y por el valor de SMOD, tal como
se indica en la formula siguiente:
En esta aplicacion, la interrupcion del Timer 1 debe estar prohibida. El Timer puede
configurarse como temporizador o contador y en cualquiera de sus tres modos de
funcionamiento. En las aplicaciones mas tipicas, este se configura como temporizador, en
Modo autorecarga ( nibble alto de TMOD0010B).
En este caso, el baud rate viene dad por la formula:
Con el timer 1, se pueden conseguir baud rates muy bajos si habilitamos la interrupcion de
este y configuramos al Timer para que funcione como temporizador de 16 bits (nobble alto
de TMOD0001B), y utilizando la interrupcion para realizar una recarga, por software, de
16 bits.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
33
La figura 1.3.31 nos muestra los baud rates mas comunmente utilizados y como pueden
obtenerse a traves del Timer 1.
Fig. 1.3.31 Baud rates mas comunmente utili:ados
Fig. 1.3.31 Baud rates mas comunmente utili:ados
UTILIZACION DEL TIMER 2 PARA GENERAR BAUD RATES
En el 8052, el Timer 2 se selecciona como generador de baud rates si ponemos a 1 TCLK
y/o RCLK de T2CON. Notese que los baud rates para la transmision y para la recepcion
pueden ser simultaneamente diferentes. En la figura 1.3.32 podemos ver el diagrama
interno del Timer 2 como generador de baud rates.
El modo generador de baud rates es similar al modo de autorecarga, en el hecho de que un
desbordamiento de TH2 ocasiona que los registros del Timer 2 se recarguen con el valor de
16 bits de los registros RCAP2H y RCAP2L, los cuales son preprogramados por software.
Ahora, los baud rates en Modos 1 y 3, vienen determinados por el desbordamiento del
Timer 2, mediante la siguiente formula:
El Timer puede configurarse para funcionar como temporizador o como contador. En las
aplicaciones mas tipicas, este se configura como temporizador (C/T20).
El funcionamiento como temporizador del Timer 2 es algo diferente cuando este se utiliza
como generador de baud rate. Normalmente, el Timer se incrementa cada ciclo maquina
(1/12 de la frecuencia del oscilador). Como generador de baud rate, sin embargo, este se
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
34
incrementa en cada estado (1/2 de la frecuencia del oscilador). En este caso, el baud rate
viene dado por la formula:
en donde (RCAP2H, RCAP2L) es al contenido de RCAP2H y RCAP2L, tomando como un
entero de 16 bits sin signo.
Fig. 1.3.32 Timer 2 como Generador de Baud Rates.
En la figura 1.3.29 podemos ver el Timer 2 como generador de baud rates. Esta figura es
valida solamente si RCLKTCLK1 en T2CON. Notese que un desbordamiento de TH2
no pone a 1 TF2, y no generara interrupcion. En consecuencia, la interrupcion del Timer 2
no tiene que ser prohibida cuando este funciona como generador de baud rates. Notese
tambien, que si EXEN2 esta a 1, una transicion de 1 a 0 en T2EX pondra a 1 EXF2 pero no
causara recarga de (RCAP2H, RCAP2L) a (TH2, TL2). De esta forma, cuando el Timer 2
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
35
se utiliza como generador de baud rate, T2EX se puede utilizar como una interrupcion
externa extra.
Debe notarse que cuando el Timer 2 esta funcionando (TR21) como temporizador en el
modo de generacion de baud rates, no se debe intentar leer o escribir en TH2 o TL2. Bajo
estas condiciones el Timer se incrementa en cada estado, y el resultado de una lectura o una
escritura puede ser que no sea del todo preciso. Los registros RCAP se pueden leer, pero no
se debe escribir en ellos, porque una escritura puede solaparse con una recarga y puede
ocasionar errores de escritura y/o recarga. En este caso, primero debe pararse el Timer
(TR2 a 0) antes de acceder al Timer 2 o a los registros RCAP.
Port serie en modo 0
En este modo, los datos serie entran y salen por RDX. TXD saca el reloj de
desplazamiento. Se transmiten/reciben 8 bits de datos (el LSB primero). El baud rate esta
fijado a 1/12 de la frecuencia del oscilador.
En la figura 1.3.33 Ay B, se nos muestra una trama de transmision serie en Modo 0 y los
diagramas de tiempo asociados.
La transmision se inicia mediante cualquier instruccion que utilice SBUF como registro
destino. La seal de 'escribir en SBUF, en S6P2, tambien carga un 1 en la posicion del
noveno bit del registro de desplazamiento de transmision y le dice al bloque TX Control
que empiece una transmision. El diagrama de tiempo interno es el mismo que un ciclo
maquina completo que transcurra entre 'escribir en SBUF y la activacion de SEND.
SEND permite que la salida del registro de desplazamiento salga por la funcion alternativa
del pin P3.0 y tambien permite que el SHIFT CLOK salga por la funcion alternativa del pin
P3.1. El SHIFT CLOK esta a 0 durante S3, S4 y S5 de cada ciclo maquina, y esta a 1
durante S6, S1 y S2. En S6P2 de cada ciclo maquina el cual SEND es activa, el contenido
del registro de desplazamiento de transmision es desplazado un lugar hacia la derecha.
A la vez que los bits de datos son desplazados hacia la derecha, entran ceros por la
izquierda. Cuando el MSB del byte de datos esta en la posicion de salida del registro de
desplazamiento, entonces el 1 que habia sido inicialmente cargado en la novena posicion,
esta justamente a la izquierda del MSB, y todas las posiciones a la izquierda de esta,
contienen ceros. Esta condicion hace que el bloque TX Control haga un ultimo
desplazamiento y luego desactive SEND y ponga a 1 TI.
Ambas acciones ocurren en S1P1 del decimo ciclo maquina despues del 'escribir en
SBUF.
La recepcion se inicia por la condicion de que REN1 y RI0. En S6P2 del proximo ciclo
maquina, la unidad RX Control escribe en el registro de desplazamiento de recepcion los
bits 11111110 y en la siguiente fase del reloj activa RECEIVE.
RECEIVE permite que el SHIFT CLOK salga por la funcion alternativa del pin P3.1. El
SHIFT CLOK hace transmisiones es S3P1 y S6P1 de cada ciclo maquina. En S6P2 de cada
ciclo maquina en el cual RECEIVE es activa, el contenido del registro de desplazamiento
de recepcion se desplaza un lugar a la izquierda. El valor que entra por la derecha es el
valor que fue muestreado en el pin P3.0 en el S5P2 del mismo ciclo maquina.
A la vez que entran los bits de datos por la derecha, por la izquierda salen unos. Cuando el
0 que habia sido cargado inicialmente en la posicion de mas a la derecha llega a la posicion
de mas a la izquierda del registro de desplazamiento, hace que el bloque de RX Control
haga un ultimo desplazamiento y cargue SBUF. En S1P1 del decimo ciclo maquina
despues de que se habia puesto a 0 RI de SCON, RECEIVE se pone a 0 y RI se pone a 1.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
36
Fig. 1.3.33 A Trama de transmision del Port serie en Modo 0.
Fig. 1.3.33 B Diagrama de tiempo del Port serie en Modo 0.
Port serie en modo 1
Se transmiten (a traves de TXD) o reciben (a traves de XD) 10 bits: un bit de start (0), 8
bits de datos (el LSB primero) y un stop bit (1). En la recepcion, el bit de stop va a parar a
RB8 del Registro de Funcion Especial SCON. En el 8051, el baud rate viene determinado
por el desbordamiento del Timer 1.
En el 8052, este viene determinado por el desbordamiento del Timer 1, el desbordamiento
del Timer 2 o por ambos.
La transmision se inicia mediante una instruccion que utilice a SBUF como registro
destino. La seal 'escribir en SBUF tambien carga un 1 en la posicion del noveno bit de
registro de desplazamiento de transmision y hace que el bloque TX Control se entere de
que se ha pedido una transmision . Entonces, la transmision empieza en el S1P1 del ciclo
maquina que sigue al desbordamiento del contador-divisor por 16. (Los tiempos de bit estan
sincronizados con el contador-divisor por 16, y no por la seal de 'escribir en SBUF).
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
37
La transmision empieza con la activacion de SEND, la cual pone el bit de start en TXD.
Despues de transcurrir el tiempo de un bit, se activa DATA, la cual permite que salga el bit
del registro de
desplazamiento de transmision a TXD. El primer impulso de desplazamiento tiene lugar
despues del tiempo de un bit despues de este.
A la vez que los bits de datos son desplazados hacia la derecha, entran ceros por la
izquierda. Cuando el MSB del byte de datos esta en la posicion de salida del registro de
desplazamiento, entonces el 1 que habia sido inicialmente cargado en la novena posicion,
esta justamente a la izquierda del MSB, y todas las posiciones a la izquierda de esta,
contienen ceros. Esta condicion hace que el bloque TX Control haga el ultimo
desplazamiento y luego desactive SEND y ponga a 1 TI. Esto ocurre en el decimo
desbordamiento del contador-divisor por 16 despues de 'escribir en SBUF.
La recepcion se inicia mediante la deteccion de una transicion de 1 a 0 en RXD. Debido a
esto, RXD es muestreada a una velocidad de 16 veces el baud rate establecido. Cuando se
detecta una transmision, se resetea inmediatamente el contador-divisor por 16 y se escribe
1FFH en el registro de desplazamiento de entrada. Reseteado el contador-divisor por 16,
igualamos sus desbordamientos con los limites de los tiempos de los bits de entrada.
Los 16 estados del contador dividen cada tiempo de bit en 16. En los estados del contador
septimo, octavo y noveno de cada tiempo de bit, el detector de bit muestrea el valor de
RXD. Esto se hace para obtener un rechazo al ruido. Si el valor que se acepta durante el
primer tiempo de bit no es 0, se resetean los circuitos de recepcion y la unidad vuelve a
esperar otra transmision de 1 a 0. Esta se realiza para prevenir la aceptacion de bits de start
falsos. Si el bit de start es valido, es desplazado dentro del registro de desplazamiento y se
procedera a la recepcion del resto de la trama.
A la vez que entran los bits de datos por la derecha, pos la izquierda salen unos. Cuando el
bit de start llega a la posicion de mas a la izquierda del registro de desplazamiento, (que en
Modo 1 en el noveno bit del registro), este hace que el bloque RX Control haga un ultimo
desplazamiento, cargue SBUF y RB8, y ponga a 1 RI. La seal de cargar SBUF, RB8 y de
poner a 1 RI, se generara si y solamente si se cumplen las siguientes condiciones en el
momento que se genera el ultimo impulso de desplazamiento. Las condiciones son:
1.- RI 0 y
2.- Que SM2 0 o que el bit de stop recibido 1.
Si no se cumple cualquiera de las dos condiciones, la trama recibida se perdera
irremediablemente. Si se cumplen las dos condiciones, el bit de stop se introduce en RB8,
los 8 bits de datos en SBUF y se activa RI. En este momento, se cumplan o no las
condiciones anteriores, la unidad vuelve a mirar si se produce una transmision de 1 a 0 en
RXD.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
38
Port serie en modos 2 y 3
En estos modos se transmiten (a traves de TXD) o reciben (a traves de RDX) 11 bits: un bit
de start (0), 8 bits de datos (el LSB primero), un noveno bit de datos programable y un stop
bit (1). En la transmision, al bit noveno de datos (TB8 en SCON) se le puede asignar el
valor 0 o 1. En recepcion, el bit noveno de datos se introduce es RB8 del registro de
Funcion Especial SCON. El baud rate es programable a 1/32 o 1/64 de la frecuencia del
oscilador. En Modo 3 podemos tener baud rates variables generados por el Timer 1 o el 2
dependiendo del estado de TCLK y RCLK.
El bloque de recepcion es exactamente la misma que en Modo 1.
La parte de transmision solamente difiere del Modo 1 en el noveno bit del registro de
desplazamiento de transmision.
La transmision se inicia mediante una instruccion que utilice a SBUF como registro
destino. La seal 'escribir es SBUF tambien carga TB8 en la posicion del noveno bit del
registro de desplazamiento de transmision y hace que el bloque TX Control se entere de
que se ha pedido una transmision. Entonces, la transmision empieza en el S1P1 del ciclo
maquina que sigue al desbordamiento del contador-divisor por 16. (Los tiempos de bit estan
sincronizados con el contador-divisor por 16, y no por la seal de 'escribir en SBUF).
La transmision empieza con la activacion de SEND, la cual pone el bit de start en TXD.
Despues de transcurrir el tiempo de un bit, se activa DATA, la cual permite que salga el bit
del registro de desplazamiento de transmision a TXD. El primer impulso de desplazamiento
tiene lugar despues del tiempo de un bit despues de este. El primer desplazamiento coloca
un 1 (el bit de stop) en la posicion del noveno bit del registro de desplazamiento. A la vez
que los bits de datos son desplazados hacia la derecha, por la izquierda entran ceros.
Cuando TB8 se encuentra en la posicion de salida del registro de desplazamiento, entonces,
el bit de stop se encuentra justamente a la izquierda de TB8, y todas las posiciones a la
izquierda de este contienen ceros. Esta condicion hace que la unidad TX Control haga un
ultimo desplazamiento, desactiva SEND y ponga a 1 TI. Esto ocurre en el onceavo
desbordamiento del divisor por 16, despues de la seal 'escribir en SBUF.
La recepcion se inicia mediante la deteccion de una transicion de 1 a 0 en RDX. Debido a
esto, RDX es muestreada a una velocidad de 16 veces al baud rate establecido. Cuando se
detecta una transmision, se resetea inmediatamente el contador-divisor por 16 y se escribe
1FFH en el registro de desplazamiento de entrada. En los estados del contador septimo,
octavo y noveno de cada tiempo de bit, el detector de bit muestrea el valor de RXD. El
valor aceptado es el valor que se ha visto en los 2 o 3 ultimos muestreos. Si el valor que se
acepta durante el primer tiempo de bit no es 0, se resetean los circuitos de recepcion y la
unidad vuelve a esperar otra transicion de 1 a 0. Si el bit de start es valido, es desplazado
dentro del registro de desplazamiento y se procedera a la recepcion del resto de la imagen.
A la vez que entran los bits de datos por la derecha, por la izquierda salen unos. Cuando el
bit start llega a la posicion de mas a la izquierda del registro de desplazamiento, (que en los
Modos 2 y 3 es el noveno bit del registro), este hace que el bloque RX Control haga un
ultimo desplazamiento, cargue SBUF y RB8, y ponga a 1 RI. La seal de cargar SBUF,
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
39
RB8 y de poner a 1 RI, se generara si y solamente si se cumplen las siguientes condiciones
en el momento que se genera el ultimo impulso de desplazamiento.
Las condiciones son:
1.- RI 0 y
2.- Que SM2 0 o que el bit de stop recibido 1.
Si no se cumple cualquiera de las dos condiciones, la trama recibida se perdera
irremediablemente y RI no se pondra a 1. Si se cumplen las dos condiciones, el noveno bit
de dato se introduce en RB8, y los 8 bits de datos en SBUF. En este momento, se cumplan
o no las condiciones anteriores, la unidad vuelve a mirar si se produce una transmision de 1
o 0 en RDX.
Notese que el valor del bit del bit de stop recibido es irrelevante para SBUF, RB8 o RI.
Interrupciones
El 8051 tiene 5 fuentes de interrupcion. El 8052 tiene 6. Estas fuentes se muestrean en la
figura 1.3.34.
Fig. 1.3.34 Fuentes de interrupcion de la familia MCS-51.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
40
Las interrupciones externas INTO` e INT1` puede ser cada una activada por nivel o por
flanco descendente, dependiendo del valor de los bits IT0 e IT1 del registro TCON. Los
flags que generan estas interrupciones son los bits IE0 e IE1 del mismo registro. Cuando se
genera una interrupcion externa, el flag que la ha generado se pone a cero por hardware
cuando se ha vectorizado la subrutina de servicio de la interrupcion, solamente si la
interrupcion se activa por flanco. Si la interrupcion se activa por nivel, entonces es la fuente
externa de interrupcion la que controla el flag de peticion y no el hardware interno
del chip.
Las interrupciones del Timer 0 y el Timer 1 se generan por TF0 y TF1, los cuales se ponen
a 1 cuando se produce un desbordamiento en su respectivo registro temporizador /contador
(excepto para el Timer 0 en Modo 3). Cuando se genera una interrupcion de un timer, el
flag que la ha generado es puesto a 0 por el hardware interno, cuando se haya vectorizado la
subrutina de servicio de la interrupcion.
La interrupcion del Port serie viene generada por la funcion logica OR entre los flags RI y
TI. Ninguno de estos flags es borrado por hardware cuando se ha vectorizado la subrutina
de servicio de la interrupcion. De hecho, normalmente, es dicha subrutina la que tiene
que discernir cual de los dos flags ha generado la interrupcion, y el bit debe ser puesto a 0
por software.
En el 8052, la interrupcion del Timer 2 viene generada por la funcion logica OR entre los
flags TF2 y EXF2. Ninguno de estos flags es borrado por hardware cuando se ha
vectorizado la subrutina de servicio de la interrupcion. De hecho, normalmente, es dicha
subrutina la que tiene que discernir cual de los dos flags ha generado la interrupcion, y el
bit debe ser puesto a 0 por software.
Todos aquellos bits que generan interrupciones pueden ser puestos a 1 o a 0 por software,
con el mismo resultado que si estos lo hubiesen sido por hardware. Es decir, las
interrupciones se pueden generar, y las pendientes cancelar, mediante software.
Cada una de las fuentes de interrupcion puede ser habilitada o deshabilitada
individualmente, por el hecho de poner a 1 o a 0 su bit correspondiente del Registro de
Funcion Especial IE (vease la figura 1.3.35). Notese que IE tambien contiene un bit de
prohibicion global (EA), el cual deshabilita todas las interrupciones a la vez.
Veamos el significado de cada uno de estos bits:
- EA : Deshabilita todas las interrupciones. Si EA 0 no se reconocera ninguna
interrupcion. Si EA 1, cada fuente de interrupcion es habilitada o prohibida
individualmente poniendo a 1 o a 0 su bit de habilitacion.
- X : Reservado.
- ET2 : Habilita o prohibe la interrupcion de desbordamiento o captura del Timer 2.
Si ET20, las interrupciones del Timer 2 estan prohibidas.
- ES : Habilita o prohibe la interrupcion del port serie. Si ES 0, las interrupciones
del port serie estan prohibidas.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
41
- ET1 : Habilita o prohibe la interrupcion de desbordamiento del Timer 1. Si ET10
la interrupcion del Timer 1 esta prohibida.
- EX1 : Habilita o prohibe la Interrupcion Externa 1. Si EX10 la Interrupcion
Externa 1 esta prohibida.
- ET0 : Habilita o prohibe la interrupcion de desbordamiento del Timer 0. Si ET00
la interrupcion del Timer 0 esta prohibida.
- EX0 : Habilita o prohibe la Interrupcion Externa 0 Si EX00 la Interrupcion
Externa 0 esta prohibida.
Estructura deI niveI de prioridad
Cada fuente de interrupcion tambien puede programarse individualmente a uno de los dos
niveles de prioridad mediante la puesta a 1 o a 0 de un bit del Registro de Funcion Especial
IP. (Ver figura 1.3.36). Una interrupcion de prioridad baja puede ser interrumpida por otra
de prioridad mas alta, pero no por otra de prioridad mas baja.
La interrupcion de prioridad mas alta no puede ser interrumpida por ninguna otra fuente de
interrupcion.
Veamos el significado de cada uno de estos bits:
- X : Reservado.
- X : Reservado.
- PT2 : Define el nivel de prioridad de interrupcion del Timer 2.
PT21 lo programa al nivel mas alto de prioridad.
- PS : Define el nivel de prioridad de interrupcion del Port serie.
PS1 lo programa al nivel mas alto de prioridad.
- PT1 : Define al nivel de prioridad de interrupcion del Timer 1.
PT11 lo programa al nivel mas alto de prioridad.
- PX1 : Define el nivel de prioridad de la interrupcion Externa 1.
PX11 la programa al nivel mas alto de prioridad.
- PT0 : Define el nivel de prioridad de interrupcion del Timer 0.
PT01 lo programa al nivel mas alto de prioridad.
- PX0 : Define el nivel de prioridad de la interrupcion Externa 0.
PX01 la programa al nivel mas alto de prioridad.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
42
Si se reciben simultaneamente dos peticiones de interrupcion de diferente nivel de
prioridad, sera atendida la peticion que tenga el nivel mas alto de prioridad. Si se reciben
simultaneamente dos peticiones de interrupcion del mismo nivel de prioridad, una
secuencia interna de escrutinio sera la que determinara que peticion ha de ser atendida. Asi.
con cada nivel de prioridad hay una segunda estructura de prioridades determinada por la
siguiente secuencia de escrutinio:
Notese que la estructura de 'prioridad sin nivel solamente se utiliza para resolver
peticiones simultaneas del mismo nivel de prioridad.
Tratamiento de Ias interrupciones
Los flags de las interrupciones se muestrean en el S5P2 de cada ciclo maquina. Los
muestreos se consultan durante el siguiente ciclo maquina. Si uno de los flags hubiera
estado en condicion activa en el S5P2 del ciclo precedente, el ciclo de consulta la
encontrara y el sistema de interrupciones generara una LCALL a la subrutina de servicio
apropiada, siempre que esta LCALL generada por hardware no sea bloqueada por alguna de
las condiciones siguientes:
1. Que se este ejecutando una interrupcion de igual o mas alto nivel de prioridad.
2. Que el ciclo actual no sea el ultimo de la instruccion que se esta ejecutando.
3. Que la instruccion que se esta ejecutando sea una RETI o cualquier acceso a los
registros IE o IP.
Cualquiera de estas tres condiciones puede bloquear la generacion de instruccion LCALL
de llamada a la subrutina de servicio de la interrupcion. La segunda condicion asegura que
se finalice la instruccion que se esta ejecutando antes de que se vectorice la subrutina de
servicio. La tercera condicion asegura que si la instruccion en curso es una RETI o
cualquier acceso a IE o IP, entonces se ejecutara una instruccion mas antes de vectorizar la
subrutina de servicio.
Fig. 1.3.37 Diagrama de tiempo de la respuesta de una interrupcion.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
43
El ciclo de consulta se repite en cada ciclo maquina, y los valores consultados son aquellos
que estaban presentes en el S5P2 del ciclo maquina precedente. Notese que si un flag de
interrupcion es activo pero no se responde debido a una de las condiciones anteriores, si
este no esta todavia activo cuando la condicion de bloqueo desaparece, la interrupcion
denegada no sera servida. En otras palabras, el hecho de que un flag de interrupcion este
activo pero no sea servido, no es una condicion memorizada. Cada ciclo de consulta es
nuevo.
El ciclo de consulta y secuencia LCALL se muestra en la figura 1.3.37.
Notese que si una interrupcion de mas alta prioridad pasa a ser activa antes del S5P2 del
ciclo maquina llamado C3, entonces, de acuerdo con las reglas anteriores, esta se
vectorizara durante C5 y C6, sin que se ejecute ninguna instruccion de la subrutina de
prioridad mas baja.
Asi, el procesador reconoce la peticion de interrupcion ejecutando una instruccion LCALL,
generada por hardware, a la subrutina de servicio apropiada. En algunos casos, esta tambien
pone a cero el flag que ha generado la interrupcion, y en otros casos no lo hace. Nunca lo
hace con los flags del Port serie y con los del timer 2, que deben ponerse a 0 por el
programa del usuario. La vectorizacion de la subrutina pone a 0 el flag externo de
interrupcion (IE0 o IE1) solamente si la interrupcion es activada por flancos.
La instruccion LCALL guarda el contenido del Contador de Programa en el Stack (pero no
guarda el PSW) y recarga el PC con una direccion que depende de la fuente de interrupcion
como se muestra a continuacion:
La ejecucion de la subrutina empieza en esta direccion hasta que se encuentra una
instruccion RETI. La instruccion RETI informa al procesador que su subrutina de
interrupcion ha finalizado. Entonces recupera los dos bytes del stack y recarga el Contador
de Programa. La ejecucion del programa continua en donde se habia dejado. Notese que
una instruccion RET tambien realizara el retorno a la ejecucion del programa que se habia
interrumpido, pero dejara al sistema de control de interrupciones pensando que todavia se
esta atendiendo a una interrupcion.
Interrupciones externas
Las fuentes externas de interrupcion pueden programarse para que sean activadas por nivel
o activas por flancos, mediante la puesta a 1 o a 0 del bit IT1 o IT0 del registro TCON. Si
Itx 0, la interrupcion externa x se dispara cuando se detecta un nivel bajo en el pin INTx.
Si Itx 1, la interrupcion externa x se dispara por flanco. En este modo, si sucesivos
muestreos del pin ITx ven un 1 en un ciclo y un 0 en el ciclo siguiente, el flag de peticion
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
44
de interrupcion IEx del registro TCON se pondra a 1. Entonces, el bit IEx, generara una
peticion de interrupcion.
Debido a que los pins de las interrupciones externas se muestrean una vez cada ciclo
maquina, una entrada a nivel alto o bajo debe permanecer estable al menos 12 periodos del
oscilador para asegurar el muestreo. Si la interrupcion externa esta activada por flancos, la
fuente externa debe mantener el pin a nivel alto por lo menos un ciclo, y despues
mantenerlo a nivel bajo por lo menos otro ciclo para asegurar que se pueda ver la transicion
y, por tanto, que el flag Iex se ponga a 1.
La CPU pondra automaticamente a 0 el flag Iex cuando se llame a la subrutina de servicio.
Si la interrupcion externa esta activada por nivel, la fuente externa debe mantener la
peticion activa hasta que se genere la interrupcion.
Entonces esta tiene que desactivar la peticion antes de que acabe la subrutina de servicio de
la interrupcion, o se generara otra interrupcion.
Tiempos de respuesta
Los niveles de INT0` e INT1` son invertidos y latcheados en IE0 e IE1 en el S5P2 de cada
ciclo maquina. Los valores no se consultan hasta el siguiente ciclo maquina. Si se activa
una peticion y las condiciones son correctas para que se reconozca, la siguiente instruccion
que se ejecutara sera la de subrutina de servicio de interrupcion vectorizada por una
llamada de hardware . La llamada dura dos ciclos. De esta manera, entre la activacion de la
fuente externa de interrupcion y la ejecucion de la primera instruccion de la subrutina de
servicio de interrupcion pasan un minimo de tres ciclos maquina completos.
La figura 1.3.37 nos muestra el diagrama de tiempo de la respuesta a una interrupcion.
Puede suceder que el tiempo de respuesta sea mas largo si la peticion es bloqueada por
alguna de las tres condiciones citadas anteriormente. si se esta realizando la atencion a una
interrupcion de igual o mas alta prioridad, el tiempo de espera adicional, obviamente
dependera de la naturaleza de la subrutina que se esta realizando. Si la instruccion que se
esta ejecutando no esta en su ultimo ciclo, el tiempo de espera adicional no puede ser de
mas de tres ciclo, ya que, las instrucciones mas largas (MUL y DIV) solamente tienen 4
ciclos, y si la instruccion que se esta realizando es una RETI o acceso a IE o IP, el
tiempo de espera adicional no puede ser de mas de 5 ciclos (un maximo de 1 ciclo mas para
completar la instruccion en curso, mas 4 ciclos para ejecutar la siguiente instruccion si esta
es MUL o DIV). Asi, en un sistema simple de interrupciones, el tiempo de respuesta es
siempre mas de 3 ciclos y menos de 8 ciclos.
Modos de funcionamiento de Ia aIimentacin/retencin de
datos
Para las aplicaciones en las que le consumo es un factor critico, las versiones HMOS y
CHMOS tienen un modo de funcionamiento de reduccion de consumo. Para las versiones
CHMOS del 8051, la reduccion de consumo, el estado de no operacion (IDLE MODE) y la
reduccion de la tension de alimentacion (POWER DOWN MODE), son caracteristicas
estandar. En las versiones HMOS se puede conseguir una reduccion del consumo, pero no
es una caracteristica estandar.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
45
Reduccin de Ia aIimentacin para versiones HMOS
La reduccion de la tension de alimentacion (POWER DOWN MODE) para los dispositivos
HMOS nos permite reducir VCC a cero, salvando la informacion de la RAM interna
gracias a un circuito de control de alimentacion conectado al pin RST. Para utilizar esta
caracteristica, el sistema del usuario, despues de detectar que es inminente un fallo de la
alimentacion debe interrumpir al procesador para hacer que este guarde los datos mas
importantes en las RAM interna y habilite la tension de alimentacion de mantenimiento a
traves del pin RST antes de que VCC caiga por debajo de los limites permitido de
operacion. Cuando vuelva la alimentacion, la alimentacion de mantenimiento ha de
mantenerse un tiempo hasta que se realice el reset, y entonces puede activarse y continuar
el modo normal de funcionamiento.
Reduccin deI consumo para versiones CHMOS
Las versiones CHMOS tienen dos modos de reduccion de consumo, el estado de no
operacion (IDLE MODE) y la reduccion de la tension de alimentacion (POWER DOWN
MODE). La entrada por la cual se alimenta la tension de mantenimiento durante estas
operaciones es VCC. En la figura 1.3.38 se muestra la circuiteria interna que implementa
estas caracteristicas. En el modo de no operacion (IDL 1), el oscilador continua
funcionando y los bloques de interrupciones, Port serie y Timers quedan bloqueados, pero
la seal de reloj sale hacia la CP. En el modo de reduccion de la tension de alimentacion
(PD 1), el oscilador se para. Estos modos se activan mediante la puesta a 1 de unos bits
del Registro de Funcion Especial PCON, cuya direccion es la 87H y su contenido es
mostrado en la figura 1.3.39.
Fig. 1.3.38 Hardware de los modos 'IDLE' v 'POhER DOhN'.
MODO DE NO OPERACION (IDLE MODE)
Una instruccion que ponga a 1 el bit IDL del registro PCON hace que esta sea la ultima
instruccion ejecutada antes de pasar al modo de no operacion. En este modo, el reloj interno
pasa a la CPU, pero no lo hacen las funciones de Interrupcion, Port serie y Timers. El
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
46
estado de la CPU se conserva en su totalidad: el Stack Pointer, el Contador de Programa, el
PSW, el Acumulador, y todos los demas registros conservan los datos que tenian. Los pins
de los ports mantienen los estados logicos que tenian en el momento de activarse este
modo. Las seales ALE y PSEN se mantienen a estado logico uno.
Hay dos maneras de finalizar este modo de operacion. La activacion de cualquier
interrupcion habilitada hace que el bit IDL se ponga a 0 por hardware y termine este modo
de funcionamiento. La interrupcion sera atendida por su subrutina de servicio, y la
instruccion siguiente a la instruccion RETI sera la siguiente a aquella que puso al
dispositivo en modo de no operacion. Los bits GF0 y GF1 de PCON se pueden utilizar para
dar una indicacion de que ha ocurrido una interrupcion durante el modo normal de
funcionamiento o durante el modo de no operacion. Por ejemplo, una instruccion que active
este modo tambien puede poner a 1 uno de estos bits o ambos. Cuando una interrupcion
hace que finalice este modo de funcionamiento, la subrutina de servicio de la interrupcion
puede examinar estos bits. La otra manera de terminar este modo es con un reset por
hardware. Debido a que el reloj esta en funcionamiento, el reset necesita estar activo
durante dos ciclos maquina (24 periodos del oscilador) para que se complete.
Fig. 1.3.39 Registro PCON.
Veamos el significado de cada uno de estos bits:
- SMOD : Bit para doblar el baud rate. Cuando esta a 1, el baud rate se dobla cuando
el Port serie se utiliza en los modos 1, 2 o 3.
- X : Reservado.
- X : Reservado.
- X : Reservado.
- GF1 : Bit de proposito general.
- GF0 : Bit de proposito general.
- PD : Bit de la reduccion de la tension de alimentacion (POWER DOWN). Poniendo
a 1 este bit, se activa este modo de operacion.
- IDL : Bit de seleccion del modo de no operacion (IDLE).
Poniendo a 1 este bit, se activa este modo.
ESTRUCTURA INTERNA DE LA FAMILIA MCS-51.
German Pereira Muoz
ICEI Instituto de Capacitacion en Electronica e Informatica
47
Nota: Si se escriben simultaneamente unos en PD e IDL, el bit PD
es el que tiene preferencia.
MODO DE REDUCCION DE LA ALIMENTACION (POWER DOWN MODE)
Una instruccion que ponga a 1 el bit PD del registro PCON hace que esta ultima instruccion
ejecutada antes de pasar al modo de reduccion de la tension de alimentacion. En este modo,
el oscilador interno se para. Con el reloj parado, se paran todas las funciones, pero se
mantiene la informacion de la RAM interna y de los Registros de Funcion Especial. Los
pins de los ports sacan los valores se sus respectivos SFR. Las salidas ALE y PSEN sacan
ceros.
La unica forma de salir de este modo es a traves de un reset por hardware. El reset redefine
todos los SFR, pero no cambia la informacion de la RAM interna.
En este modo, VCC se puede reducir para minimizar el consumo. Sin embargo, se debe
tener cuidado de asegurar que VCC no se reduzca antes de llamar a este modo y que VCC
se restablezca a su nivel normal antes de terminarse este tipo de operacion. El reset que
finaliza la reduccion de la alimentacion tambien pone en marcha el oscilador. El reset no
debe activarse antes de que se restablezca VCC a su nivel normal, y debe mantenerse activo
el suficiente tiempo para permitir que el oscilador se ponga en marcha y se estabilice
(normalmente menos de 10ms).

You might also like