296

LE002-Introduccion a Los Microcontroladores

Embed Size (px)

Citation preview

Page 1: LE002-Introduccion a Los Microcontroladores
Page 2: LE002-Introduccion a Los Microcontroladores

CAPITULO

La familia 51

1.1. CARACTERISTICAS DE LA FAMILIA 51

Si el lector desconoce las familias de microcontroladores de INTEL, debe leer el Apén-dice, A, situado al final del libro, para tener una visión de conjunto y situarse en el con-texto en el que se ha realizado el siguiente trabajo.

Dentro de los modelos de la familia 5 1 de microcontroladores (Tabla 1.1) se encuen-tran los 8XX2 y 8XX 1, que presentan las siguientes diferencias básicas:

??8032/3 1 + Memoria de programas externa.?? 8052/5 1 + Memoria de programas interna en ROM.??8752/5 1 + Memoria de programas interna en EPROM.

Tabla 1.1.

Los modelos más populares de los microcontroladores de INTEL son los 8XXl ymás concretamente los 8X5 1, que han dado nombre a la familia. Las diferencias entrela serie 8XX 1 y 8XX2 y en concreto, entre los 805 1 y 8052 aparecen en la Figura 1.1.

Como habrá observado, el 8052 presenta una mayor capacidad de memoria y un Ti-mer más que el 805 1 *, al margen de dichas diferencias y de otras que resultan de éstas,se puede afirmar «que todo programa que funcione en un 805 1 lo hará en un 8052~; *pero no siempre se puede decir lo mismo si se intercambian los nombres de los dispo-

* En este libro, cuanto se indique y diga respecto al 8052/805 1 vale también para el 8752/875 1.

1

Page 3: LE002-Introduccion a Los Microcontroladores

2 Introducción a los Microcontroladores

Direcciones/Datosi A \PO P2 Pl P3 l l

7 CONTROL /,&-&i&&ij~.EntradasContador

RXD TXD”

7 Interrupciones externas

Figura 1.1.

sitivos en la frase. No obstante, el lector debe estar tranquilo, pues se matizarán las di-ferencias, y al final del libro reconocerá perfectamente las características de uno y otrodispositivo.

1.2. CARACTERISTICAS DE LOS MICROCÓNTROLADORES 8052/8051

La anterior Figura 1.1 y, de una forma exhaustiva para comenzar, la Figura3.2, mues-tran los diagramas generales en bloques de los Microcontroladores 8052/805 1.

Las características generales son las siguientes:

??CPU de 8 bits.??Procesador booleano (operación sobre bits).?? 4 puertos de 8 bits.?? Para el 8052,256 bytes de memona interna RAM útil para el usuario y 384 bytes

en total considerando el área de los registros especiales (SFR). Para el 805 1, 128bytes útiles para el usuario y 256 bytes incluyendo el SFR.

??8 Koctetos de ROM (8052) o EPROM (8752). 4K para el 8X5 1.??Espacio de memoria de 64K para programa externo.??Espacio de memoria de 64K para datos externos.??El 8052 contiene tres contadores-temporizadores (timen). El 805 1 presenta dos ti-

mers.??Comunicación asíncrona full-duplex.??6 fuentes de interrupciones con niveles de prioridad (5 para el 805 1).

Page 4: LE002-Introduccion a Los Microcontroladores

3

DRIVERS

L~--~~--~~~~--- w-------------------PUERTO 3- - - - J

*Residente solo en el 8052P1.0-P1.7 P3.0-P3.7

Figura 1.2.

- 2 interrupciones externas.- 3 interrupciones de los timers (2 para el 805 1).- 1 interrupción de la comunicación serie.

??Oscilador interno.

1.3. PATILLAJE DE LOS MICROCONTROLADORES 8052/8051\!

En la, Figura 1.3. se procede a una breve identificación de los pines de losMicrocontroladores 8052/805 1, según los formatos de presentación pin DIP y pin PLCC.

Elvcc : Alimentación positiva de +5 voltios.

IIIvss : Conexión a tierra (0 voltios).

Page 5: LE002-Introduccion a Los Microcontroladores

<” Introducción a los Microcontroladores

P1.0lz 1 ” 403VccP1.l c 2 39 3 PO.O (AD0)Pl2C 3 38 , P0.1 (ADl)P1.3 c 4 37 7 PO 2 (AD2)P1.4 c 5 3 6 , P0.3 (AD3)P15c6 35 3 P0.4 (AD4)Pi.6 c 7 34 3 P0.5 (AIE)

P1.7 c 0 33 3 P0.6 (ADô)

RESET c 9 6751BH 32 3 P0.7 (AD7)(RXD) P3.0 C 10 3 1 3 EA/wp*(TXD) P3.lC 11 30 II ALE/PROG -*

:ii% P3.2 4 12 29 II P S E N

$Ei) P3.3 c 13 26 , P2.7 (A15)

(T(D) P3.4 C 14 27 3 P2.6 (A14)

(Tl) P3.5 c 15 26 3 P2.5 (A13)

(6) P3.6 c 16 25 2 P2.4 (Al?)

(66) P3.7 C 17 24 II P2.3 (All)

XTALZ C 18 23 7 P2.8 (Al0)

XTALi C 19 22 3 P2.1 (Ag)

vss c 20 2 1 3 P Z . O (A6)

P0.4 (AD4)

36 P0.5 (AD5)37 P 0 . 6 ( A D 6 )38 P0.7 (AD7)

6 7 5 1 B H

(TXD) P3 .1 13(imi) P 3 . 2 14

4

(INT1) P3.3 15

(TQ) P3.4 16

DIP+ S o l a m e n t e E P R O M

P 0.4 (AD4)

P 1 . 6P 1 . 7

(RXD) Pt:

(TXD) Pi?(i@%%) P3.2(mi) P3.3

( T O ) P 3 . 4(Tl) P3.5

‘PLCC

Figura 1.3.DIP = Dual in Line PackagePLCC = Plastic Leaded Chip Camier

Page 6: LE002-Introduccion a Los Microcontroladores

La familia 51 5

PORTs o PUERTOS : Los Microcontroladores 8052/805 1 tienen 4 puertos de 8bits bidireccionales (PO, Pl, P2 y P3). Esto quiere decir que’pueden programarse comoentrada o salida.

Como salida los drivers del Puerto 0 pueden soportar una cargabilidad, es decir, unnúmero de entradas aplicadas a sus pines de salida, de 8 cargas TTL-LS, el resto de lospuertos sólo admiten 4 cargas TTL-LS.

Para que los puertos actúen como entradas de alta impedancia, es preciso escribir enlos Zatch de cada pin un nivel de tensión alto (+5v), es decir un «l». Este punto se estu-diará más adelante.

Además de este comportamiento como puertos de E/S para enviar o recibir infor-mación de los periféricos, éstos están capacitados para realizar las siguientes funciones:

1 PuertoO(P0) 1: Multiplexa en el tiempo por sus 8 líneas la parte baja del bus dedirecciones durante el acceso a la memoria externa de programas y datos, y el bus dedatos.

El Puerto 0 también recibe los bytes de código durante la programación de la me-moria EPROM integrada y salen a través de él los bytes de código durante la verificaciónde la memoria EPROM o ROM (Figura 1.4 A).

1 Puerto 1 (Pl) 1: El Puerto 1 también recibe la parte baja de direcciones, durante laprogramación y verificación de la memoria EPROM (Figura& .7 y 1.9).‘1:

I

Los bits PV .O y Pl . 1 tienen otra función especial, sólo para el Microcontrolador 8052(Tabla 1.2).

Tabla 1.2.”

PI.0P1.l

T2 (Timer/Contador 2. Entrada externa)T2EX (Timer/Contador 2. Captura e impulso de recarga)

* Véase Figura 1.4 C).

1 Puerto 2 (P2) 1: El Puerto 2 emite la parte alta del bus de direcciones en los accesosde memoria externa (memoria de programa) cuando utilizan 16 bits de dirección y enlos accesos a la memoria de datos que usa también 16 bits de dirección (MOVX @DPTR).Durante el acceso a la memoria de datos externa con direccionamiento de 8 bits (MOVX@Ri), los pines del Puerto 2 emiten el contenido del registro P2 del SFR (Special Func-tion Register) (véase Figura 1.4 B).

El Puerto 2 recibe la parte alta de la dirección, durante la programación y verifica-ción de la memoria EPROM (Figuras 1.7 y 1.9).

Page 7: LE002-Introduccion a Los Microcontroladores

6 Introducción a los Microcontroladores

1 Puerto 3 (P3)] : Este puerto tiene otras funciones especiales, como se muestra enla Tabla 1.3. .

Tabla 1.3.

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

RXD (Entrada puerto serie)TXD (Salida puerto serie)INTO (Interrupción 0. Externa) *INTI (Interrupción 1. Externa)TO (Entrada externa. Timer 0)T 1 (Entrada externa. Timo 1)WR (Autorización escritura en memoria de datos externa)RD (Autorización lectura en memoria de datos externa)

En la Figura 1.4 se muestran los dispositivos de entrada/salida por bit de los Micro-controladores 8052/8051. Como se ha dicho son bidireccionales y contienen un latch,un driver de salida y un buffer de entrada. Es interesante observar que el Puerto 0 y elPuerto 2 presentan una lógica adicional formada por un conmutador que permite selec-cionar, bien la operación sobre el bus de direcciones/datos del microcontrolador o bienla entrada/salida de datos del periférico.

El Puerto 0 puede adoptar el estado de alta impedancia (triestado) por la dispo-sición de los transistores en estado de no conducción, mientras que en los otros trespuertos, en estado de reposo, la salida toma el valor alto a través de la resistencia de carga(pu&up) integrada. En cualquier caso, el latch memoriza la información de entrada osalida. En la operación de lectura, el latch debe cargarse con un nivel alto (l), para queel transistor MOS inferior permanezca en estado de no conducción y de esta forma ob-tener la impedancia elevada de entrada antes referida. En el Capítulo 8 se ampliará lainformación sobre los mismos.

: ALE (Address Latch Enable) es un pulso que emite el microcontro-lador para enclavar el «byte bajo» del bus de direcciones en el acceso a la memoria ex-terna. ALE se emite con una frecuencia de 1/6 de la frecuencia de emisión del reloj.

PROG es la patilla de entrada de pulsos de programación de la memoria EPROM.

: PSEN (Program Store Enable) es la señal ‘de strobe para leer e? la me-moria de «programa externo». La memoria externa tiene dos modalidades, de «pro-grama» y de «datos». Para diferenciarlas, utiliza la señal PSEN. PSEN no se activa cuandose está ejecutando el programa de la ROM o EPROM interna.

: EA (External Access), cuando se mantiene a nivel alto, se ejecuta sóloel programa de la «ROM interna», a menos que el contador de programa exceda de 1FFF

Page 8: LE002-Introduccion a Los Microcontroladores

DIREC/DATOg C;ONTROL v;CDIRECCIONES

Lectura e nel LATCH

Pin d e Pin d eLECTURA LECTURA

A) Pin del PUERTO 0 (PO.X) B) Pin del PUERTO 2 (P2.X)

Lectura en VCCel LATCH

BUSINTERNO

PULL-UPINTERNA

LATCHf’ CL Q’

Escribe ene l IATCH

Pin d eLECTURA

Funcion alternativade SALIDA

Pin d eLECTURA Funcion alternativa

de ENTRADA

C) Pin del PUERTO 1 (P1.X) _ D) Pin del PUERTO 3 (P3.X)

Figura 1.4.

(8K) para el 8052 y de OFFF (4K) para el 8051. Si EA se mantiene a nivel bajo, se eje-cuta el programa de la «memoria externa», independientemente de la dirección del pro-grama.

Es decir: EA = 1 actúa como microcontrolador.EA = 0 actúa como microprocesador.

VPP es la tensión de programación de la EPROM.

?T 2 : Entrada externa del temporizador/contador (Timer 2) (sólo para el 8052).

: Captura y recarga de disparo (Timer 2) (para el 8052).

Page 9: LE002-Introduccion a Los Microcontroladores

8 Introducción a los Microcontroladores

ElRXD : Comúnmente (según modos) entrada del puerto serie.

ElTXD : Comúnmente (según modos) salida del puerto serie.

: Entrada de la interrupción externa 0.

pÑq: Entrada de la interrupción externa 1.

: Entrada externa del temporizador/contador (Timer 0).

: Entrada externa del temporizador/contador (Timer 1).

ITIWR : Señal de escritura para dispositivos externos.

: Señal de lectura para dispositivos externos.

XTALI y XTAL2 : XTALI y XTAL2 son la entrada y la salida, respectiva-mente, de un amplificador inversor &e puede ser configurado para su uso como un chiposcilador (Figura 1.5). Se puede utilizar indistintamente un cristal de cuarzo o un reso-nador cerámico.

XTALB

XTALl

Cl,C2=30pF+/-10pF para CristalesCl,C2=40pF+/-10pF para Resonadores Ceramicos

Figura 1.5.

Page 10: LE002-Introduccion a Los Microcontroladores

La familia 51 9

Para que el microcontrolador sea conducido por un reloj externo, se debe conectarla entrada de reloj como se indica a continuación (Figura 1.6).

SeñalExterna

de Oscilador61 XTAL2

<> XTAL 1

Figura 1.6.

1 RESET 1 : Señal de inicialización del sistema. Un reset interno al sistema se pro-duce cuando se pone el pin RST=RESET a nivel alto durante un cierto tiempo (paramás información, véase Apartado 2.7 del Capítulo 2).

1.4. CARACTERISTICAS DE LAS MEMORIAS EPROMINTEGRADAS EN LOS MICROCONTROLADORES 8752/8751

1.4.1. Introducción

En la familia 51 se consideran que llevan memoria EPROM aquellos microcontrolado-res que en su número de identificación incorporan la cifra 7 en el lugar que ocupan lascentenas. Así, en nuestros dispositivos objeto de estudio el 8752 y el 87.5 1 llevan me-moria EPROM de 8Kbytes y 4Kbytes, respectivamente.

. El 875 1 se programa a una tensión VPP=21V, con unos pulsos de 50 milisegundos,por byte a través de la línea PROG. Considerando que el 875 1 tiene 4Kbytes de me-moria, resulta en total un tiempo de programación de 4 minutos, y el 8752 de 8 minutos,puesto que tiene una memoria EPROM con el doble de capacidad.

El microcontrolador 8752BH y el 87C51 usan el algoritmo de programación«QUICK-PULSE», que permite programar estos dispositivos con una tensión deVPP=12.75 V y una serie de 25 pulsos de 100 microsegundos por cada byte programadopor la línea PROG. Esto implica un tiempo de programación total de 26 segundos, apro-ximadamente, para el 8752BH (8K) y de 13 segundos para 87C5 1 (4K).

Page 11: LE002-Introduccion a Los Microcontroladores

1 0 Introducción a los Microcontroladores

1.4.2. Programación de la EPROM

La Figura 1.7 muestra el montaje para programar las EPROMS de los modelos de Mi-crocontroladores 8752/875 1 indicados en el apartado anterior.

Direcciones

RST 6752XTALZ

4 - 6 MHzi

XTAL 1VSS

-l-i____--

vcc -lP O

EA4 ZQVPP

A L E t ALE/PROG

Lineas deConfiguracion(Ver Tabla 1.3)

P S E N-

Figura 1.7

:&Las operaciones que han de efectuarse son las siguientes:

??Aplicar una señal de reloj entre 4 y 6 MHz a los pines XTALI y XTAL2.?? Direccionar las posmem* de la EPROM donde va a ser grabada la información.

Para ello se utilizan el Puerto PI y los pines P2.0 a P2.4 del Puerto P2.9 :Aplicar a los pines de control los niveles de tensión indicados en la Tabla 1.4.?? %kponer la información a grabar en el Puerto PO.??Enviar los pulsos de programación a través del pin ALE/PROG.??Aplicar al pin EA/Vpp una tensión que oscila entre +5v y la tensión de prqgra-

mación VPP (Tabla 1.4).

* Posmem se refiere, de una forma resumida, a posición/es de memoria.

Page 12: LE002-Introduccion a Los Microcontroladores

La familia 51 ll

Tabla 1.4.

Blts cerrojo (LBx)

NOTAS:1 = Pin a nivel alto.0 = Pin a nivel bajo. -VPP = +12,75v f 0,25v.* ALE/PROG se pone a nivel bajo durante 100 ps 25 veces (25 pulsos).

En la Figura 1.8 se representan los cronogramas de las operaciones descritas en laprogramación y los de la verificación que se estudian a continuación.

Pl.0-P1.7P2.0-P2.4

PROGRAMACION VERIFICACION

PUERTO 0 -\DATA OUT

ALE/PROG

EA/vpp

Figura 1.8.

Page 13: LE002-Introduccion a Los Microcontroladores

12 Introducción a los Microcontroladores

1.4.3. Verificación de los Datos Programados

Siempre que el sistema de protección de lectura de la memoria EPROM no haya sidoactivado, el programa grabado en la EPROM podrá ser leído con diversos propósitos,como puede ser la verificación del programa durante o después de la programación. Enla Figura 1.9 se muestra el esquema de conexionado para esta operación.

l P +5v

DireccionesI RESISTENCIAS

1 OK ” PULLUPS”

PO-EA

Nivel AltoNivel Alto b RST 6752 ALE

XTAL2 P2.6 4,-, P2.7 t Lineas de

4 - 6 MHzU P3.6 4 Configuracion

A P3.7 4 (Ver Tabla 1.3)XTALl ___VSS P S E N

- -- -T

Figura 1.9.

Las direcciones de localización de la información en la memoria son aplicadas alpuerto 1 (Pl) y pines P2.0 a P2.4 (como en la fase de programación). Los otros pinesserán llevados a los niveles de tensión indicados en la Tabla 1.4.

Los contenidos de las direcciones de localización salen por el Puerto 0 (es necesariocolocar resistencias pull-ups a la salida de estas líneas). En la Figura 1.8 se dibuja el cro-nograma correspondiente a la operación de verificación.

Si la cadena de encriptación ha sido programada y los bits cerrojo no están pro-gramados, los datos presentes en el Puerto 0 (PO) serán datos wriptografiadow se-gún la operación lógica XNOR, entre los códigos de datos y la cadena de encrip-tación.

El usuario debe conocer la cadena de encriptación para «desencriptar» los da-tos, durante la operación de verificación.

A este aspecto se refieren los siguientes apartados.

Page 14: LE002-Introduccion a Los Microcontroladores

La familia 51 1 3

1.4.4. Sistemas de protección de la información en la EPROM

Para proteger el programa grabado en la EPROM contra el intrusismo se han establecidodos niveles de protección consistentes, el primero, en una cadena de encriptación(encryption array) y, el segundo, en dos bits cerrojo (lock bits). La siguiente descripciónes aplicable al 8752/875 1. Se dispone de la misma opción para el 8052/805 1, pero pro-gramada en fábrica.

W Nivel 1 de protección: Cadena de encriptación

Dentro de la memoria EPROM hay 32 bytes que forman la cadena de encriptación, queinicialmente está desprogramado. Cada vez que un byte es direccionado durante la ve-rificación, se utilizan 5 líneas de dirección para seleccionar un byte de la cadena de en-criptación. Este byte es sometido a la operación lógica XNOR con el código byte de in-formación creando un byte encriptado. Si la cadena de encriptación está desprogramada(todos los bits a UNO), al efectuar la operación XNOR con el dato éste no resultará mo-dificado y podrá ser leído fácilmente.

? Nivel 2 de protección: Bits cerrojo

También en el chip hay dos bits cerrojo que pueden ser programados (P) o desprogra-mados (D) para obtener los resultados que se indican en la siguiente tabla de caracterís-ticas (Tabla 1.5).

Tabla 1.5.

D D < Funcionamiento sin protección.

D P < No se permite acceder externamente a los códigos de la memoria

I \ de programa interno.

I < Además no permite ser programada.

P P < Externamente no puede accederse a la información de la memo-ria interna de programas.

-C No permite ser programada.

< Además no permite la verificación del programa.

Al borrar la EPROM también se borra la cadena de encriptación y los bits cerrojo, loque permite al usuario una nueva reprogramación.

Cuando se programa el bit cerrojo 1 el nivel lógico en el pin i% es muestreado y lat-cheado durante el RESET. Si el microcontrolador se pone a tensión sin RESET, el latchinicializa un valor aleatorio y mantiene dicho valor hasta que la señal reset sea activada.Es necesario que el valor latcheado de EA esté de acuerdo con el nivel lógico externo deese pin, para que el dispositivo funcione normalmente.

Page 15: LE002-Introduccion a Los Microcontroladores

14 Introducción a los Microcontroladores

1.45 Borrado de la información en la EPROM

El borrado de la EPROM se produce cuando el microcontrolador es expuesto a una luzcon una longitud de onda corta entre 2.000 y 4.000 Angstroms. La exposición ala luz del sol y a la luz artificial de un tubo fluorescente, que tienen longitudes de ondadentro de este rango, durante un tiempo prolongado (alrededor de una semana para laluz del sol o tres años a un nivel bajo de luz fluorescente) pueden causar el borrado ac-cidental de la memoria EPROM. Se recomienda que se coloque una etiqueta opaca enla ventana que, al mismo tiempo que protege de la luz, sirva para identificar el pro-grama, la versión y la fecha de su grabación.

Para proceder al borrado de la EPROM, por parte del usuario, se recomienda su ex-posición a la luz de una lámpara ultravioleta (2.537 Angstroms) de 12.000 uW/cm2, du-rante 20 o 30 minutos, a una distancia de la ventana de la EPROM de 2 a 3 centímetros.

El borrado de la EPROM deja la cadena de bits a UNO.

2. Observar la Figura 1.2 ;.El registro T2CON

Presentar dist intos modelos de apl icacio-nes para que el estudiante elija el micro-controlador óptimo. Así en una aplica-ción para implementar en 50 unidades defabricación, 25Kbytes de programa y 25bytes de RAM (variables que se uti l izan)y sin l imitaciones de consumo de energía,jsería rentable utilizar el Microcontrola-dor 805 l? Justificar la respuesta.

3.

4.

5.

pertenece al Microcon~rolador 805 l? Jus-tificar la respuesta.

Si el 8052 tiene seis fuentes de interrup-ción y el 805 1 sólo cinco, jcuál es la quele fal ta a este últ imo?

A la vista del patillaje de los microcontro-ladores 8052 y 805 1 de la Figura 1.3, iquédiferencias se observan?

En la Figura 1.4 se ve la estructura de lospuertos de EJS. El Puerto 0 es uno de losmás complejos, puesto que actúa comobus de datos y direcciones, además depuerto de E/S. Explicar, desde el punto devista electrónico, el funcionamiento.

6.

7.

8.

9.

10.

Analizar según los siguientes modos detrabajo:

a) Lectura como bus de datos.b) Lectura como puerto de entrada.c) Escri tura como bus de datos.d) Escri tura como bus de direcciones.e) Escritura como puerto de entrada.

Explicar las diferencias de las señales ALE,PSEN y EA.

iPor qué se necesita una señal de reloj en-tre 4 y 6 MHz para programar laEPROM?

Explicar el funcionamiento de cada unode los puertos en las operaciones de gra-bación y verificación de la memoriaEPROM del microcontrolador.

iEntre qué valores de tensión oscila el pinEA/Vpp en la operación de programa-ción de la EPROM?

Señalar los dos niveles de protección de lainformación en la EPROM del microcon-trolador y en qué consiste dicha protec-ción.

Page 16: LE002-Introduccion a Los Microcontroladores

CAPITULO

Organización de la memoria enlos Microcontroladores8052,‘8051

2.1. MEMORIA DE PROGRAMAS Y DATOS

Los Microcontroladores 8052/805 1 * tienen separados los espacios de direcciones paramemoria de programas y memoria de datos (Figura 2.1).

MEMORIA DE PROGRAMA(SOLO DE LECTURA)

---------------_

PSEN

MEMORIA DE DATOS@~TURA/ESCRITURA)

FFFFH.FFFFH. IIllIIll

EXTERNA-EXTERNA- ,,ll//

TT 7 17 1ll

--RD WR

Figura 2.1.

* En este capítulo el lector debe saber que todo lo que se diga para el 8052 es aplicable para el 805 1 con-siderando la limitación de la memoria tanto de programas como de datos, como ya se indicó en el Capítulo 1.

15

Page 17: LE002-Introduccion a Los Microcontroladores

1 6 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

La memoria de programas sólo puede ser leída y tiene como máximo 64K.En el 8052 la memoria de programas interna es de 8K y en el 805 1 de 4K.La señal de autorización de lectura en la memoria de programas externa es PSEN.El pin EA del Microcontrolador 8052 puesto a VCC indica que el puntero de pro-

grama busca direcciones desde la posición de memoria~0000H hasta la 1 FFFH de la me-moria interna y de la 2000H a la FFFFH de la memoria externa y en el 805 1 busca enla memoria interna de la posmem OOOH hasta OFFFH y en la externa de la 1000H a laFFFFH. Si el pin EA es puesto a VSS, la búsqueda de direcciones del programa se dirigea la memoria externa en todo momento.

La memoria de datos puede ocupar, si se desea, un espacio separado de la memoriade programas.

La memoria de datos admite operaciones de lectura y escritura y, como se puede veren la Figura 2.1, puede ser interna o externa y puede direccionar, como la memoria deprogramas, hasta 64K.

La CPU genera las señales RD (reud) y WR (write) para leer o escribir en la memoriade datos externa.

Como anteriormente se decía, la memoria de programa y la memoria de datos pue-den coexistir en el mismo espacio de direcciones o en espacios separados; en el primercaso se dice que la memoria es combinada y en el segundo segregada. La memoria com-- -binada se obtiene aplicando las señales RD y PSEN a una puerta lógica AND y utili-zando la salida de la puerta como strobe del chip de memoria externa de programas ydatos. En la Figura 2.2 se pueden observar gráficamente estos conceptos.

I I r l/ CPU l / CPU I

P R O G R A M A D A T O S P R O G R A M A Y D A T O S

MEMORIA SEGREGADA MEMORIA COMBINADA

Figura 2.2.

Page 18: LE002-Introduccion a Los Microcontroladores

Organización de la memoria en los Mio ocontroladores 8052/8051 17

2.2. MEMORIA DE PROGRAMAS

En la Figura 2.3, se observa la división de la memoria de programas, según se consideremixta (interna y externa) 0 completamente externa.

FFFF

MEM. EXTERNA64K BYTES

o bien _____) MEM. EXTERNA

MEM. INTERNAMEM. INTERNA00000000

Figura 2.3.

En la parte baja de la memoria de programas se encuentran ciertas posiciones de me-moria especiales para el tratamiento de las rutinas de interrupciones. En la Figura 2.4 seasignan las posiciones fijas de la vectorización de estas interrupciones, así la posición dememoria 0000 corresponde al RESET y el resto figura señalado al margen.

Como se puede observar en la Figura 2.4, el intervalo físico entre dos interrupcioneses de 8 bytes, espacio capaz para albergar una pequeña rutina, pero si éste no fuera su-ficiente se desviaría el contador de programa (PC) mediante una instrucción de salto(JMP) a una zona amplia de la memoria de programas capaz de contener dicha rutina.

Se ha dicho anteriormente que la memoria de programa puede ser interna (en el pro-pio microcontrolador) o externa (en otro chip). La selección se realiza por hardware, conla señal EA (Externa1 Access), poniendo este pin a VCC o a VSS respectivamente.

La configuración del hard para que el 8052/805 1, como microprocesador, utilice comomemoria de programa la memoria externa, se muestra en la Figura 2.5.

Se observa en la figura que las 16 líneas de dirección corresponden al Puerto 0 y alPuerto 2, que están dedicados al bus de direcciones; aun más, el Puerto PO sirve comobus de direcciones y bus de datos, multiplexados en el tiempo. Esta operación, caracte-rística de la familia de «micros» de Intel, se realiza de la forma siguiente:

- El Puerto PO emite el «byte bajo» de la «palabra» del contador de programa (PCL).Una vez estabilizada la señal sobre PO, la señal ALE (Address Latch Enable) in-troduce esta dirección dentro del dispositivo latch 74LS373, que pasa a apuntar la

Page 19: LE002-Introduccion a Los Microcontroladores

1 8 Introducción a los Microcontroladores

,lFFFH (OFFFH para el 8051(En el caso de util izar me-moria interna)

IIII

Flag que seactivan

1I I

TF2 Y EXFZ +¡002BH del TIMER 2

RI Y TI 0023H __. PUERTO SERIE

TFl 00lBH t<. T I M E R 1

IEl .0013H __. EXTERIOR 1

T F O OOOBH TIMER 0

IE 0003H .__ EXTERIOR 0

RESET OOOOH

Figura 2.4.

r_ EPROMEPROM

INSTR.INSTR

?\ D I R E C .D I R E C .

P 2P 2

8052/5 1

A L E

P3 PSEN b OE

EA-l

Figura 2.5.

dirección en la memoria externa de programas. Al mismo tiempo que el micro-controlador emite el PCL por PO, la parte alta del contador de programa (PCH)se emite por P2. Entonces PSEN autoriza la lectura al microcontrolador del có-digo de instrucción a través del Puerto PO. En la Figura 2.6(A), aparece el crono-grama de esta operación.

Page 20: LE002-Introduccion a Los Microcontroladores

Organización de la memoria en los Microcontroladores 8052/8051 19

CICLO MAQUINA:

Un ciclo máquina, para esta familia de microcontroladores, consiste en una se-cuencia de 6 «estados», nombrados Sl a S6. Cada estado está formado por dos pe-ríodos de la señal de reloj que se denominan «fases» (fase 1 y fase 2). Teniendo encuenta que cada ciclo máquina tiene 12 períodos (6 estados por 2 fases), si os-cilador genera una señal de «reloj» de una frecuencia de 12 MHz, la duración delciclo máquina será de 1 usegundo.

S5 S6

ISl s2

PI P2 Pl P2 I

s3 s4

Pl P 2 I Pl P2 I PI P 2 I Pl P2 I

CICLO MAQUINA

Las secuencias de búsqueda/ejecución son las mismas, sea la memoria de programasinterna o externa al microcontrolador; es decir, los tiempos de ejecución no dependende que se utilice la memoria interna o externa.

La Figura 2.6 muestra el cronograma de las señales implicadas en la secuencia debúsqueda, cuando la memoria de programas es externa. La señal PSEN se activa dos ve-ces por ciclo máquina, para autorizar la lectura en la memoria de programas. Si se pro-duce un acceso a la memoria de datos, como se muestra en la Figura 2.6(B), no se emi-ten los dos impulsos PSEN, puesto que el acceso a la memoria de datos no los necesitay utiliza, como se verá en el siguiente apartado, las señales RD (lectura) y WR (escri-tura). Estas señales son generadas automáticamente cuando el nemónico correspon-diente al código de instrucción termina en la letra X.

Observar cómo el acceso a la memoria de datos toma dos ciclos más de bus* que lamemoria de programas. La Figura 2.6 muestra los cronogramas relativos a ambas se-cuencias de acceso, destacando la emisión de direcciones por parte de PO y P2, y las se-ñales ALE y PSEN. La señal ALE se utiliza para «latchean> el «byte bajo» de direccionesdentro del latch que se dibuja en las Figuras 2.5 y 2.7.

Cuando la CPU está ejecutando un programa en la memoria interna, PSEN no seactiva y las direcciones no se emiten por los puertos. Sin embargo ALE se sigue emi-tiendo dos veces por cada ciclo máquina, pudiendo ser utilizada como señal de reloj ex-terno; no obstante, como se puede ver en la Figura 2.6(B), cuando se accede a un ope-rando utilizando la instrucción MOVX, la señal ALE desaparece.

En la Figura 2.6(B) se puede observar cómo se realiza un acceso a la memoria externade programas para tomar una instrucción y en el segundo ciclo se accede a la memoriade datos externa para tomar un dato.

* Ciclo de bus, en este contexto, es el tiempo utilizado en direccionar la posmem, activar la señal de lecturay depositar el dato en el bus.

Page 21: LE002-Introduccion a Los Microcontroladores

20 Introducción a los Microcontroladores

CICLO MAQUINA CICLO MAQUINASllSZlS3 IS IS IS Sl IS2lS3 IS IS5lS6

ALE

PSEN

-R D

I I I II I I I

p2 PCH OUTX ; PCH OUT xI I

PCH OUT I PCH OUT I PCH OUT PCH fXJT

P O

A) Busqueda en la Memoria de Programa Externa

CICLO MAQUINA 1 CICLO MAQUINA 2SllS2lS3 IS IS5lS6 Sl IS2lS3 IS IS5lS6

ALE

PSEN

-FmII I I

P2 PCH OUT I PCH OUT PCH OUT 1 PCH OUT f’CH OUT

I I I

IN

’ IN ADDR!validoI

PCL valido PCL valido

B) Busqueda en la Memoria de Programas y en la memoriade Datos (Instruccion MOVX).

Figura 2.6.

El siguiente apartado complementa a éste refiriéndose a la memoria de datos.

Page 22: LE002-Introduccion a Los Microcontroladores

Organización de la memoria en los Microcontroladores 8052/8051

2.3. MEMORIA DE DATOS

21

El 8052/805 1 puede direccionar hasta 64 Kbytes de memoria de datos externa. (La ins-trucción «MOVX» se utiliza para acceder a los datos de la memoria externa.)

La Figura 2.7 muestra la configuración para acceder a 2 Kbytes de memoria de datosexterna. En este caso la CPU tiene el programa interno en la ROM. El Puerto 0 multi-plexa en el tiempo direcciones y datos en la RAM, y tres líneas del Puerto 2,completanel direccionamiento de los 2 Kbytes de RAM (memoria paginada). La CPU genera lasseñales de lectura (RD) y escritura (WR) que necesita la RAM externa. En la operaciónde lectura de un dato se podría relacionar el cronograma de la Figura 2.6(B) con laFigura 2.7.

8052/51 conROM interna, t RAM

IDIREC.

PZ

Pagina

.OE

'WEE/S

Figura 2.7.

En la Figura 2.8, se puede ver el mapa de la memoria de datos. La memoria internase encuentra dividida en tres bloques, los 128 bytes bajos, los 128 bytes altos y el espacioocupado, en parte, por los Registros de Función Especial (SFR).

Como se indica en la Figura 2.7, la memoria externa se puede direccionar utilizandolas líneas de E/S del Puerto 2 a voluntad, en funciónde la cantidad de memoria a direc-cionar (concepto de memoria paginada). También se pueden utilizar 2 bytes de direccio-nes; byte bajo en el Puerto 0, y byte alto en el Puerto 2. Este es el sistema clásico quepermite direccionar un máximo de 64 Kbytes.

En la memoria de datos interna se puede acceder a un total de 384 bytes para el 8052y a 256 bytes para el 805 1 incluido el área de los registros especiales (SFR), combinandolos bloques de memoria de 128 bytes con el direccionamiento. En el siguiente capítulose explicarán los distintos tipos de direccionamiento.

Page 23: LE002-Introduccion a Los Microcontroladores

22 Introducción a los Microcontrolacfores

1 FFFF

F solo 6052

-FF

F F

y tambien &solo DIRECTO .

807F

64K BYTES

MEM. EXTERNA

Figura 2.8.

A continuación, se va a analizar las tres áreas de memoria interna:

??Area de direccionamiento sólo indirecto (para el 8052).??Area de direccionamiento indirecto y directo.??Area de direccionamiento directo y zona SFR.

2.4. AREA DE DIRECCIONAMIENTO SOLO INDIRECTO(para el 8052)

En la Figura 2.8 se observa que el área SFR y el de direccionamiento indirecto (80H aFFH) tienen las mismas direcciones. Sin embargo están separados por caminos de accesodiferentes, según el direccionamiento de las instrucciones*.

Así, la instrucción:

MOV 9OH, #ABH

escribe ABH en la localización 90H de la memoria RAM de datos y concretamente (porutilizar direccionamiento inmediato) en el Puerto I (90H = Pl (portl)) del área SFR.

En cambio, las instrucciones (en un 8052):

MOV RO, #90HMO+ @RO, #ABH

* Aunque se va a hacer referencia a las instrucciones de los Microcontroladores 8052/805 1, para aclararalgunos conceptos, somos conscientes de la dificultad de comprender sin conocer el conjunto de instruccionesy los modos de direccionamiento; pero se puede confiar en conseguir en esta primera lectura una aproximacióna la realidad y en posteriores lecturas, una vez estudiado el capítulo que hace referencia al software, un cono-cimiento amplio de lo que se intenta explicar.

Page 24: LE002-Introduccion a Los Microcontroladores

Organización de la memoria en los Microcontroladores 8O52/8051 23

escriben ABH en la posmen 90H de la memoria de datos y por utilizar direccionamientoindirecto escribe en la media página que asoma detrás de la media página del SFR en laFigura 2.8.

Después de la ejecución de ambos modos de direccionamiento, se hallará ABH en elregistro imagen del Puerto 1 (PI) en el SFR y ABH en la posmem 90H (Figura 2.9).

F F

80

Pl j AB 1

AREA S.F.R.

FF

80

Figura 2.9.

Naturalmente que si ha intentado hacer este ejercicio con un Microcontrola-dor 805 1, no lo habrá conseguido, pues la posmem 90H con direccionamiento indirectono existe. Puede utilizar una posmem comprendida entre OO y 7FH que sí admite el di-reccionamiento indirecto en el 805 1.

2.5. AREA DE DIRECCIONAMIENTO DIRECTO E INDIRECTO(8052/8051)

Los 128 bytes a los que se puede acceder desde ambos direccionamientos, directo e in-directo, pueden ser divididos en tres segmentos (Figura 2.10).

A continuación se explican brevemente las características de esta área.

? Banco de registros (banco 0, 1,2 y 3). Registros RO a R7 por banco

Los registros se localizan desde la dirección OOH a 1FH (32 bytes). Después de la ope-ración de inicialización del microcontrolador, aplicando un nivel alto al «pin» RESET(véase Apartado 2.7 de este capítulo), el banco operativo por defecto es el banco 0. Laselección de otro banco de registros debe hacerse por software escribiendo en el registrode estado PSW (véase Tabla 2.1).

Page 25: LE002-Introduccion a Los Microcontroladores

2 4 Introducción a los Microcontroladores

------j 1 AREASCRATCH PAD

/II

3 0 I

2 8 2F

L

2 0 2 7

18 BANCO 3 4

10 BANCO 2 17

0 8 BANCO 1 OF

00 BANCO 0

SEGMENTO DIRECCIONABLEBIT A BIT

BANCO DE REGISTROS

Figura 2.10.

El RESET inicializa el Stack Poder (SP) en la posmen 07H y se incrementa inme-diatamente a la posmem 08H, que es el primer registro RO del segundo banco de regis-tros. Con el fin de usar más de un banco de registros, el SP se puede inicializar en otralocalización de memoria.

W Subárea direccionable bit a bit

Esta área tiene una longitud de 16 bytes (segmento 20H a 2FH). Cada uno de los 128bits de este segmento se puede direccionar directamente (OOH a 7FH).

Los bits se pueden referir de dos formas diferentes, bien por sus direcciones (bits OOHa bits 7FH), o por los bytes que los contienen (20H a 2FH). Esto es, los bits 0 al 7 puedenser referidos como los bits 20.0 a 20.7 y del 8 al F, como 2 1 .O a 2 1.7, etc.

Cada uno de los 16 bytes de este segmento puede ser también direccionado comobyte.

H Subárea Scratch Pad

La memoria scrutch pad se entiende como la memoria de un block de notas de rápidoacceso, pero de escasa capacidad. Ocupa las posmem 30H a 7FH. Es la memoria de tra-bajo (RAM) del usuario.

Page 26: LE002-Introduccion a Los Microcontroladores

Organización de la memoria en los Microcontroladores 8052/8051 25

2.6. AREA DE REGISTROS 0 FUNCIONES ESPECIALES(8052/8051)

La Tabla 2.1 muestra los registros especiales que utiliza el 8052/805 1, así como susdirecciones. Además de la lista se procederá a dar una breve explicación de los mismos,considerando que un análisis más profundo corresponde hacerlo en los ejercicios de apli-cación que se verán más adelante.

‘L, ~~~~~,,;,,

*ACC*B

*pswSP

DPTRD P LD P H*Po*PI*P2*P3*IP*IE

T M O D*TCON

*+T2CONTH0TL0TH1TL1

+TH2+TL2

+RCAP2H+RCAP2L

*SCONSBUFPCON

AccumulatorB RegisterProgram Status WordStack PointerData Pointer 2 BytesLow ByteHigh BytePort 0Port 1Port 2Port 3Interrupt Priority ControlInterrupt Enable ControlTimer/Counter Mode ControlTimer/Counter Contro lTimer/Counter 2 ControlTimer/Counter 0 High ByteTimer/Counter 0 Low ByteTimer/Counter 1 High ByteTimer/Counter 1 Low ByteTimer/Counter 2 High ByteTimer/Counter 2 Low ByteT/C 2 Capture Reg. High ByteT/C 2 Capture Reg. Low ByteSerial ControlSerial Data BufferPower Control

AcumuladorRegistro BPalabra de Estado ProgramaPuntero de la memoria de PILAPuntero de datosByte bajoByte altoPuerto 0Puerto 1Puerto 2Puerto 3Control Prioridad InterrupcionesControl Autorización InterrupcionesControl Modo Temporizador/ContadorControl Temporizador/ContadorControl Temporizador /Contador 2Byte Alto Temp./Contador 0Byte Bajo Temp./Contador 0Byte Alto Temp./Contador 1Byte Bajo Temp./Contador 1Byte Alto Temp./Contador 2Byte Bajo Temp./Contador 2Byte Alto Reg. Captura T/C 2Byte Bajo Reg. Captura T/C 2Control Comunicaciones Ser ieBuffer Datos Comun. SerieControl Consumo de Potencia

~~~~~OEOHOFOHODOH81H-

82H83H80H90H

O A O HOBOHOB8HOA8H89H88H

OC8H8CH8AH8DH

.8BHOCDHOCCHOCBHOCAH

98H99H87H

* = Direccionable «bit a bit».+ = Sólo para el 8052.Nota: Los números hexadecimales que, como cifra más significativa tienen un carácter alfabético, en algunas

ocasiones y para evitar equívocos, van precedidos de la cifra «cero» (0).

ElACC Acumulador: Es un registro de propósito general de los Microcontrolado-res 8052/805 1 y, por su frecuencia de intervención, el más importante. En la progra-mación de aplicaciones en lenguaje ensamblador se hará referencia a él como REGIS-TRO A.

Page 27: LE002-Introduccion a Los Microcontroladores

26 Introducción a los Microcontroladores

c lB Registro B: Está especializado en las operaciones de multiplicación y división,

no obstante puede ser utilizado como un registro de propósito general.

EIPSW Program Status Word: Contiene información de estado de la CPU en cadaciclo de instrucción. El Cuadro 2.1 muestra el formato de la palabra de estado.

Cuadro 2.1.

PSW

BIT

bo

b bb b5 bq b3 bz b, bo

C AC FO RS, RSo OV - P

NOMBRE Y COMENTARIO

b,

: Flag de paridad del Acumulador (ACC).- Si P = 1 entonces el número de unos del ACC es impar.- Si P = 0 entonces el número de unos del ACC es par.

Flag disponible y def inible por e l usuario.

: Flag de Overflow (sobrepasamiento) (ver Apéndice B).

: Selección del banco de registros.

bb

: Flag 0. De propósito general. Definible por el usuario.

b7

: Flag Acarreo Auxiliar. Operaciones en BCD.

?? : Flag de Acarreo. (Ver Apéndice B).

: Stack Pointer. Es un registro de 8 bits. Iniciahzado el microcontrolador porla operación Reset, por defecto el SP se carga con la dirección 07H (SP t 07). Al eje-cutar la primera instrucción PUSH o CALL el SP se carga con 08H, apuntando a dichaposición de memoria (Figura 2.11).

Page 28: LE002-Introduccion a Los Microcontroladores

Organización de la memoria en los Microcontroladores 8052/8051 2 7

S.F.R.

PILA

BANCO REG. 0

FF

0 07F

080 7

0 0

+TA~K POINTERI

Figura 2.11.

LDPL y DPH 1Data Pointer: Su propósito principal es contener la dirección delpuntero de datos. Puede ser manipulado como un registro de 16 bits (DPTR) o comodos registros independientes de 8 bits.

LPO,PI,P2yP31 Son los latchs de los Puertos PO, Pl, P2 y P3.

1 SBUF 1 Serial Data Buffer: Son dos registros buffer aparentemente separados, perofisicamente el mismo, buffer de transmisión y bu& de recepción. Al escribir un dato enSBUF, el mismo comienza a transmitirse por la línea correspondiente del puerto serieacompasado por la señal de reloj. En el modo «recepción» el dato que ingresa por lalínea.de entrada del puerto serie se registra en el bu@& receptor (SBUF). El Capítulo 12trata en exclusiva este tema.

THO-TLO, TH 1 -TL 1, TH2-TL2 Timer Registers: Son pares de registros de 16 bits,que pueden actuar como temporizadores o contadores. Posteriormente se estudiará laforma de trabajar con ellos en el Capítulo 9.

1-1Capture Registers: Este par de registros actúan como «regis-tros de captura» del Timer 2, cuando éste trabaja en «modo captura». En este modo,

Page 29: LE002-Introduccion a Los Microcontroladores

2 8 Introducción a los Microcontroladores

RCAP2H y RCAP2L responden a la transición del flanco en el pin T2EX, copiando losvalores de TH2 y TL2 sobre ellos mismos. El Timer 2, en el modo de trabajo con «au-torrecarga», obtiene los valores de recarga de estos registros.

1 PCON 1Power Control Register: Para aplicaciones en donde la característica deconsumo sea clítica, la versión CHMOS ofrece dos modos de trabajo de bajo consumo:el modo POWER DOWN y el IDLE. También ofrece, este registro, posibilidades de va-riar la velocidad de comunicación en el canal SERIE. Todo esto se estudiará más z “e-lante.

1 TCON 1Timer/Counter Control Register: Este es un registro que controla funda-mentalmente el modo de operación de los Timen 0 y 1 en relación con las interrupcio-nes y los flancos de activación de las mismas.

1 TMOD 1 Timer/Counter Mode Control Register: Selecciona el Timer 0 o 1, el modode operación (Modo 0, 1 o 2), si actúa como temporizador o como contador, etc.

1 T2COM 1Timer/Counter 2 Control Register: Lo mismo que TCON y TMOD, peroaplicado al Timer 2.

L-lIE Interrupt Enable Register: Es un registro para habilitar las interrupciones. Per-mite que se atiendan todas las interrupciones por el microcontrolador o sólo las que elusuario considere aceptables.

ElIP Interrupt Priority Register: Cada interrupción puede programarse individual-mente en el nivel 1 o 2 de prioridad, poniendo a 1 o a 0 los bits de este registro. Unainterrupción de bajo nivel de prioridad se puede interrumpir por otra de un nivel másalto. Una interrupción de alto nivel de prioridad no puede ser interrumpida por otra in-terrupción de un nivel más bajo (véase Capítulo 10).

1 SCON 1Serial Port Control Register: Este registro se encarga de establecer los pa-rámetros para la transmisión o recepción de datos en comunicación serie; así, si se tratade una transmisión o recepción, formato de la palabra (bit de start, bits de datos, bit destop), velocidad, etc.

Finalmente, en la Tabla 2.2 se hace referencia al mapa de memoria de los registrosSFR. Los registros que pertenecen a la columna izquierda de la tabla están en un áreadireccionable «bit a bit» que corresponde a las posmem 80H, 88H, 90H, 98H, . . . . F8H.

Page 30: LE002-Introduccion a Los Microcontroladores

Organización de la memoria en los Microcontroladores ¿3052/8051 29

F 8

F O

E8

EO

D8

D O

C8

co

B 8

BO

A8

AO98

90

8 8

80

Tabla 2.2.8 Bytes

F F

Fl

EF

E7

D F

D7

C F

c7

BF

B 7

AF

A7

9F

97

8F

81

Los registros que están encerrados entre paréntesis pertenecen solamente al 8052.

2.7. OPERACION RESET

Conectado al «pin» (9) de entrada RST=RESET se encuentra un Schmitt Trigger queva a propiciar la operación de inicialización de los dispositivos internos del microcontro-lador.

Un RESET se alcanza cuando se mantiene en el pin RST=RESET, un nivel lógicoalto al menos durante dos ciclos máquina (24 períodos de reloj), mientras el osciladorestá funcionando. La CPU responde generando un RESET interno, según el cronogramamostrado en la Figura 2.12.

La señal externa de RESET es asíncrona al reloj interno. El pin RESET es mues-treado durante la fase 2 del estado 5 de cada ciclo máquina. Los pines de los puertosmantendrán sus actividades durante 19 períodos de reloj, después de que el nivel lógicodel pin RESET haya sido detectado; esto es, durante 19 a 3 1 períodos de reloj, despuésde haber aplicado externamente un nivel lógico alto al pin RESET.

El algoritmo del RESET interno escribe «ceros» en todos los registros del SFR, ex-cepto en los latches de los puertos, el Satck Pointer y el registro SBUF. Los latches de lospuertos son inicializados a FFH (quedan programados para la lectura), el Stack Pointera 07H y el SBUF es indeterminado. En la Tabla 2.3 se muestran los valores que tomanlos registros después de un RESET.

Page 31: LE002-Introduccion a Los Microcontroladores

30 Introducción a los Microcontroladores

IC 1 2 PERIODOS 0Sc.1/ 55 / Sô 1 Sl 1 S2 / 53 / S4 1 55 1 S6 1 Sl 1 S2 1 S3 1 S4 1 S5 1 S6 1 Sl 1 S2 1 S3 1S4 1

RST: l

Muestky Pin R S TL SENAL RESET INTERNO

Muestrea Pin R S T

A L E :

PSEN:

P O :

NOTA:

I II

l l lLc 11 PERIODOS OX- 19 PERIODOS 0SC.d

G Significa que puede cambiar de Nivel Bajo a Nivel Alto

Figura 2.12.

Tabla 2.3.

PC

ACC

B

PSW

SP

DPTR

PO-P3

IP (805 1)

IP (8052)

IE (805 1)

IE (8052)

TMOD

OOOOH

OOH

OOH

OOH

07H

OOOH

FFH

XXXOOOOOB

XXOOOOOOB

OXXOOOOOB

OXOOOOOOB

OOH

TCON OOH

TH0 OOH

TL0 OOH

TH1 OOH

TL1 OOH

TH2 (8052) OOH

TL2 (8052) OOH

RCAP2H (8052)

RCAP2L (8052)

SCON

SBUF

PCON (HMOS)

PCON (CHMOS)

OOH

OOH

OOH

Indeterminado

OXXXXXXXB

OXXXOOOOB

Page 32: LE002-Introduccion a Los Microcontroladores

Organización de la memoria en los Microcontroladores 8052/8051 31

El RESET automático del microcontrolador se produce al aplicar la tensión de ali-mentación VCC al pin RESET a través de un condensador de 10 microfaradios y unaresistencia de 8K2 ohmios, como indica la Figura 2.13, procurando que el tiempo delflanco de subida de la alimentación no exceda de un milisegundo y el comienzo de losimpulsos del reloj no exceda de 10 milisegundos.

Figura 2.13.

En el siguiente capítulo se comenzará el estudio de las instrucciones de los Microcon-troladores 8052/805 1, dejando para capítulos posteriores otros aspectos específicos delhardware.

1. iQué se entiende por memoria combi-nada y por memoria segregada? Explicarel procedimiento que se utiliza para con-vertir la memoria segregada en combi-nada.

2. Si el programa que tuviera que ejecutar elMicrocontrolador 8752 ocupara una ca-

pacidad superior a los 8K, por ejemplo15K, iqué modificación realizaría en elsistema?

3. Explicar «estado a estado» los cronogra-mas mostrados en la Figura 2.6.

4. Si el sistema necesitara una memoriaRAM de 4 Kbytes para soportar la apli-

Page 33: LE002-Introduccion a Los Microcontroladores

32

5.

6.

7.

Introducción a los Microcontroladores

cación, iqué configuración establecería ala vista del diagrama en bloques de laFigura 2.7? Dibujar el esquema.

Identificar las distintas partes de queconsta la memoria de datos interna e in-dicar la misión que cumple en el s istema.

Indicar en qué zona o zonas, según laFigura 2.8, se escribe el dato implíci to enlas siguientes instrucciones:

a) MOV25H,#46Hb)MOVRO,#25Hy MOV@RO,#46HC) MOV 85H,#3AH6) MOVR1,#85HyMOV@R1,#3AH

iCuántos bancos de registros tienen losMicrocontroladores 8052 y 805 l? Indicarcuál es el banco de registros por defecto y

8.

qué modificación haría para trabajar conel banco 3.

Puede observarse que no hay indicador oflag de número negativo en el registro deestado PSW. iCómo podría señalizarse?

9. Indicar el área de la memoria de PILAinicializada por defecto en los Microcon-troladores 80521805 1.

10. Explicar la función de la señal de RESETe indicar cómo inicial iza los registros:

PC =ACC =B =PSW =SP =DPTR =PO-P3 =

Page 34: LE002-Introduccion a Los Microcontroladores

CAPITULO

Programación de losMicrocontroladores 8052/8051(I)

3.1. INTRODUCCION

Todos los modelos de lafamilia 51 ejecutan el mismo set de instrucciones. Estas instruc-ciones están optimizadas para el control de aplicaciones en 8 bits. Están provistas de unabuena variedad de modos de direccionamiento para acceder a la memoria RAM de da-tos internos del microcontrolador, facilitando operaciones del tipo byte sobre una pe-queña estructura de datos. Permiten la manipulación directa de control y procesamientobooleano de estructuras de datos del tamaño de un bit.

En esta breve introducción se estudiarán los modos de direccionamiento y el set deinstrucciones agrupadas por especialidades de esta manera:

0 Instrucciones aritméticas.0 Instrucciones lógicas.?? Instrucciones para la transferencia de datos en:

a) RAM interna.b) RAM externa.

?? Instrucciones para el tratamiento de tablas.??Instrucciones booleanas.?? Instrucciones de salto.

3.2. MODOS DE DIRECCIONAMIENTO

?? Direccionamiento directo

El operando se especifica en la instrucción por un campo de dirección de 8 bits. Sólo laRAM interna de datos (primeros 128 bytes) y la zona de SFR se pueden direccionar deesta forma. .

33

Page 35: LE002-Introduccion a Los Microcontroladores

34 Introducción a l o s M i c r o c o n t r o l o d o r e s-“- --=--xi

Ejemplo:

ADD A,3BH ; es decir, suma (ADD) el contenido del acumulador con el contenidode la posición de memoria (3B):

A t (A) + (3B)

Nota: Un registro o número entre paréntesis se refiere al contenido. Así:(A) es el contenido del acumulador.

(3B) es el contenido de la posición de memoria 3B.

?? Direccionamiento indirecto

La instrucción especifica un registro que contiene la dirección del operando. Tanto lamemoria RAM interna (256 bytes/128 bytes) como la externa se pueden direccionar in-directamente.

Los registros para direccionar sobre el mapa de 8 bits pueden ser el RO y Rl del bancode registros seleccionado, o el Stack Pointer. El registro para direccionar sobre 16 bitssólo puede ser el Puntero de Datos (Data Pointer = DPTR).

Ejemplo:

ADD A,@RO ; Así, si (RO)=3BH la operación será:A t(A) + (3B)

Igual que en el ejemplo anterior.

(@) es el identificador del direccionamiento indirecto.

PI Direccionamiento por registro .

Los Microcontroladores 8052/805 1, como se ha visto, contiene cuatro bancos de regis-tros seleccionados por los bits 3 y 4 del PSW, y cada banco de registros tiene ocho regis-tros del RO al R7 (véase Apartado 2.5). El propio código de operación de la instruccibnespecifica con qué registro se opera; es decir, cuando la instrucción es ejecutada se accedea uno de los 8 registros del banco seleccionado.

Ejemplo:Bytes: 1

MOV Rn,ACiclos: 1

código: 1 1 1 1 1 r r r

operación: (Rn) t (A)

Dependiendo del registro implicado el código de instrucción tomará distintos valo-res. Así:

Page 36: LE002-Introduccion a Los Microcontroladores

de

MOV R, A i--> 1111 1lllB = FFH

Otro ejemplo:Bytes: 2

MOVRn,#dataCiclos: 1

código: 0 1 1 1 1 r r r

operación: (Rn) t #data

H Direccionamiento implícito

Algunas instrucciones especifican, implícitamente, el registro sobre el que van a operar,como el acumulador, el puntero de datos, etc. No necesitan especificar el operando por-que está implícito en el código de operación.

Ejemplo:

INC A ; Incrementa el contenido del acumulador:A t (A) + 1

INC DPTR ; Incrementa puntero de datos:DPTR t (DPTR) + 1

?? Direccionamiento inmediato

Al código de operación le sigue una constante en la memoria de programas.

Ejemplo.

MOV A, #255 ; Carga en el acumulador el número decimal 255.

Generalmente se expresan en hexadecimal:MOV A,#FFH

o en binario:MOV A,#11111111B

?? Direccionamiento indexado

Este direccionamiento sólo es posible en la memoria de programas y sólo permite la lec-tura. Es utilizado para la lectura de tablas. Un registro base de 16 bits (el DPTR o el

Page 37: LE002-Introduccion a Los Microcontroladores

36 Introducción a los Microcontroladores

contador de programa) apunta a la base de la tabla y el contenido del acumulador es eloffset que permite acceder a la lectura de esa posición de la tabla. Es decir, la direcciónde la tabla que se va a acceder está formada por la suma del acumulador y el punterobase.

Se puede utilizar otro tipo de direccionamiento indexado en los «saltos» de instruc-ción. En este caso la dirección de destino del salto se computa como la suma del punterobase y el dato del acumulador.

3.3. CICLO DE INSTRUCCION

La ejecución de un ciclo de instrucción comienza en el estado I del ciclo máquina, cuandoel código de operación es almacenado en el Registro de Instrucción. (Para comprendereste apartado tener a la vista la Figura 3.1 y la Tabla 4.5, Set de Instrucciones.)

Como norma general, una instrucción requiere de uno o más ciclos máquina, en fun-ción de:

a) El código de operaciónPor ejemplo, la instrucción INC A (Figura 3.1A) tiene 1 byte de instrucción y re-

quiere 1 ciclo máquina, la instrucción INC DPTR, también, de 1 byte de instrucción re-quiere de 2 ciclos máquina (Figura 3.lC) y la instrucción MUL AB requiere de 4 ciclosmáquina para su total ejecución y ocupa 1 byte en la memoria.

b) El número de bytesPor ejemplo, la instrucción MOV A, #data tiene 2 bytes de instrucción y requiere

de 1 ciclo máquina (Figura 3.1 B). En cambio la instrucción MOV direct, #data al cons-tar de 3 bytes necesita de 2 ciclos máquina. Esto no ocurre siempre, es decir, a más bytesmás ciclos máquina, como puede verse en la Figura 3.1 B correspondiente a la instruc-ción MOV A, #data y en la Figura 3.1 D MOVX A,@Ri, la primera instrucción tiene 2bytes y la segunda sólo 1, en cambio la primera requiere 1 ciclo máquina y la segunda 2.

Ante la imposibilidad de establecer una norma o regla que facilite el conocimientoI del número de bytes y ciclo de instrucción se ha editado la Tabla 4.5 con el set completo

de instrucciones.Cabe destacar, también, en la Figura 3.1, que en cada ciclo máquina se producen 2

accesos a la memoria, el primero, si es comienzo de ciclo de instrucción, siempre leeráel código de operación, el segundo, que normalmente se descarta, se utiliza para leer elsegundo byte, operando de la instrucción, como ocurre en la Figura 3.1B.

3.4. TIPOS DE INSTRUCCIONES

El set de instrucciones del 8052/805 1 se puede dividir según las especialidades:

0 Instrucciones aritméticas.0 Instrucciones lógicas.?? Instrucciones de transferencia de datos.

Page 38: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (1) 37

I ADDR. / DATOSJ

V

Acceso a la Memoria Externa

(D) 1 Byte. 2 Ciclos Maquina. Eje.: ,MOVX A,@Ri

Figura 3.1.

Page 39: LE002-Introduccion a Los Microcontroladores

3 8 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

??Instrucciones booleanas.?? Instrucciones de salto.

Las instrucciones aritméticas, lógicas, de transferencia y de salto son comunes a lamayoría de microprocesadores. Los microcontroladores tienen un área especial de apli-cación, que es el área del control de procesos; en este campo las operaciones están orien-tadas, muy a menudo, al bit. Los microcontroladores leen, procesan, escriben e inter-cambian información con los sistemas exteriores, en formato «bit a bit» o «palabra apalabra». Un procesador booleano con un set de instrucciones booleanas muy completose encarga de realizar este tipo de operaciones, que, como ya hemos dicho, están «orien-tadas al bit». Esta particularidad, así como su inmunidad al ruido eléctrico, le hacen va-lioso en el mundo del control de procesos industriales.

En este capítulo y en el siguiente se aborda el estudio de las instrucciones por espe-cialidades, aconsejando se haga una lectura rápida y global de estos dos capítulos. Al Ii-nal del Capítulo 4 se encontrará la tabla 4.5 en la que aparece todo el ????de instruccio-nes, ll 1 en total, de la familia 51; en cambio, en las tablas simplificadas que sirven deestudio en los siguientes apartados se contabilizan 69 instrucciones. La razón de esta di-ferencia está en la propia tabla y justamente en la columna encabezada por «Modos dedireccionamiento». Esto quiere decir que según los direccionamientos una instrucciónpuede tener hasta cuatro códigos de operación y operandos distintos. Esta situación seresuelve utilizando la palabra <byte>, que tomará el siguiente significado (Tabla 3.1):

Tabla 3.1.

<byte><byte><bvte>

direct@RiRi ’

Direccionamiento directo. Se refiere a una posmem.Direccionamiento indirecto a través del registro RO y Rl .Direccionamiento por registro.

I I _ -

<bvte> #data [ Direccionamiento inmediato. Constante de 8 o 16 bits.

La Tabla 4.5, a la que se hacía referencia anteriormente, presenta los mismos sím-bolos para identificar, en el formato de la instrucción, los distintos operandos según elmodo de direccionamiento.

En las tablas simplificadas también se indica el posibleflag (C=Carry, OV=Overflow,AC=Auxiliar Carry) afectado por la instrucción según el siguiente código:

No es afectado . . . . . . . . . . . . EI

Sí es afectado . . . . . . . . . . . . . 1 X 1 (lo pone a 1 0 a 0)

Afectado poniéndolo a . . . . . 00

Afectado poniéndolo a . . . . . r - l1

Page 40: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (f,J 39

En algunas tablas no son afectados IosJlags, y esto se indica con un mensaje en laparte inferior de las mismas.

Los tiempos de ejecución se han tomado utilizando como referencia una frecuenciade reloj de 12 MHz.

3.5. INSTRUCCIONES, ARITMETICAS

En la Tabla 3.2, se muestra el menú de las instrucciones aritméticas. Se indican en latabla los modos de direccionamiento que permite la instrucción y losflugs afectados.

Los tiempos de ejecución que se indican en la tabla están evaluados sobre una fre-cuencia de reloj de 12 MHz.

Tabla 3.2.

MUL AB B:A = B x A ACC and B only 4 0 x

DIV AB

DA A

A = int [A/B]B = Mod [A/B]

Decimal Adjust

ACC and B only 4 0 x

Accumulator only 1 X

clx = sí; ?? ???

Al leer dicha tabla se observa que:

?? Se puede incrementar o decrementar un byte en la memoria de datos interna sinel concurso del acumulador.

? Una de las instrucciones INC opera sobre los 16 bits del puntero de datos (DPTR).?? La instrucción MUL AB multiplica el contenido del acumulador con el dato si-

tuado en el registro B y el producto, en formato 16 bits, aparece en los registrosAcumulador y B (sobreescribe a los operandos).

?? La instrucción DIV AB divide el contenido del acumulador con el dato sito en B,apareciendo el resultado, cociente, en el acumulador y el resto en el registro B.

Page 41: LE002-Introduccion a Los Microcontroladores

40 Introducción a los Microcontroladores

Ejemplo.

DIVABA=5FH

B=OAH

0101 1111 1---_-------- 1001 +.A0101 + B

?? La instrucción DA A ajusta el resultado en binario puro producido por las ins-trucciones ADD y ADDC a formato BCD. Esta instrucción no convierte el con-tenido del acumulador en BCD, sino que hace el ajuste BCD de la suma (resul-tado), por lo tanto, esta instrucción debe ir inmediatamente después de lainstrucción ADD o ADDC.

Esta es, de forma simplificada, la operación que realiza:

[ KA3-0) > 91 . OR . [(AC) = ll ]

entonces

@3-o) + 643-o) + 6

y si [ KA7-4) > 91 * OR . [(Cj = ll ]

entonces

(A7-4) + @7-4) + 6

3.6. INSTRUCCIONES LOGICAS

La Tabla 3.3 muestra la lista de instrucciones lógicas y los modos de direccionamientoque permiten así como 1osflag.r afectados.

La duración de ejecución de 1 o 2 microsegundos es sobre la base de una frecuenciade trabajo de 12 MHz.

?? Las primeras instrucciones corresponden a las operaciones AND, OR, EXOR yNOT.

Ejemplo:<byte> = (3A) = 1001 0011

ANL <byte>,#3F #3F=OOll 1111

00010011 = 13H

(<byte> se refiere, en este caso, a una posición de memoria.)

Page 42: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (1) 41

Tabla 3.3.

X R L <byte>, A ‘tbyte> = <byte> .XOR. A X 1

XRL <byte>, #data <byte> = <byte> .XOR. #data X 2

CLR A A=OOH Accumulator only 1

CPL A A = .NOT. A Accumulator only 1

RL A Rotate ACC Left 1 bit Accumulator only 1

RLC A

RR A

RRC A

SWAP A

Rotate Left through Carry

Rotate ACC Right 1 bit

Fotate Right through Carry

Swap Nibbles in A

Accumulator only 1 X

Accumulator only 1

Accumulator only 1 X

Accumulator only 1

? ??????????????

??Continuando con el ????de instrucciones, aparecen instrucciones de manipulaciónde la información, como las instrucciones de Rotación y de Intercambio (SWAP).

?? Las instrucciones de Rotación RL A y RR A desplazan el acumulador 1 bit a laizquierda y derecha, respectivamente, sin afectar al bit de acarreo.

Ejemplo: Rotación a la izquierda (LejI)

(A) = OC5H = 1100 OlOlB (antes de ejecutarla)RL A

(A) = 8BH = 1000 101 IB (después)

?? Las instrucciones de Rotación RLC -4 y RRC A desplazan el contenido del acu-mulador implicando al bit de acarreo.

Page 43: LE002-Introduccion a Los Microcontroladores

42 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

?? La instrucción SWAP A intercambia los nibbles en el acumulador. Generalmentese utiliza en las manipulaciones de números en BCD.

Ejemplo:

SWAP A(A) = 3H = 0000 001 1B (antes de la operación)

A c 0011 0000 (después)

3.7. INSTRUCCIONES DE TRANSFERENCIA DE DATOS

Se consideran tres modalidades, según la transferencia se realice sobre:

?? La RAM interna.??La RAM externa.?? La memoria de programa para el tratamiento de tablas.

3.7.1. Transferencia de datos sobre la RAM interna

En la Tabla 3.4 se muestra la tabla de instrucciones disponibles para mover datos dentrode los espacios de memoria RAM interna, considerando los distintos direccionamientospara cada una de las instrucciones.

Tabla 3.4.

No son afectados losf2ugs. ?? ???? ??????? La instrucción MOV <dest>, <src> permite transferir datos entre alguna de las dos

RAM interna o el espacio de localización del SFR (referencia Figura 2.8). Este tipode instrucción permite la transferencia sin el concurso del acumulador.

Page 44: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (1) 43

Ejemplo:

Antes de ejecutar la instrucción:

MOV 3AH,3DH(3A)= 35H ; (3D) = 78H

Después de ejecutarla:

(3A) = 78H ; (3D) = 78H

??La instrucción MOV DPTR, #data 16 bits, permite transferir datos de 16 bits parainicializar el DPTR (Data Pointer = puntero de datos) en el tratamiento de tablasen la memoria de programas o para acceder a los datos de la memoria externa.

?? La instrucción PUSH <src> actúa incrementando el SP (Stack Pointer = punterode la pila) y copiando el dato dentro de la pila. La instrucción POP cdest> actúadecrementando el SP y reponiendo el dato en su registro. La pila está situada den-tro de la RAM interna, por defecto en el banco de registros 1 (véase Figura 2.1 l),pero puede posicionarse en el área SCRATCH PAD, como se ha indicado en elcapítulo anterior.

En resumen, éstas son las operaciones que realiza la unidad de control del microcon-trolador.

PUSH <src>

0 (SP) c (SP) + 10 ((SP)) t <src>

POP <dest>

?? <dest> t ((SP))?? (SP) t (SP) - 1

?? La instrucción XCH A, <byte>, intercambia los datos del acumulador y del bytedireccionado. La instrucción XCHD A, @Ri es similar a la anterior, pero sólo im-plica en el intercambio el nibble bajo; es una instrucción especializada en la ma-

?? nipulación de datos en el código BCD.

Ejemplos:

XCHA,2DH

XCHDA,@RO

Antes de ejecutar la instrucción:

(A) = 37H y (2D) = 23H

Después de ejecutarla:

(A) = 23H y (2D) = 37H

Antes de ejecutar la instrucción:

(RO) = 2DH y (2D) = 37H y (A) = 23H

Después de ejecutarla:

(A) = 27H y (2D) = 33H

Page 45: LE002-Introduccion a Los Microcontroladores

44 Introducción C I /os Microconfroladores

3.7.2. Transferencia de datos sobre la RAM externa

La Tabla 3.5 muestra la lista de instrucciones sobre transferencia de datos que accedena la memoria de datos. Sólo se puede utilizar el direccionamiento indirecto con este grupode instrucciones.

Tabla 3.5.

MOVX A @Ri

No son afectados losflugs.

Conviene observar que para este tipo de accesos siempre interviene el acumuladorcomo registro fuente o destino.

El usuario debe escoger entre el tipo de instrucción MOVX A,@Ri o MOVX @Ri,A(siendo Ri, bien el registro RO o Rl del banco de registros seleccionado), direccionandocon 8 bits, o bien utilizar un direccionamiento de 16 bits, usando el registro DPTR(MOVX A,@DPTR o MOVX @DPTR,A) y tener que sacrificar el Puerto 2, cuandosólo se va a utilizar un pequeño espacio de memoria RAM. Existe una solución inter-media que permite direccionar sólo unos pocos Kbytes de RAM externa, pero obte-niendo algunas líneas hábiles del Puerto 2 como entradas y salidas (E/S). Esta es la so-lución que se mostró en la Figura 2.7 del Capítulo 2. De todas formas la soluciónadecuada debe ser función de las características que necesita la aplicación, suponiendo,en principio, que la implementación de la misma sobre la elección de los Microcontro-ladores 8052/805 1 sea la correcta.

Las líneas de control de lectura y escritura, RD y WR (pines 16 y 17), sólo son utili-zadas cuando se ejecutan las instrucciones MOVX; si no se va a utilizar memoria RAMexterna, es obvio que se ganarán unas líneas extras de E/S (Figura 2.7).

Ejemplo: Estudiar la secuencia de instrucciones.

MOVX A, @IR1MOVX @RO, A

Page 46: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (1) 45

F3HMOVX A, @Rl

85H ? f

Rl

t

F3H

R O 85H

antes: (Rl) = F3H

ejecución: A t (F3H)

después: (A) = 3AH

antes: (A) = 3AH y (RO) = 85H

MOVX @RO, A ejecución: (RO) c (A)

después: (85H) = 3AH -,

Nota: Este ejemplo se ha realizado con el Microcontrolador 8052, en el espacio de memoria RAM interna quese solapa con el área SFR. Si se refiere al Microcontrolador 805 1, debería ser implementada esta ope-ración, obligatoriamente, en el espacio de memoria externa.

¿Qué sucedería si se tuvieran que implementar estas instrucciones en la zona de me-moria por encima de la dirección 2000H? Es decir:

85HF3H

sustituida> 2085H> 20F3H

Se llegaría a la conclusión de que no se podrían procesar estas instrucciones, contandoque los registros RO y Rl no pueden direccionar por encima de la posición de memoriaFFH. Pero aquí es donde entran en juego las instrucciones MOVX con el DPTR comooperando. La sustitución, en el caso de tener que operar en el espacio de memoria com-prendido entre OOOOH y FFFFH, sería:

sustituidaMOVX A, @Ri > ~ovx A, @DPTRMOVX @Ri , A + ~ovx @DPTR, A

Recuérdese que en la Tabla 3.4 hay una instrucción que es:

MOVDPTR,#dataló

con la que se podría acceder a todo el mapa de memoria.

Page 47: LE002-Introduccion a Los Microcontroladores

46 Introducción a los Microcontroladores

3.7.3. Memoria de programas para el tratamiento de tablas

La Tabla 3.6 muestra las dos instrucciones disponibles para la lectura de tablas en el pro-grama de memoria (independientemente del algoritmo que pueda crear el usuario conotras instrucciones). Obsérvese que las tablas sólo pueden ser leídas y no actualizadas. Elnemónico es MOVC (Mover Constante).

Si la tabla accede a la memoria de programa externa, recordar que esta lectura es au-torizada por la señal de control PSEN (pin 29). Obsérvese la Figura 2.5 del capítulo an-terior.

Tabla 3.6.

A,@A+DPTR

No son afectados losflags.

La primera instrucción de la tabla permite la lectura en tablas con accesos no supe-riores a 256. El acceso deseado es cargado en el acumulador, y el Data Poirtter (DPTR)establece el puntero de comienzo de la tabla. La lectura es cargada dentro del registroacumulador.

Movc A, @A+DPTR A t ((A) + (DPTR))

La segunda instrucción es similar a la primera, salvo que es el Pogrum Counter (PC)el que actúa como indicador de la dirección base de la tabla.

MOVC A, @A+PCPC t (PC) + 1

A + KA) + (PC))

Se presenta esta instrucción dentro de una subrutina, estando la tabla de informacióndespués de la instrucción de retorno de la subrutina (RET).

Ejemplo:

Se trata de demostrar el funcionamiento sobre una tabla de 4 datos. A la izquierdaaparece el mapa de memoria del programa.

Page 48: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (1) 47

90H

91H

92H

93H

MOV A,

#OlH

CALL

dire. rutina -

AOH INC A t

A 1 H MOVC A,@A+PC

A2H RET

A3H 20H 1A4H 21H 1A5H 1 22H I

*““t”‘l

MOVA,#OlHCALL TABLA-----_----

TABLA: INCAMOVC A,@A+PCRETDATO0DATO1DATO2DATO3-----

Se pretende acceder inicialmente al DATOl, por estarazón se carga al acumulador con 0 1 H. Se salta a la rutinade tratamiento de la tabla.

Ya en la rutina, se incrementa el acumulador, con loque su valor será:

(N -+ W+l02H c OlH+ 1

En la instrucción MOVC A,@A+PC el valor del acu-mulador es 02 y el PC apunta a la instrucción RET, por loque la suma A2H + 02H = A4H, luego:

A c (A4H)

p(a)=Z1HI

2.

3.

4.

5.

6,

Explicar con ejemplos la diferencia entreel direccionamiento directo y el indirecto.

iQué limitaciones presenta el direcciona-miento indexado en los Microcontro-ladores 8052/805 l?

Explicar, observando la Figura 3.1, el sig-nificado de la señal ALE. (Puede reca-barse información en el Capítulo 1 sobreesta señal.)

iQué ventajas t iene un s e t de instruccio-nes orientadas al procesamiento de infor-mación «bi t a bi t»?

La columna de la derecha de la Tabla 3.1señala como tiempo de ejecución de lainstrucción MUL AB 4 microsegundos.Considerando que la frecuencia de reloj esigual a 12 MHz, jcuántos ciclos máquinatiene dicha instrucción?

Indicar el orden exacto de las instruccio-nes para una operación suma en el for-

7.

8 .

9 .

10 .

ll.

mato BCD entre el registro A (ACC) y elregistro B.

iQué diferencias hay entre las dos prime-ras instrucciones de la Taela 3.2?

ANL A, <byte>ANL <byte> , A

Con relación a las instrucciones PUSH<src> y POP <dest> detallar la operaciónque se realiza. En la columna Operaciónde la Tabla 3.3, se especifica, de unaforma esquematizada con nemónicos, di-cha operación.

iQué utilidad tiene la instrucción MOVDPTR, # data 16?

iQué instrucción o instrucciones se em-plean para inicializar la memoria Pila enel banco de registros número 3?iQué diferencias hay entre las instruccio-nes MOVX A, @DPTR y MOVC A,@A+DPTR?

Page 49: LE002-Introduccion a Los Microcontroladores

CAPITULO

Programación de losMicrocontroladores 8052/8051 (II)

4.1. INSTRUCCIONES BOOLEANAS

La familia d Microcontroladores 5 1 y concretamente los Microcontroladores 8052/805 1tienen un pro esador booleano incluido en el chip.

Estos mi rocontroladores poseen dos áreas que permiten el direccionamiento «bit a

F8

F O

E8

EO

D8

D O

I C8co

B8

BO

A8

AO

98

90

8 8

80

Tabla 4.1.8 Bytes

LRe

F F

ec

c

gistros direccionables «bit a bit»

F7

EF

E7

D F

D7

CF

c7

BF

B 7

AF

A7

9F

97

8F

8 7

Page 50: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (ll) 49

bit»: una corresponde al segmento de RAM interna de dirección comprendida entre laposmem 20 a 2FH, en total 128 bits (Figura 2. lo), y la otra corresponde a la primeracolumna del SFR que está señalada en la Tabla 4.1, de gran utilidad para el «testeo» debits en los registros referidos.

El conjunto de instrucciones que permiten este tipo de proceso, tan interesante paralas aplicaciones industriales, se encuentra relacionado en la Tabla 4.2.

Tabla 4.2.

????? ??????Las instrucciones que aparecen en las tablas son: MOVE, SET, CLEAR, NOT, OR

y AND.Se observa cómo en casi todas las instrucciones se hace referencia alJlag Carry (C).

Se podría decir que cumple todas las características que tiene el acumulador en el pro-cesamiento de palabras. Elflas Carry se direcciona directamente dentro de la palabra deestado PSW, en la posición «bit 7». Para mayor información véase el Apéndice B.

b

C

b5 bo

FO

P s w

Page 51: LE002-Introduccion a Los Microcontroladores

50 Introducción a los Microcontroladores

Todos los bits del PSW son direccionables bit a bit, como todos los registros señala-dos del SFR. Es importante reseñar la presencia del jlag FO (b5 del PSW) de propósitogeneral, disponible comoflas del usuario. ¿Por qué no utilizarlo como indicador, en lasoperaciones aritméticas de signo (flas N)?

Comentario aparte exige el tratamiento de las instrucciones booleanas de salto. Hayinstrucciones que producen el salto cuando el bit direccionado está en estado « l», comoson las instrucciones JC, JB y JBC; también están las que producen el salto cuando el bitdireccionado está puesto a «O», como son las instrucciones JNC y JNB. JBC produce elsalto si el bit direccionado es «l» y pone a «O» este bit, siendo la única instrucción quedetecta y pone a «O» el bit direccionado.

Secuencias de operaciones:

JC re1

. (PC) c (PC) + 20 Si(C) = 1

entonces(PC) t (PC) + re1

JNC re1

0 (PC) c (PC) + 20 Si(C) = 0

entonces(PC) t (PC) f re1

JB bit, re1 JNB bit, re1 JBC bit, re1:0 (PC) c (PC) + 3;??Si (bit) = 1

entonces(PC) t (PC) + re1

0 (PC) c (PC) + 3;?? Si (bit) = 0

entonces(PC) t (PC) + re1

0 (PC) t (PC) + 3;?? Si (bit) = 1

entonces(bit) t 0(PC) t (PC) + re1

A) Poner el Carry a set (1) si el bit0 del Puerto I es «l» (PI .O = l), el bit7 del acu-mulador es «l» (A.7 = 1) y elflag OV = 0.

0 Programa..

MOV C,Pl.O ; Carga ~1 Carry (C) con el bit0 del Puerto 1.; c t (P1.0)

ANL C,A.7 ; Operación AND con el Carry (C) y el bit7; del acumulador, es decir: C t (C).AND.(A.7)

ANL C,/OV ; Operación AND con el Carry (C) y el valor; complementado del flag de Overflow (OV); del registro PSW. C t (C).AND./NOT.OV

Page 52: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (ll) 5 1

B) Realizar la operación EXOR bit a bit, entre el b0 del Puerto 0 (PO.0) y el bl delPuerto 1 (P 1 . 1 ), depositando el resultado en el b7 del Puerto 2.

Para realizar la operación EXOR, el usuario debe crear un algoritmo, puesto que lainstrucción EXOR no la tienen implementada los microcontroladores de la familia 5 1.

La operación a realizar es:

P2.7 t PO.0 .EXOR. PI. 1

?? Programa.,

M O V C,PO.O ; Carga el bit0 del Puerto PO en elJlag Carry; c t (PO.0)

JNB Pl.l,SALTA ; Si P 1.1 = 0, C contiene el resultado; correcto y entonces salta; pero si Pl. l=l; el complemento de C es el resultado correcto.

CPL c

SALTA: MOV P7.2,C

; Complementa C.

; El contenido del Carry (C) lo almacena en; el bit7 del Puerto P2.; P7.2 t (C)

La dirección del destino del salto, en la memoria de programa, viene especificada,cuando el programa está escrito en Ensamblador, por una etiqueta. Así, en el ejemploanterior, la etiqueta (SALTA:) indica el origen y el destino del salto. Una vez ensam-blado el programa del usuario, la dirección del salto se convierte en un número (OFF-SET) del tamaño de un byte, que representa una dirección relativa, representada en elsistema de numeración binario en complemento a dos. El rango del salto (operando dela instrucción) puede estar comprendido entre - 128 y + 127 bytes. Si el operando es po-sitivo, el salto es adelante (direcciones crecientes de memoria); si es negativo, el salto esatrás (direcciones decrecientes de memoria).

4.2. INSTRUCCIONES DE SALTO

Un programa es una secuencia de instrucciones que el Contador de Programa (PC) rompeen función de:

a) Haber concluido la secuencia de instrucciones y salta a otra o recomienza lamisma. Este es un Salto Incondicional.

b) La Palabra de Estado del Programa (PSW) o del estado de uno o más bits de laentrada/salida de periféricos. Este es un Salto Condicional.

4.2.1. Instrucciones de salto incondicional

La Tabla 4.3 muestra la lista resumida de los saltos incondicionales. Aunque sólo figurela instrucción «JMP addr», de hecho hay tres tipos: SJMP, LJMP y AJMP, que difierenen el formato de la dirección de salto.

Page 53: LE002-Introduccion a Los Microcontroladores

5 2 Introducción a los Microcontroladores

Tabla 4.3.

JMP addr

JMP @A + DPTR

CALL a d d r

RET

RETI

NOP

No son afectados losflags.

Jump to addr 2

Jump to A + DPTR 2Cal1 subroutine at addr 2

Return from subroutine 2

Return from interrupt 2

No operation 1

] SJMP re1 1: (Short Juwlp). La dirección destino del salto viene dada por un«offset relativo», igual que en las instrucciones de salto booleanas. La instrucción tienedos bytes, correspondientes al código de operación y al byte de offset relativo. El rangodel salto está limitado a - 128 y + 127 bytes relativos al primer byte siguiente a la instruc-ción de salto.

PC t (PC) + 2PC e (PC) + re1

: (Long hmp). La dirección destino del salto viene dada poruna constante de 16 bits. La instrucción está formada por 3 bytes. 1 byte para el códigode operación y 2 para la dirección del salto. Por tanto, la dirección de destino está ubi-cada dentro del área de los 64K de la memoria de programa.

PC t addr16

pziEzq: (Absolute Jump). La dirección destino del salto viene dadapor una constante de ll bits. La instrucción tiene 2 bytes, uno para el código de opera-ción que también contiene en sí mismá 3 de los ll bits de direcciones, y otro byte quecontiene los 8 bits bajos de la dirección de destino. El código de la instrucción y el ope-rando es:

al0 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 al a0

CODIGO DE OPERACION OPERANDO

Por tanto, el destino del salto tiene que estar comprendido dentro del bloque de los2 Kbytes referenciado respecto a la siguiente instrucción a la del salto.

PC t (PC) + 2(PC 10-O) t dirección de la página

Page 54: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (ll) 53

En cualquier caso, el programador especifica la dirección de destino, bien como una eti-queta o como una dirección constante de 16 bits, en el programa escrito en lenguaje en-samblador. Este se encarga de darle el destino, en el formato correcto, según el código deoperación. Si este formato no soporta la distancia del salto, aparecerá un mensaje comoéste: «Destination out of range», que nos previene del error.

JMP @A + DPTR : Se trata de una instrucción de salto indirecto. Sumael byte contenido en el acumulador con los 16 bits del puntero de datos (DPTR) y cargael resultado de la suma en el contador de programa (PC). Esta será la dirección para lasubsiguiente búsqueda de la instrucción.

Ejemplo:

Se trata de establecer cinco caminos de ramificación del programa, dependiendo deque el acumulador tome valores comprendidos entre 0 y 4.

?? programa.’

MOV DPTR,#TABLA-SALTO ; Se carga el DPTR con la dirección; de la tabla de saltos.

MOV A,INDI ; Se carga el acumulador con la variable; índice (INDI). 0 6 INDI < 4.

RL A ; El valor cargado sufre; un desplazamiento de un bit; a la izquierda (multiplica por 2; el contenido del acumulador).

INDI:

JMP @A + DPTR

---------__--------___----___----AJMP SALTOO<AJMP SALTOlqAJMP SALT02< -1

; Se efectúa la suma: PC c (A) + (DPTR); y se produce el salto a otra instrucción; de salto que a su vez saltará al; subprograma a ejecutar.

Page 55: LE002-Introduccion a Los Microcontroladores

5 4 Introducción a los Microcontroladores

La instrucción RL A convierte la variable INDI (valor comprendido entre 0 y 4) enun número par de rango entre 0 y 8 para salvar, en el salto, los dos bytes de longitud quetiene cada entrada de salto, AJMP SALTOO, AJMP SALTOl,...

- Siguiendo con las instrucciones incondicionales, de la Tabla 4.3, ésta muestra lainstrucción CALL addr que tiene 2 formatos, LCALL y ACALL, que difieren en la formaen la que la CPU implementa la dirección donde se encuentra la subrutina.

Nota: CALL es el nombre genérico con que el programador se refiere a estas instrucciones de salto, y que setraducen en una «llamada» (generalmente suelen producirse varias llamadas desde el programa princi-pal, de ahí su interés, por el ahorro de memoria para la máquina y de trabajo para el programador) a unsubprograma (subrutina), que en sí mismo tiene su identidad para realizar una tarea definida.

1 LCALL addrló 1: Utiliza un formato de 16 bits para direccionar la subru-tina y esa área de direccionamiento es el máximo de 64 Kbytes de la memoria de pro-gramas.

Secuencia de operaciones:

0 (PC) t (PC) + 3

0 (SP) t (SP) + 1

?????? ?? ?w7-0)

0 (SP) t (SP) + 1

. ((sp)) + (PclS-8)

?? (PC) t addrl5-0

1 ACALL addrll 1 : Utiliza un formato de direccionamiento de ll bits, porlo que la subrutina debe estar dentro del área de los 2 Kbytes, a partir de la siguienteinstrucción.

Secuencia de operaciones:

. (PC) c (PC) + 2

. (SP) t (SP) + 1

. ((W) + (PC,,>

. (SP) t (SP) + 1

??????? ?w15-8)1-1 \ . . ._ . . _.

Page 56: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (ll) 55

Lo mismo que se indicó en los saltos incondicionales, el programador cuando trabajaen ensamblador sólo debe preocuparse de colocar la etiqueta; el programa ensambladordeterminará la longitud del salto y el formato que debe dar al código de instrucción se-gún la longitud del salto.

: Las subrutinas terminan su ejecución con la instrucción RET, quees la instrucción que indica la vuelta al programa principal, justo en la dirección de me-moria de la instrucción siguiente a la instrucción CALL.

Secuencia de operaciones:

?????? ??????? ????

. (SP) t (SP) - 1

?? w7-0) + (WN. (SP) t (SP) - 1

1 RETI 1: Utilizada para retornar de las rutinas del servicio de interrupcio-nes. Las interrupciones se estudian de forma especial en el Capítulo 10.

Secuencia de operaciones:

. (PCIS-8) + ((sp))

. (SP) t (SP) - 1

?? (PC,-0) + KW). (SP) t (SP) - 1

4.2.2. Instrucciones de salto condicional

La Tabla 4.4 muestra la lista de las instrucciones de salto condicional. Estas instruccio-nes son las que van a permitir al microcontrolador tomar decisiones (siguiendo secuen-cialmente una parte del programa u otra) ante una propuesta binaria, que en el lenguajecoloquial se contesta con una afirmación o negación. La propuesta de bifurcación de lasecuencia del programa se halla implícita dentro del código de operación y es el ope-rando el que señala la dirección del salto en el formato de «offset relativo», por lo que ladistancia del salto está limitada a - 128 y + 127 bytes referida a la instrucción siguiente ala del salto condicional. Trabajando con el programa ensamblador es suficiente señalarcon una etiqueta la dirección del salto o con una constante de 16 bits.

Page 57: LE002-Introduccion a Los Microcontroladores

56 Introducción C I los Microcontroladores

Tabla 4.4

JZ re1

JNZ re1

DJNZ <byte>,rel

JumpifA=O Accumulator only 2

Jump if A <> 0 Accumulator only 2

Decrement and jumpif not zero

x X 2I I I I I

CJNE,A,<byte>,rel Jump if A <> <byte> X X 2 X, I I I I

CJNE <byte>, # data,rel Jump if <byte> <> #data x x 2 x

Nota: En la Tabla 4.4 se señala como posible operando <byte>, pudiendo ser <byte>:

a) El acumulador.b) Los registros RO a R7 con direccionamiento directo.c) Los registros RO y R 1 con direccionamiento indirecto.

: Salta si es cero y salta si no es cero. Para determinar si cumplelas condiciones de las instrucciones JZ y JNZ, la CPU no pasa revista al registro de es-tado como ocurre en otros micros, sino que inspecciona directamente el registro acu-mulador, pues este microcontrolador no tiene @ug cero» en el registro de estado.

Secuencias de operaciones:

JZ re1

. (PC) t (PC) + 2?? Si (A) = 0

entonces(PC) t (PC) + re1

JNZ re1

0 (PC) t (PC) + 2??Si(A) <> 0

entonces(PC) c (PC) + re1

: Decrementa y salta si no es cero. Esta instrucción está especiali-zada en lazos de control. Para que ejecute un lazo y1 veces se carga un «contadon> con y1y, cada vez que se ejecute el contenido del lazo, el contador decrementa una unidad, sa-liendo del lazo cuando el contenido del contador sea cero.

Page 58: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (llj 57

Secuencias de operaciones:

. (PC) t (PC) + 2?? (<byte>) t (<byte>) - 1?? Si (<byte>) > 0 o (<byte>> < 0

entonces(PC) t (PC) + re1

Ejemplo.

Ejecutar el lazo 10 veces.

MOVCONTADOR,#lOLAZO: (comienzodellazo)

-------------------- ,-------------------- + Instrucciones que se van a ejecutar mien-_----_-----_-------- l tras CONTADOR sea distinto de «cero»._---__----__----_---

(findellazo)

DJNZ CONTADOR, LAZO

ElCJNE : Compara y salta, si el resultado de la comparación no es igual.En este caso hay dos formatos, según la comparación se haga con el acumulador o

con un operando tipo <byte>, que puede ser:

??Con direccionamiento indirecto (registros RO y RI).

0 Con direccionamiento directo (registros RO a R7).

CASO l.“MODELO +CJNEA, <byte>, salto relativo

Secuencia de operaciones:

. (PC) c (PC) + 3?? Si (A) <> (<byte>)

entonces(PC) c (PC) + re1

Si (A) < (<byte>)entonces

K) + 1sino

Page 59: LE002-Introduccion a Los Microcontroladores

58 Introducción a los Microcontroladores

Ejemplo:

Ejecuta las instrucciones que hay dentro del lazo hasta que la lectura del periférico através del Puerto 0 (PO), se corresponda con el valor de la posmem 7FH.

MOV A, POLAZO: __----

------CJNE A, 7F, LAZO

CASO2.“:MODELO +CJNE <byte>,#dato, salto relativo

Otra aplicación de estas instrucciones es la comparación «mayor que» y «menor que».Si de los dos bytes del campo de operandos el primero es menor que el segundo, enton-ces el «flag CARRY» del PSW se pone a «uno». Si el primer byte es mayor o igual queel segundo, entonces el @zg CARRY» es «cero». Éstos y otros aspectos están aclaradosen el Apéndice A.

Secuencia de operaciones:

Según se trate de direccionamiento indirecto (registros RO y Rl (8Ri)) o direcciona-miento directo (registros RO y R7 (Rn)) es:

CJNE @Ri, #data, re1 CJNE Rn, #data, re1

. (PC) t (PC) + 3??Si ((Ri)) odata

entonces(PC) t (PC) + re1

?? Si ((Ri)) <dataentonces

cc> +- 1sino

cc> + 0

. (PC) t (PC) + 3??Si (Rn) odata

entonces(PC) t (PC) + re1

??Si (Rn) <dataentonces

cc> + 1sino

m + 0

Seguidamente, y como resumen, se muestra el set de instrucciones de la familia 51(Tabla 4.5).

Al comienzo de estas tablas se señalan las instrucciones que afectan a 1osJlags delPSW, así como unas notas sobre los símbolos utilizados en estas tablas, y a continuacióntodas las instrucciones con todos los tipos de direccionamientos que admiten; por estarazón la lista aparece muy dilatada.

Page 60: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (ll)

4.3. «SET» DE INSTRUCCIONES FAMILIA-51

59

Tabla 4.5.

Instrucciones que afectan a los «flags»:

Flag

Instrucción C OV AC- - -

A D DA D D CSUBBMULDIVD ARRCRLCSETB C

x x xx x xx x x0 x0 xXXX

1

Instrucción

CLR CCPL cANL C, bitANL C,/bitORL C, bitORL C,/bitMOV C, bitCJNE

Flag

C OV AC

0XXXXXXX

Notas sobre el simificado de los operandos de las instrucciones que se describena continuación:

Rn . . . . . . . . . . . . .direct . . . . . . . . . . .

@Ri . . . . . . . . . . . .

#data . . . . . . . . . .#data16 . . . . . . . .addr 16 . . . . . . . . .

addr ll . . . . . . . . .

re1 . . . . . . . . . . . . .

Registros RO-R7 del banco de registros seleccionado.Dirección del dato de 8 bits de la memoria interna. Puede ser un datode la RAM interna (0- 127 para el 805 1 o O-255 para el 8052) o un re-gistro del SFR (por ejemplo, Puerto de E/S, registro de control, registrode estado (128-255).Se refiere a los registros RO y Rl, que permiten el direccionamientoindirecto para acceder a los datos de 8 bits de la RAM interna (80-FFH)solapada con el SFR para el 8052 y (OO-7FH) para el 8052/805 1 .Operando constante de 8 bitsOperando constante de 16 bi ts .Dirección dest ino de 16 bits . Uti l izada por las instrucciones de sal toLCALL y LJMP para permitir el sal to dentro del espacio de 64Kbytesde la memoria de programas.Dirección dest ino de 11 bits . Uti l izada por las instrucciones de sal toACALL y AJMP para permitir el salto dentro de la página de 2Kbytesde la memoria de programas a partir del primer byte de la siguienteinstrucción.Salto relativo en formato de 8 bits en complemento a 2. Utilizadopor la instrucción SJMP y todos los sal tos condicionales . El rango delsalto (8 bits) está comprendido entre -128 a +127 bytes a partir delprimer byte de la s iguiente instrucción.

Page 61: LE002-Introduccion a Los Microcontroladores

6 0 Introducción a los Microcontrolodores

Tabla 4.5. (continuación)

bit . . . . . . . . . . . . . Direccionamiento directo «bit a bit» dentro del área de la memoriaRAM interna y de los regis t ros SFR que lo permiten.

rrr . . . . . . . . . . . . . En la columna de Codificación indica el registro implicado en la ins-trucción (Rn). Así:

r r r Regis t ro

0 0 0 RO0 0 1 Rl0 1 0 R2================1 1 1 R7

i . . . . . . . . . . . . . . En la columna de Codificación indica el registro implicado en la ins-trucción de direccionamiento indirecto (@Ri). As í :

i Regis t ro0 @ R O

1 @Rl

Tabla 4.6. Instrucciones aritméticas

\DD A,Rn

\DD A,direct

1DD A,@Ri

4DD A,#data

4DDC A,Rn

4DDC A,direct

4DDC A,@Ri

ADDC A,#data

SUBB A,Rn

S L J B B A,direct

SUBB A,@Ri

SUBB A,#data

INC A

Add register toAccumulator

pciiqq

Add direct byte toAccumulator

pjiG$Kq~l

Add indirect RAM to fiiiiqmAccumtdatorAdd immediate data to pi-+iiq~]AccumulatorAdd register toAccumulator with Carry

/iiiqiq

Add direct byte toAccumulator with Carry

[001i101011(1

Add indirect RAM toAccumulator with Cany

ljiizpq

Add immediate data toAcc with Cany

(001i(01001(1

Subtract Register fromAcc with borrow

p.tiipq

Subtmct direct byte from 11001)0101) )]Acc with borrowSubtract indirect RAMfrom ACC witb borrow

)1oo11011i]

Subtract immediate datafrom Acc with borrow

pE7qzii1~1

Increment Accumulator piiizpq

1 1 2

2 12

I 12

2 1 2

1 12

2 12

1 12

2 1 2

I 1 2

2 12

1 12

2 12

1 1 2

Page 62: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores 8052/8051 (Il) 6 1

Tabla 4.6. Instrucciones aritméticas (continuación)

INC Rn

INC direct

INC @Ri

DEC A

DEC Rn

Increment register l-i%qGA I 1 2

Increment direct byte [0000101011-l 2 1 2

Increment direct RAM pli] 1 1 2

Decrement Accumulator p7iiiqq 1 1 2

Decrement Register ~OOOl~lrrr~ 1 1 2

DEC direct Decrement direct byte piii$Eq~l 2 12

DEC @Ri Decrement indirect RAM p\ 1 12

INC D P T R

MUL A B

DIV A B

DA A

Increment Data Pointer ~1010~0011~ 1 24

Multiply A&B 11010101001 1 48

Divide A by B 11000101001 1 48

Decimal Adjust piiipiq 1 1 2Accumulator

Tabla 4.7. Instrucciones lógicas

4NL

4NL

4NL

4NL

ANL

ANL

ORL

ORL

)RL

)RL

)RL

A,Rn

A,direct

A,@Ri

A,#data

direct,A

direct, #data

A,Rn

A,direct

A,@Ri

A,#da t a

direct,A

AND Register toAccumulatorAND direct byte toAccumulatorAND indirect RAM toAccumulatorAND immediate data toAccumulatorAND Accumulator todirect byteAND immediate data todirect byteOR register toAccumulatorOR direct byte toAccumulatorOR indirect RAM toAccumulatorOR immediate data toAccumulatorOR Accumulator to directbyte

Page 63: LE002-Introduccion a Los Microcontroladores

.. 62 Introducción Q los Microcontroladores

Tabla 4.7. Instrucciones lógicas (continuación)

ORL direct, #data

X R L A,Rn

X R L A,direct

X R L A,@Ri

X R L A, #data

X R L direct,A

XRL direct, #data

CLR

CPL

RL

RLC

R R

R R C

SWAP

OR immediate data todirect byteExclusive-OR register toAccumulatorExclusive-OR direct byteto AccumulatorExclusive-OR indirectRAM to AccumulatorExclusive-OR immediatedata to AccumulatorExclusive-ORAccumulator to directbyteExclusive-OR immediatedata to direct byteClear Accumulator

ComplementAccumulator

~1~1~1 32 4

~111~0100~ 1 12

[Illllolooj 1 12

Rotate Accumulator Left 10 0 I 0 10 0 I II

Rotate Accumulator LeR,through the Can-y -

w]

1 12

1 12

Rotate Accumulator Right 10000100111 1 1 2

Rotate Accumulator Rightthrdugh the Carry

-1 1 12

Swap nibbles within the fi-iK@El 1 12Accumulator

Tabla 4.8. Instrucciones de transferencia de datos

MOV A,Rn Move register to -1 1 12Accumulator

MOV A,direct Move direct byte to 2 12Accumulator

p7Tqi-q f.--GGq

M O V A,@Ri Move indirect RAM to WI 1 12Accumulator

MOV A,#data Move immediate data to pi7qizGl~l 2 12Accumulator

MOV Rn,A Move Accumulator towokttpr

Illllllrrrl 1 12

Page 64: LE002-Introduccion a Los Microcontroladores

Programación de los Microcontroladores ¿?052/8051 (ll) 63

Tabla 4.8. Instrucciones de transferencia de datos (continuación)

MOV Rn,direct Move direct byte to l-izpq riiizzq 2register

MOV Rn,#data Move immediate data to -1 -1 2register

MOV diWt,A Move Accumulator todirect bvte

/.iKpiq~~

MOV direct,Rn Move register to direct p7iiqiGl~j 2byte

MOV direct,direct Movedirect byte to direct -1 -1 -13

MOV direct,@Ri Move indirect RAM to piiTq¿q riiizGq 2direct byte

MOV direct, # data Move immediate data todirect byte

10]lIV] 3

MOV @Ri,A Move Accumulator to pi+Zl 1indirect RAM

MOV @Ri,direct Move direct byte to pLii$mlIdirectaddressI 2indirect RAM

MOV @Ri,#data Move immediate data toindirect RAM

p.EipTl~] 2

MOV DPTR, # data1 6 Load Data Pointer with a r-/---j~II’7l 31001 0000 tmmed data158 tmmed data7-0ló-bit constant

MOVC A,@AtDPTR Move Code byte relative liiz$iq 1to DPTR to Acc

MOVC A,@AtPC Move Code byte relativeto PC to Acc

WI 1

MOVX- A,@Ri Move Extemal RAM (8- wl 1bit addr) to Acc

MOVX A,@DPTR Move Externa1 RAM (16- j?G$GFj 1bit addr) to Acc

M O V X @Ri,A Move Acc to ExtemalRAM (8-bit addr)

/.hi$Zl

MOVX @DPTR,A Move Acc to Extemal [1111100001 1RAM (ló-bit addr)

PUSH direct Push direct byte into stack m -1 2

POP direct Pop direct byte from stack m -1 2

XCH A,Rn Exchange register with Ac- -1 1cumulator

XCH A,diWt Exchange direct byte withAccumulator

11100101011 m] 2

XCH A,@Ri

XCHD A,@Ri

Exchange indirect RAM 1with AccumulatorExchange low-arder Digit WI lindirect RAM with Acc

24

1 2

12

24

24

24

24

1 2

24

1 2

24

24

24

24

24

24

24

24

24

1 2

Page 65: LE002-Introduccion a Los Microcontroladores

’ 64 Introducción a los Microcontroladores

Tabla 4.9. Instrucciones booleanas

CLR

CLR

SETB

SETB

CPL

CPL

ANL

ANL

O R L

O R L

MOV

MOV

J C

JNC

JB

JNB

JBC

C

bit

C

bit

C

bit

C,bit

C,/bit

C,bit

C,/bit

C,bit

bit,C

rel

rel

bit,rel

bit,rel

bit,rel

Clear Cany !pj¿qiq I

Clear direct bit 111001001QllJ 2

Set Cany l-izipq 1

Set direct bit l-iTqGq~l 2

Complement Carry 11o11(00111 1

Complement direct bit l-iiqE%l~l 2

AND direct bit to pi?zp-E[~l‘2CARRYAND complement of l-it+GGl~l 2direct bit to CarryOR direct bit to Cany liizpiq r.izGq 2

OR complement of direct m\ (1 2bit to CanyMove direct bit to Carry pjTi-py~l 2

Move Carry to direct bit [100110010l~l 2

Jump if Carry is set pi¿z$q r--&iGq 2

Jump if Cany not set piiTq%q~l 2

Jump if direct Bit is set l-?zzpq~l(Il3

Jump if direct 10011/00001~1~13Bit is Not setJump if direct [000110000/~j~l3Bit is set &clear bit

Tabla 4.10. Instrucciones de salto

ACALL addrl I Absolute Subroutine Call -1 a7 ~36 a5 a4 a3 a2 al ao 2

ml&l&, 3

24

LCALL addrló Long Subroutine Call 2 4

RET Retum from Subroutine ploloolO] 1 24

RBTI Retum from interrupt l¿iKpEj I 24

AJMP addrl l Absolute Jump &.iZ$Kj a7 a6 a5 h a3 a2 al ao 2 24

U M P addrló Long Jump I”“lõõiõl&,&] 32 4

SJMP rel Short Jump (relative WI-1 2 24

12

12

12

12

12

12

24

24

24

24

12

24

24

24

24

24

24

Page 66: LE002-Introduccion a Los Microcontroladores

Programación 8052/8051 (Il) 65

Tabla 4.10. Instrucciones de salto (continuación)

J M P @AtDPTR Jump indirect relative to lpi-qicq I 2 4the DPTR

JZ re1 Jump if Accumulator isík0

/TixqcGl(l 2 2 4

JNZ re1 Jump if Accumulator isNot Zem

/iTixpq~l 2 2 4

CJNE A,direct,rel Compare direct byte toAcc and Jump if Not

j%-$%ij~j~I 32 4

EuuaICJNE A, #data,rel Compare immediate to

Acc and Jump if Notf%+iiiil~/-%%%-j 32 4

EqdCJNE Rn, #data,rel Compare immediate to

register and Jump if(~l~I(I 32 4

Not EqualCINE @RI, # data,rel Compare immediate to

indirect and Jump if Not[~l~l)) 32 4

EqUdDJNZ Rn,rel Decrement register and 2 2 4

Jump if Not Zerof-riiqqlIl

DJNZ direct,rel Decrement direct byteand Jump if Not Zero

[1101)0101lldirectaddress))l 32 4

NOP No Operation (ooooloooo( I 1 2

1. Escribir la instrucción que resuelva la con-dición de salto relativo cuando elflas FO(overflow) se halla act ivado.

5. Escribir las instrucciones para efectuar unsalto a una subrutina si el programa prin-cipal y la subrutina utilizan comúnmente

2. Los saltos relativos están situados dentro delrango comprendido entre - 128 y + 127 by-tes. $ómo se procedería si el salto que tu-viese que realizar fuese de 300 bytes? Ilus-trar con un ejemplo la forma de proceder.

3. Establecer las diferencias entre las instruc-ciones JMP con los prefijos S, L y A.

4. Comentar la diferencia entre las instruc-ciones RET y RETI.

el registro B.Nota: Hay varias soluciones, pero se aconsejaguardar el registro B en la memoria de PILALIFO (Sta&).

iQué «chequea» la CPU para realizar lossal tos condicionales JZ y JNZ? Just if icarla respuesta.

Señalar las diferencias entre las instruccio-nes: CJNE A, <byte>, #data, re1 y CJNE<byte>, # data, re1

Page 67: LE002-Introduccion a Los Microcontroladores

CAPITULO

Presentación del equipo emuladorpara el desarrollo de aplicaciones

5.1. INTRODUCCION

Hay en el mercado varios sistemas de desarrollo de aplicaciones de diferentes caracterís-ticas. El equipo, MICE-IIS es potente, versátil y económico, este último aspecto porqueutiliza como unidad central un PC al que va unido mediante una línea de comunicaciónserie B-232.

En este capítulo no se pretende dar características del equipo y menos estudiar todaslas posibilidades de utilización. Es evidente que el equipo tiene su manual de usuario endonde figuran muchos más aspectos de los que en este breve capítulo se van a ver. Nues-tro objetivo es iniciarle en el manejo de esta importante herramienta para que pueda se-guir con menos dificultad los ejercicios que acompañan a las explicaciones de la familiade Microcontroladores-5 1.

Los ejercicios que se van a presentar en este libro y los que el propio usuario elabore,pueden ser comprobados utilizando un emulador o un simulador. La diferencia, ademásdel precio, es que en un simulador las pruebas se realizan sobre dispositiiros (general-mente en la pantalla de su PC) que no son los reales sobre los que va a «corren> la apli-cación. El emulador, en cambio, desarrolla el diseño sobre los componentes reales queposteriormente se emplearán para implementar el prototipo. Todos los ejercicios de estelibro han sido probados con el emulador MICE-11s.

Nota: En este capítulo se han establecido los siguientes criterios:

a) Los comandos y notas de interés se han recuadrado.b) También se han recuadrado las imágenes de la pantalla en la que aparecen listados de los ejerci-

cios de aplicación y los procesos que debe afrontar el usuario interactivamente con los programas Ensam-blador, Enlazador (Linker) y de Emulación.

Los recuadros b) difieren de los a), en que los primeros son adyacentes al margen izquierdo.

El diálogo del usuario con el Emulador, cuando se realiza en la dirección usuario a Emulador, se realzacon letra negrita. Así, por ejemplo, si se quiere modificar el contenido de la posmem interna 90 H escri-biendo en ella 33 H se tecleará:

66

Page 68: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 67

>M190y el Emulador contesta0090 55; es decir, que contiene 55 H.0090 55 33; en la posmem 90 H se escribe 33 H.para comprobar la operación...

>MI900090 33

(La orden MI xx se utiliza para leer y escribir en la memoria interna del emulador, que es como si lohiciera en la del microcontrolador.)

5.2. COMANDOS DEL «MICE-11% PARA CONFIGURARLA MEMORIA DE TRABAJO

En este apartado se pasa revista a los principales comandos con objeto de poder desarro-llar una aplicación con microcontroladores utilizando el sistema de desarollo MICE-11s.

Todos los comandos se escriben recuadrados y comienzan con el símbolo del«prompt» (>), que es el aviso con que el MICE-IIS indica que está «listo» para recibircomandos y por tanto no se debe escribir.

El>? : Menú de ayuda.

??? : Indica el tipo de microcontrolador que el sistema está emulando.

I>!Ml : Selecciona el Microcontrolador 8052.

I>*?1: Muestra el menú de comandos para configurar la memoria de emulaciónSUEM* y otras utilidades (véase manual del usuario).

: Indica el estado de la memoria de emulación.

A continuación se muestran algunos de los atributos de configuración de la memoriade emulación.

1 : Memoria de emulación interna con permiso de lectura y escritura.IR : Memoria de emulación interna con permiso de lectura solamente.

* SUEM: Super Universal Emulation Memory.

Page 69: LE002-Introduccion a Los Microcontroladores

68 Introducción a los Microcontroladores

E : Memoria externa (tarjeta prototipo), con permiso de lectura y escritura.ER : Memoria externa (tarjeta prototipo), con permiso de lectura solamente.G : Acceso no permitido.

Por ejemplo:

>*MOlFFFIR>*M

Rango: 0 a1MbconlKderesolución000000 a OOlFFFinterna sólo lectura (IR)002000 a OlFFFFinternalectura/escritura (1)

~ 020000aOEEFFFexternalectura/escritura (E)OEFOOO a OFFFFFprotegida (G)

Por defecto, éstos son los atributos que presenta la memoria de emulación despuésde un Rket:

>*M

Rango: 0 a1Mb con 1Kde resolución000000aO1FFFFinternalectura/escritura (1)020000aOEEFFFexternalectura/escritura (E)OEFOOO a OFFFFFprotegida (G)

5.3. EJECUCION Y ESTUDIO ELEMENTAL DE UN PROGRAMAEN EL EMULADOR MICE-IIS

La primera operación a realizar es la escritura del programa en la memoria de emula-ción. Esta operación se puede realizar de dos formas diferentes:

a) Utilizando el ensamblador del propio emulador.b) Utilizando un macroensamblador.

La primera opción es más rápida para pequeños programas. La segunda es más pro-fesional y necesaria para generar aplicaciones de más envergadura.

5.3.1. El ensamblador del emulador MICE-IIS

Este ensamblador se encuentra incluido dentro del software del propio emulador, en elque además se incluyen otras utilidades como:

Page 70: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 69

??Comandos para acceder a memoria, puertos y registros.??Comandos para el control de señales.??Comandos de emulación y traza.??Comandos de emulación «paso a paso».??Comandos para integrar el emulador dentro de otros sistemas.

A continuación se hace una entrada en este entorno, no para comentar comando trascomando, sino para aprender a utilizar un sistema de desarrollo, y más que detenemosa explicar el emulador MICE-IIS, se indican las operaciones imprescindibles que debenrealizarse. Casi todas estas operaciones son comunes a todos los sistemas de desarrollo.

Para entrar en el entorno de trabajo se ejecuta el archivo USD.

: Para llamar al Universal Symbolic Debugger (USD).

El>*M E : Para habilitar la memoria de emulación y así permitir la lectura y escri-tura del programa en la SUEM (Super Universal Emulation Memo&.

Para inhabilitarla se utilizaría el comandoEl>*M D

Para comprobar su estadoEl>*M

Estos comandos son importantes para permitir la lectura en la memoria de emula-ción del MICE-IIS o en la memoria externa de la tarjeta prototipo, según el proyecto estéen la etapa de desarrollo o en la de verificación sobre el hard desarrollado.

El>EA : Autoriza (enable) memoria interna. Posibilita el trabajo con la memoria in-terna, y por tanto actúa como microcontrolador.

En el caso contrario actuaría como microprocesador, utilizando la memoria de pro-

gramas EPROM externa. En este caso se utilizaría el comandoEl>DA : Desautoriza

(disable) memoria interna.Estos dos últimos comandos tienen una importancia trascendente para seleccionar el

tipo de microcontrolador. Así:El Microcontrolador 8032 no tiene memoria de programas interna accesible al usua-

rio; por esta razón hay que hacer trabajar al microcontrolador con memoria externa(como microprocesador).y habilitar dicha memoria externa.

Estos son los pasos que hay que dar:

>*M E

>DA>18 0 3 2

Page 71: LE002-Introduccion a Los Microcontroladores

70 Introducción a los Microcontroladores

El Microcontrolador 8052 tiene memoria de programas accesible al usuario, aunquesea del tipo EPROM (el emulador la emula utilizando la memoria de RAM de emula-ción) (SUEM); por esta razón, para trabajar con la memoria interna (como microcontro-lador), se deben dar los siguientes pasos:

Estos comandos se corresponden con la señal aplicada a la patilla (3 1)del microcontrolador:

EA = 1 (+5 voltios) Memoria interna.EA = 0 ( 0 voltios) Memoria externa.

Seguidamente se procede a cargar el programa en la memoria de programas del Mi-crocontrolador 8052, trabajando con el ensamblador incorporado en el USD.

Se llama al USD:

C: >USDLinking serialport: COMl9600 baudrate, 8 databit, NONEparityCtrl-Cto returnDOS, andchangelinking status byediting"USD INS" file.>

Se prepara para trabajar con el Microcontrolador 8052:

>!EP80154V3.2>>IM52>>!EP8032V3.2>>EA>>1EP8052V3.2

Page 72: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 71

Obsérvese cómo se ha cambiado del Microcontrolador 8032 al 8052 con el coman-do EA.

A continuación se escribe el programa utilizando un: editor muy elemental que in-corpora el USD. Este es un ensamblador directo, en el sentido de que según se van te-cleando los nemónicos de las instrucciones y los operandos, se van cargando directa-mente en memoria. El inconveniente que tiene es que no se pueden insertar líneas en elprograma y los errores‘que hubiere obligan a reescribir el programa desde ese punto alfinal. No obstante, es muy cómodo para escribir pequeños programas, pues las operacio-nes a realizar son pocas y sencillas. Para los que hayan trabajado con el programa DE-BUG del DOS-PC les diremos que es muy parecido.

A este ensamblador directo se le llama con el comando LINE ASSEMBLY, que tieneel siguiente formato:

>A [direccióncomienzoprograma]

>>A0200LOC OBJ LINE LABEL SOURCECODE0200 7433 0001 MOVA,#330202 257F 0002 ADDA,7F0204 7890 0003 MOVRO,#900206 F6 0004 MOV@RO,A0207 0005

El programa, en la memoria del emulador, puede ser grabado en el disco para su ar-chivo y almacenamiento con el comando UPLOAD (UP):

1 UP [nomfich. HEX] 1

Indicando el rango, esto es, la posición de memoria de comienzo del programa y laposmem de la última instrucción.

>UPPRUEBA.EXEUploadmemoryrange: 0200, 0206

Uploadmemory range: <CR> (retornodecarro)Uploadcompleted!>

Page 73: LE002-Introduccion a Los Microcontroladores

72 Introducción a los Microcontroladores

Como se puede observar, el programa muestra el formato del direccionamiento in-mediato, directo e indirecto, además de realizar operaciones de transferencia de datos yuna operación aritmética.

Los datos sólo pueden ser suministrados en código de numeración hexadecimal, poresta razón no se escribe al lina1 de los mismos la letra (H).

I INSTRUCCIÓN 1 DIRECCIONAMIENTO 1 OPERACIÓN I

MOV A, # 33ADD A,7FMOV RO, # 90MOV @RO,A

InmediatoDirectoInmediatoIndirecto

A t33A t (7F) +33

t 90(k& tA

El programa ya está almacenado en el disco y listo para ser cargado en la memoria cen-tral y ejecutarlo.

C:>DIRPRUEBA.*

VolumenenunidadC sinetiquetaDirectoriodeC: \USD

PRUEBA HEX 40 21/01/91 2:03lArchivo 372736byteslibres

Ahora se puede ejecutar el programa.Hay varios modos de ejecutar el programa. El normal sería utilizando el comando:

>G [direccióncomienzoprograma]

o también, situando el puntero o contador de programa en la dirección de comienzo delprograma y a continuación ejecutando (G), así:

>J [direccióncomienzoprograma]>G

Page 74: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo dé aplicaciones 73

El primer inconveniente que tiene esta forma de trabajo, que es la habitual, es queno permite hacer un seguimiento exhaustivo, instrucción por instrucción, que es, en es-tos momentos de familiarízación con el equipo, la que importa. El segundo inconve-niente es parar la ejecución en la instrucción que interesa, bien porque sea el final delprograma o porque se quiere ver algún registro de estado en cualquiera de las instruccio-nes. Esta dificultad se soslaya utilizando los puntos de ruptura, que a continuación sevan a analizar; no obstante, la importancia que tienen y los distintos formatos que pre-sentan nos obliga advertir al lector consulte el manual del emulador para mayor infor-mación.

La letra (x) significa que puede ser cualquiera de los dos puntos de ruptura que pre-senta H 1 y H2. Si el equipo cuenta con la tarjeta BPP*, puede tener más puntos de rup-tura.

>Hx [direcciónde stop] : Breakpoint 1 o 2. Para la parada del programa enla instrucción siguiente a la señalada en el comando.

Se pueden poner los dos puntos de ruptura simultáneamente para que se detenga enel primero, y al volver a ejecutarlo, en el segundo, y así sucesivamente.

>Hx [contador] [direcciónde stop] : Permite hacer la parada en la ins-trucción indicada en la «pasada número» (según indicación del contador) comprendidaentre 1 y 4000 H.

: Borra todos los puntos de ruptura programados.

HI y H2, sin ningún parámetro, nos informan de la situación «on-CJJ~ del punto deruptura referido.

Seguidamente se muestra la ejecución del programa con este método, partiendo delmomento del arranque del microcontrolador para que pueda servir de repaso.

Puesto que el programa se encuentra en el disco, se puede transferir a la memoria delemulador con el comando DOWNLOAD (DO), y para comprobar que el programa estáahí, se hace un desensamblado:

>DO [nomfich. EXE]>Z [posmem.inicio posmem.final]

* BPP= BREAKPOINTPROCESSOR= ProcesadordePuntosdeRuptura.

Page 75: LE002-Introduccion a Los Microcontroladores

74 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

>1

EP8052V3.2>*MDMap: emulationmemorygloballydisabled>>DOPRUEBA.HEX

Download completed!>>Z 0200 0206LOC OBJ LIN LABEL SOURCE CODE0200 7433 0001 MOV A,#330202 257F 0002 ADD A,7F0204 7 8 9 0 0003 MOV RO,+900206 F6 0004 MOV @ROA

DISASSEMBLYCOMPLETED

También puede desensamblarse del modo siguiente: situar el puntero en la primerainstrucción a desensamblar y ejecutar el comando (Z) sin ningún parámetro.

>DO [pos.mem.inicio]>JO200>Z

Seguidamente se carga la posición de memoria interna 7F (comando MI) con eldato 70.

>MI 7F

007F 55700 0 8 0 5 5

>MI 7F007F 70

Se programa el «punto de ruptura» para que detenga la ejecución del programa en laúltima instrucción y poder ver el resultado.

Page 76: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 75

>HlHl=>H10206>HlH1=0206

I >

Se ejecuta y se revisan los registros principales:

>G OiOOPROGRAMBROKEATADDRESS 0207>RACC B PSW SP DPH DPL RO RlR2 R3 R4 R5 R6 R7 PSW PC(EO)(FO)(DO)(81)(83)(82) CAFBBO-PA3 00 04 07 00 00 9055575555555500 00000100 0207

>MI 900090A3

>

La solución, como puede verse en la posición de memoria interna 90, es A3.

EJECUCIÓN PASO A PASO:

Permite hacer el seguimiento del programa «instrucción a instrucción», lo que faci-lita la búsqueda de errores. Además de la información que se ofrece directamente, puedeconsultar cualquier registro o posición de memoria, sin que se pierda el puntero del pro-grama.

El modo de ejecución «paso a paso» puede realizarse fundamentalmente de dos ma-neras, en función de que se pretenda más o menos información; así, el formato:

da la máxima información, como se puede observar a continuación:

>JO200>SRIFADDR ADDRESSDATA SOURCECODE0200 0200 74 MOV A,#33

ACC B PSW SP DPH DPL RO RlR2 R3 R4 R5 R6 R7 PSW PC(EO) (FO) (D0)(81)(83)(82) CAFBBO-P33 00 00 07 00 00 75 55 5155 55 55 55 55 00000000 02020202 0202 25 ADD A,lF

Page 77: LE002-Introduccion a Los Microcontroladores

76 Introducción Q los Microcontroladores

ACC B(EO)A3 OO0204

ACC B(EO)A3 OO0206

ACC B(EO) (FO)A3 OO

>>MI 900090A3

PSW SP DPH DPL(D0)(81)(83)(82)04 07 0 0 0 00204 7 8

PSW SP DPH DPL(D0)(81)(83)(82)04 07 0 0 0 00206 F 6

PSW SI? DPH DPL(D0)(81)(fJ3)(82)04 07 0 0 0 0

RO RlR2 R3 R4 RS R6 R7

755557 5555 5555 55MOV RO,#90RO RlR2 R3 R4 R5 R6 R7

90 5557 5555 5555 55MOV @R~,ARO RlR2 R3 R4 R5 R6 R7

9055 57 55 5555 5555

PSWCAFBBO-P00000100

PC

0204

PSWCAFBBO-P00000100

PC

0206

PSW PCCAFBBO-P00000100 0207

El resultado se encuentra en la posmem 90 H.El otro formato para realizar la ejecución «paso a paso» es utilizando el comando:

>J [direccióndecomienzo]>sz

Esta modalidad permite hacer el seguimiento del programa «paso a paso» mane-jando una información más simplificada, de esta manera no aparece el estado de los re-gistros. Pero este inconveniente se soslaya haciendo un «escape» (tecla ESCAPE) y pul-sando la tecla R aparece el estado de los registros. Tecleando nuevamente SZ y <CR>vuelve a entrar en el modo «paso a paso» justo donde se salió.

Seguidamente se muestra el aspecto que tiene la información. Se observa cómo enun determinado momento, en la instrucción MOV RO, # 90, hace una parada para vi-sualizar el estado de los registros principales.

>JO200>sz

IFADDR ADDRESS DATA SOURCECODE0200 0200 74 M O V A,#330202 0202 25 ADD A,7F0204 0204 78 M O V RO,#90

>RACC B PSW SP DPH DPL RORlR2 R3 R4 R5 R6R7 PSW PC(EO) (DO)(81)(83)(82) CAFBBO-PA3 OO 04 07 00 00 905557555555550000000100 0206

Page 78: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 77

>sz1 FADDR ADDRESS DATA SOURCECODE

0 2 0 6 0 2 0 6 F6 M O V 62~0,~

0 2 0 7 0 2 0 7 5 5 ANL A, 7E

>>MI 90

0090 A3

>

Como se dijo anteriormente, en la fase de aprendizaje es conveniente utilizar el en-samblador directo, pero la dificultad de no poder modificar, insertar y suprimir con lacomodidad necesaria cuando se trabaja con programas de aplicación grandes obliga, sinsuponer un coste económico grande, a utilizar un macroensamblador.

Seguidamente se pasa a comentar el modo de trabajo con el Macroensambla-dor 2500, que puede adquirir en la misma «casa» donde haya comprado el emulador.

5.3.2. El Macroensamblador 2500AD

Para trabajar con el macroensamblador se deben seguir ciertas normas perfectamente se-cuenciadas de este modo:

? Operación de editado: En esta fase se escribe el programa FUENTE. Para esta ope-ración es preciso utilizar un editor de textos que permita escribir el programa uti-lizando exclusivamente caracteres ASCII. El archivo así obtenido se salvará con laextensión (.ASM).

? Operación de ensamblado: Con la operación de ensamblado se convierte el archivoque contiene el código fuente (archivo fuente) en un archivo objeto (extensión.OBJ). Este proceso de traducción se realiza con la ayuda de un programa llamadoensamblador.

?? Operación de linkado (Enlazado): El archivo *.OBJ se convierte en un archivo for-mato INTEL.HEX, que es perfectamente ejecutable por el emulador MICE-11s.Este paso se realiza con la ayuda de un programa llamado «editor de enlaces» ol inker .

?? Operación de ejecución: Para ejecutar el programa hay que cargarlo en la memoriade emulación con el comando DOWNLOAD, el mismo que fue utilizado ante-riormente con el ensamblador directo (DO nomfich:HEX).

Hay en el mercado simuladores que permiten ejecutar y depurar los programas. Esun software que facilita el seguimiento preciso de las instrucciones, e incluso se puedenprogramar las entradas y salidas, aunque no son reales. Es evidente que su fin es el en-trenamiento, y éste lo cumple con creces.

Page 79: LE002-Introduccion a Los Microcontroladores

78 Introduccidn a los Microcontroladores

H Operación de editado

A continuación se muestra el programa ejecutado anteriormente, escrito para ser pro-cesado por el Macroensamblador 2500AD, que utiliza las directivas comunes a los ma-croensambladores más estándares del mercado.

En general, las sentencias de los programas «fuente» escritos en el lenguaje ensam-blador se organizan, cuando se imprimen o visualizan en pantalla, en cuatro columnas.La primera contiene los rótulos o etiquetas que definen posiciones de memoria relativasutilizadas por los saltos y llamadas a subrutinas, o simplemente como identificadores deposiciones de datos particulares. La segunda columna contiene los nemónicos (nombresde instrucciones), que reciben el nombre de códigos de operación. La tercera columnacontiene los operandos. La cuarta y última columna se reserva a comentarios. A estascolumnas, con más propiedad llamadas «campos», se las separa con uno o varios espa-cios en blanco de tabulador. El programa no debe, necesariamente, tener los cuatro cam-pos; así, el ejemplo que se edita a continuación no tiene el campo de etiquetas.

C : > T Y P E PRUEBA.ASM

TITLE OPERACIÓNDEENSAMBLADOYENLACECOMMENT * Direccionamientoinmediato, directoeindirecto

16.1.91*

ORIGIN 0200HSYMBOLS ONCODE

MEM EQU 7FH

MOV A,#33H ; DireccionamientoinmediatoADD A,MEM ; DireccionamientodirectoMOV RO,#90HMOV @R~,A ; DireccionamientoindirectoEND

En el programa anterior también se utilizan «directivas», que son comandos queafectan al ensamblador, no al microprocesador o microcontrolador.

Las sentencias de las directivas, como las ejecutadas por el microprocesador o micro-controlador, tienen cuatro campos como máximo. Estos son:

[nombre] directiva [operando] [;comentario]

Recuerde que las sentencias ejecutables por el microcontrolador eran:

[etiqueta] código de operación [operando] [;comentario]

Los corchetes indican que estos campos no son obligatorios.

Page 80: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 79

Las directivas se pueden usar para preparar procedimientos (por ejemplo, sub-rutinas), definir símbolos, almacenar datos en memoria y efectuar otras tareas rutinarias.

En este programa y en otros posteriores se utilizan las DIRECTIVAS DE CON-TROL:

[-YEl : Para dar títulos a los programas.

pGiGF1 : Comentarios generales (entre dos asteriscos).

1 ORIGIN 1: Indicativo de la posición de memoria a partir de la cual el programaFICHERO OBJETO se enmarca en la memoria real.

: Permite la utilización de símbolos, a los cuales se hace referenciaen el proceso de emulación.

1 EQU 1: Permite asignar nombres comunes a posiciones de memoria, subrutinas y aotros subprogramas que son llamados desde el programa principal. En d ejemplo, seasigna a la posmem 7FH el nombre MEM, más fácil de recordar e identificar.

MEM EQU 7FH

: Fin del programa (fin del archivo).

: Almacenamiento de datos en formato de byte en la memoria.

Estas directivas, con la ventaja de poder utilizar comentarios, al final de cada ins-trucción (separando los campos de operandos y comentarios con (;)), permiten que pro-gramas largos puedan ser leídos, estudiados y modificados sin dificultad por el autor delprograma y otros programadores.

Nota: Esta es una muestra mínima del macroensamblador, por lo que animamos al lector a que estudie yutilice otras directivas que le permitirán rentabilizar mejor el trabajo.

?? Operación de ensamblado

El archivo editado anteriormente está preparado para ser procesado por el macroensam-blador, convirtiéndolo en un archivo máquina de extensión (.OBJ).

Page 81: LE002-Introduccion a Los Microcontroladores

80 Introducción CI los Microcontroladores

Esta operación se realiza desde el DOS llamando al programa ensamblador:

El>X8051

El ensamblador pregunta por el destino del fíchero,*.OBJ. Si se toma la opción pordefecto (NONE = <CR>) se obtendrá solamente el archivo objeto si no se detecta algúnerror.

Si se toma la opción D (Disk), el ensamblador pregunta si tiene que generar el ar-chivo de referencias cruzadas (tablas de símbolos). El archivo de referencias cruzadas in-forma de la línea de programa en que se hace referencia a variables y etiquetas de saltos.

A continuación pregunta el nombre del archivo fuente, que no precisa ser escrito consu extensión (.ASM).

Finalmente, pregunta por el nombre del archivo de salida. Si pulsamos (CR = Re-torno de carro), el archivo de salida tomará el mismo nombre que el archivo fuente, perocon la extensión (.OBJ). Esta es la opción que se recomienda.

Obsérvese que además del archivo *.OBJ genera el archivo *.LST, que contiene lainformación del archivo fuente con los códigos de instrucción en hexadecimal, paginado,con la fecha de proceso, la lista de referencias cruzadas y, si contiene errores, nos indicael error y número de línea de programa en que se encuentra.

Si se ensambla con la opción (T = Terminal), se tendrá la misma información quecon la opción anterior (D) en el monitor de CRT y no genera el archivo *.LST.

A continuación se muestra la forma de proceder para ensamblar el programa ante-rior, tal como se ha indicado. El nombre del programa es PRUEBA.ASM.

J:>X8051

8051MacroAssembler - Versión4.05aCopyright(C)1985by2500A.D.Software, Inc.

Listingdestination (N, T, D, E, L, P, <CR>=N) : D,.SenerateCrossReference? (Y/N <CR>=No) :Y

Input Filename : PRUEBA.ASMDutput Filename :

2500A.D. 8051MacroAssembler - Versión4.05a-_----------_----_~----~~---~~~--~~~~~~~~~~Input Filename : PRUEBA. asmOutput Filename : PRUEBA. obj

Lines Assembled: 21 AssemblyErrors : 0

Page 82: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 81

Después de la operacibn de ensamblado éstos son los ‘archivos que se han generado:

C:>DIRPRUEBA.*

Volumenenunidadc sinetiquetaDirectoriodeC:\USD

PRUEBA ASM 512 26/01/91 3:59PRUEBA OBJ 588 26/01/91 4:lOPRUEBA LST 2096 26/01/91 4:lO

3Archivo(s) 278528byteslibres

Este es un listado del archivo PRUEBA.LST:

C:>TYPEPRUEBA.LST

TueJan 26 199104:lO

OPERACIÓNDEENSAMBLADOYLINKADO

2500A.D. 8051MacroAssembler- Versión4.05a____-_----_______----~~~~~~~~-------------

123456789

1011121314151617

Input Filename : PRUEBA.asmOutput Filename : PRUEBA.obj

0000TITLE OPERACIÓNDEENSAMBLADOYENLAZADO

COMMENT * Direccionamientoinmediato,Directoeindirecto.16.1.91

*

0200 ORIGIN 0200H

SYMBOLS ON

0200 CODE

007F MEM EQU 7FH

0200 74 33 MOV A,#33H ; Direccionamiento; inmediato.

Page 83: LE002-Introduccion a Los Microcontroladores

82 Introducción a los Microcontroladores

18 0202 25 7F ADD A,MEM ; Direccionamientodirecto.19 0204 78 90 MOV RO,#90H20 0206 F6 MOV @R~,A ; Direccionamientoindirecto.21 0207 END

Y la tabla de referencias cruzadas (tabla de símbolos):

TueJan 26 199104:lO

Defined Symbol Name Value Referentes

Pre BSECT 0000Pre CODE 0200 13Pre DATA 000.015 MEM = 007F 18Pre RSECT 0000

Lines Assembled: 21 AssemblyErrors : 0

R Operación de enlazado

Una vez obtenido el archivo PRUEBA.OBJ, para obtener el archivo ejecutable por elmicrocontrolador, hay que enlazar este archivo.

El programa Enlazador o editor de enlaces, además de ser útil para fusionar distintosprogramas y rutinas escritas en lenguaje ensamblador, resulta imprescindible para unirprogramas escritos en distintos lenguajes de programación. Así, por ejemplo, un pro-grama escrito en Pascal que utiliza rutinas escritas en ensamblador.

El enlazador (linkador) que se suministra con el ensamblador, se le llama desde elDOS, como:

El>LINK

Este programa hace interactivamente al usuario las siguientes preguntas:

??Archivo de entrada: PRUEBA.OBJ??Desplazamiento: 0

Este desplazamiento se suma al número expresado en la directiva de control ORI-GIN para situar el archivo ejecutable *.HEX en la posición de memoria elegida por elusuario. En este caso:

0200 + 0 (desplazamiento) = 0200 posmem

Page 84: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 8 3

Después de pedir del desplazamiento, el enlazador pide más archivos *.OBJ para <din-karlow (enlazarlos), con el archivo anterior, formando un único fichero ejecutable.

Se recomienda que el programa de aplicación esté formado por pequeños sub-programas perfectamente estructurados.

En este caso, como no hay más archivos que enlazar, a la pregunta:

- Input filename: <~~>(retorno de carro).

¿Qué nombre recibirá el archivo de salida?

-0utputfilename: <CR>

Indicando que servirá el mismo nombre, pero el enlazador le pondrá la extensión (.HEX).A continuación preguntará si se hace uso de la librería de rutinas, a la que se haría

referencia en el archivo fuente. En este caso, como no se utiliza ninguna rutina:

-Library filename: <CR>

El enlazador ofrece diversos formatos para obtener archivos de salida ejecutables, porlo que emplazamos al lector para que consulte el manual.

Esta es, secuencialmente, la operación de enlace del fichero PRUEBA.OBJ:

C:>LINK

2500A.D.Linker Copyright(C)1985-Versión4.05a

Input Filename : PRUEBA.OBJInput Enter Offset For "CODE" : 0Library Filename :Options (D, P, S, A, M, N, 2, X, H, E, T, 1, 2, 3, <CR>=Default :H

Linker Output Filename : PRUEBA.HEXDisk Listing Filename : <NoneSpecified>Symbol Table Filename : <None Specified>

LinkErrors : 0 Output Format : Intel Hex

Page 85: LE002-Introduccion a Los Microcontroladores

8 4 Introducción a los Microcontroladores

Los archivos que se han generado hasta este momento son éstos:

C:>DIRPRUEBA.*

VolumenenunidadC sinetiquetaDirectoriode c:\USD

PRUEBA ASM 512 26/01/91 3:59PRUEBA OBJ 588 26/01/91 4:lOPRUEBA LST 2096 26/01/91 4:lOPRUEBA HEX 40 26/01/91 4:12

4Archivo(s) 274432byteslibres

El archivo ejecutable que se ha generado es tipo formato INTEL HEX. Este archivoes suficiente para ejecutarlo desde el emulador y para realizar un debugging completo delfuncionamiento del programa con las utilidades que presenta el emulador. Tambiénpuede ser ejecutado directamente por el microcontrolador si se le hace pasar por el ar-chivo conversar y convertir el archivo *.HEX en el archivo *.BIN grabable en EPROM(véase Capítulo ll).

4 Operación de ejecución

Como se ha explicado al principio de este capítulo, el microcontrolador puede trabajarcon la memoria segregada...

. . . El>EX ; en donde una página de 64 K es ocupada por la memoria de programa yotra, también de 64 K, ocupada por la memoria de datos o con la memoria combinada.

. . . El>DX ; en donde sólo hay una página de 64 K compartida por los programas ylos datos.

Para efectuar la carga del programa PRUEBA.HEX en la memoria de emulación,hay que tener en cuenta las observaciones realizadas en el Apartado 5.3.1.

Si la memoria es segregada, el programa que se va a cargar será introducido en lapágina de 64 K de la memoria de programas, y si la memoria es combinada, compartiráespacio con la memoria asignada a los datos en una única página de 64 K.

A continuación se carga el programa en la memoria de emulación, estando conligu-rado el microcontrolador como un 8032, y como este chip no tiene memoria interna de

Page 86: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 8 5

programas, se utiliza la memoria externa de emulación del sistema de desarrollo. Semuestra la operación completa, incluida la ejecución.

>1EP8052V3.2>*MEMap: emulationmemoryis enabled>DA>1EP8032V3.2>>DOPRUEBA.HEX

Downloadcompleted!>>MI 7F007F 70

>>Z 0200 0206LOC OBJ LINE LABEL SOURCE CODE0200 7433 0001 MOV A,#330202 257F 0002 ADD A,7F0204 7890 0003 MOV RO,#900206 F6 0004 MOV @R~,A

DISASSEMBLYCOMPLETED>>Hl 0206>HlHl= 0206>>JO200>GPROGRAMBROKEATADDRESS 0207>RACC B PSW SP DPH DPL RORlR2R3R4RSR6R7 PSW PC(EO)(FO)(DO)(81)(83)(82) CAFBBO-PA3 OO 04 07 OO OO 90 55 57 55 55 55 55FF 00000100 0207

>>MI 900090A3

Page 87: LE002-Introduccion a Los Microcontroladores

86 Introducción a los Microcontroladores

La operación completa considerando la memoria interna del microcontrolador,sería:

>lEP8032V3.2>*MDMap: emulationmemorygloballydisabled>EA>1EP8052V3.2>>DOPRUEBA.HEX

Downloadcompleted!>>Z 0200 0206LOC OBJ LINE LABEL SOURCE CODE0200 7433 0001 MOV A,#330202 257F 0002 ADD A,7F0204 7890 0003 MOV RO,+900206 F6 0004 MOV @R~,A

DISASSEMBLYCOMPLETED>>MI 7F007F90 700080 55

>MI 7F007F70

>>H10206>HlH1=0206>,>JO200>GPROGRAMBROKEATADDRESS 0207>RACC B PSW SP DPH DPL RORlR2R3R4R5R6R7 PSW PC(Eo)(Fo)(Do)(8l)(83)(82) CAFBBO-PA3 OO 04 07 OO OO 90555755555555FF 00000100 0207

>>MI 900090 A3

Page 88: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 87

5.4. EXPLORACION DE LA MEMORIA DEL SISTEMA

Este apartado se inscribe en el contexto de las «aclaraciones», tratando de insistir en losconceptos de memoria de programas y datos, memoria externa e interna, cuándo fun-ciona el 8052 como microcontrolador y cuándo como microprocesador (8032) y cómose accede a las distintas partes de la memoria.

Para hacer esta exploración se utilizará el dibujo de la Figura 2.1 del Capítulo 2 y queaquí se presenta en la Figura 5.1; para hacer la exploración más interesante se tratará de«buscan) el resultado de la ejecución del programa anterior.

MEMORIA PROGRAMAS MEMORIA DE DATOSr h \ I A 1

FFFFH ,=, EXTERNA

r7II l I II / I /

INTERNA i 11FFFH:~FFFH)

90H

OOOOH H6F

MICRO~ONTROLADOR MICROPROCESADOREA=1 (EA) EA=0 (DA)

t t

L---PT-, I /MI ILMX

Figura 5.1.

Se inicia la búsqueda configurando el sistema con memoria segregada (EX) y sobrelas siguientes zonas:

a) Memoria de programasa.1) Como microcontrolador (8052): 33 t- (90)a.2) Como microprocesador (8032): 6F t (90)

b) Memoria de datos interna:b.1) Como microcontrolador (8052): A3 c- (90)

Page 89: LE002-Introduccion a Los Microcontroladores

88 Introducción a los Microcontroladores

b.2) Como microprocesador (8032): A3 t (90)En este caso utiliza la memoria de emulación (memoria externa), comomemoria interna.

b) Memoria de datos externa:c. 2) Como microcontrolador (8052): 6F c- (90)c.2) Como microprocesador (8032): 6F f- (90)

A continuación se muestran los datos recogidos, después de la búsqueda, que coin-ciden con los de la Figura 5.1.

>EX>EA>MP 900090 33

>1EP8052V3.2>DA>lELk8032V3.2

P 900090 6F>>EA>lEP8052V3.2>MI 900090A3>DA>1EP8032V3.2>MI 900090A3>>EA>IEP8052V3.2>Mx 900090 6F>DA>IEP8032V3.2>MX 900090 6F>

Page 90: LE002-Introduccion a Los Microcontroladores

Presentación del equipo emulador para el desarrollo de aplicaciones 89

OBSERVACION: Es habitual que un programa de aplicación conste de un númerogrande de subprogramas. En la fase de pruebas cualquier modificación en uno o mássubprogramas trae como consecuencia tener que enlazar (linkar) todos los subprogramaspara conformar el programa principal *.HEX. Esta operación resulta tediosa. Para evitaresta pérdida de tiempo se aconseja utilizar un archivo de textos en ASCII, en el que fi-guren todos los subprogramas, como se indica seguidamente.

El programa final, de nombre PROCESO.HEX, consta de los siguientes sub-programas:

MEDIDA. OBJREALIMEN.OBJCALCULO.OBJSALIDA.OBJ

3 El archivo de texto para el enlazador tendrá este aspecto:

MEDIDA.OBJ<CR>

<CR>REALIMEN.OBJ<CR>

<CR>CALCULO.OBJ<CR>

<CR>

SALIDA. OBJ<CR>

<CR>

<CR>PROCESO

Obsérvese cómo la última palabra precedida de dos «retornos de carro» hace referen-cia al nombre del archivo que contiene al resto de los archivos (subprogramas). Ese ar-chivo-programa final es PROCESO.HEX.

Este archivo de datos puede recibir cualquier nombre, por ejemplo:

ENCADENA.DAT

Una vez realizada una operación de modificación en uno de los archivos, por ejem-plo, en CALCULA.ASM, se ensambla, con lo que se obtiene el archivo CALCULA.OBJ.Seguidamente se llama al enlazador con el archivo de datos a continuación, así:

C:>LINKENCADENA.DAT

El resultado será el archivo ejecutable por el emulador: PROCESO.HEX.En la bibliografía se hace referencia a las herramientas que se han utilizado para ela-

borar este capítulo y los que siguen.Y con esta aclaración se concluye el Capítulo 5. En los próximos dos capítulos se hace

referencia fundamentalmente a la programación de los Microcontroladores 8052/5 1.

Page 91: LE002-Introduccion a Los Microcontroladores

90 Introducción a los Microconfroladoreszonfroladores

1. &)ué diferencias hay entre un emulador yun simulador?

tener un archivo (.HEX) ejecutable por elemulador o simulador.

2. ;:rCJ; utilidad tienen los puntos de rup- 6. Definir lo que es una directiva y ponerejemplos de direct ivas.

3. iPara qué se utiliza el modo «traza»?

4. iQué es el modo «paso a paso» y qué uti-l idad t iene?

7. Nombrar las extensiones que presentan losarchivos a resultas de las operaciones deeditado, ensamblado y enlace.

5. Indicar y definir las operaciones para ob-8. iQué significado tiene un archivo con ex-

tensión ( .LST)?

Page 92: LE002-Introduccion a Los Microcontroladores

CAPITULO

Modelo de programación (1)

6.1. INTRODUCCION

Se entiende por modelo de programación al conjunto de registros accesibles por el usua-rio que junto al set de instrucciones y los modos de direccionamiento constituyen lasherramientas imprescindibles para el programador.

El objetivo de este capítulo es mostrar estos tres aspectos combinados en varios ejer-cicios que puedan servir de ayuda al comienzo. Estos ejercicios corresponden a algunosde los modelos estándar que suelen ser habituales en las operaciones de control de pro-cesos industriales, pero no tienen el suficiente rigor como para poder ser incorporadasdentro de una librería de rutinas operativas profesionalmente; más bien tienen un sen-tido didáctico, objetivo principal de este capítulo.

A continuación se proponen una serie de ejercicios, que irán distribuidos entre estecapítulo y el siguiente.

En total, 13 ejercicios que pueden servir de aperitivo; por esta razón, casi todos losnombres de los archivos de los ejercicios figuran con un número terminal, para que ellector pueda mejorarlos, como si de una nueva versión se tratara.

Habitualmente el programa tiene que tomar decisiones en función del contenido de unavariable (posición de memoria => posmem) de la información de un puerto de entradao salida y/o del estado de un bit o registro. Se produce lo que se conoce por una bifur-cación condicional o alternativa.

En este ejercicio se trata de realizar la operación suma o resta de dos variables DAT 1(78H) y DAT2 (79H); si la posmem CHE (77H) es cero, suma el contenido de DATl yDAT2; si el contenido es distinto de cero, entonces resta DATI de DAT2. En cualquiercaso, el resultado de la operación suma o resta se deposita en la posmem RES (7AH).

9 1

Page 93: LE002-Introduccion a Los Microcontroladores

92 Introducción a los Microcontroladores

A continuación se muestra el flujograma del proceso y el listado del programa fuente.

?? Flujograma ?? Listado

TITLE ESTRUCTURAALTERNATIVA. ALTERO.ASMCOMMENT * Operaciones aritméticas

6.2.91*

ORIGIN 0200HSYMBOLS ONCODE

N O

S U M A R D A T O S

R E S T A R D A T O S

MOV DAl, #09HMOV DA2, #06H ; Carga datosMOV A, CHE ; Lee la posición de mem. 77HJNZ SAL1

; Si es igual a CERO realiza la SUMA y si NO salta a efectuar la restaMOV A, DA1ADD A, DA2MOV RES, A ; Realiza la suma y guarda

; el resultadoMOV A, CHEJZ SAL2

SAL1:MOV A, DA1SUBB A, DA2MOV RES, A ; Realiza la resta y guarda

; el resultadoSAL2:NOP

END

?? Ejecución

Con el programa ensamblado y enlazado, como se indicó en el capítulo anterior, se pasaa la operación de carga del programa en el microcontrolador y a su desensamblado. Ellistado muestra, en la primera columna, las posiciones de memoria ocupadas por el pro-grama; en la segunda columna, los códigos de instrucción y operandos; en la tercera co-lumna, el número de línea; en la cuarta, las direcciones de los saltos, y en la quinta yúltima columna, los códigos de instrucción y operandos en nemónicos.

>1EP8052V3.2>Z 0200021A

Page 94: LE002-Introduccion a Los Microcontroladores

Modelo de programación (1) 93

LOC OBJ0200 7578090203 7579060206 E5770208 700A020A E57802oc 2579020E F57A0210 E5770212 60060214 BS780216 95790218 F57A021A 00

DISASSEMBLYCOMPLETED

LINE LABEL SOURCE0001 MOV0002 MOV0003 MOV0004 JNZ0005 MOV0006 ADD0007 MOV0008 MOV0009 JZ0010 B0214 MOV0011 SUBB0012 MOV0013 B021A .NOP

CODE78, #0979,#06A,770214A,78A,797A,AA,77021AA,78A,797A,A

A continuación se inicializa la posmem 77H con OOH, se coloca un punto de rupturaen la posmem 021AH y se ejecuta. El resultado es OFH. Si en la posmem 77H se colocael dato 12H y se procede a la ejecución, como anteriormente, el resultado es 03H, talcomo estaba previsto.

>>MI 770077 23 OO0078 09

>H1021A>JO200>GPROGRAMBROKEATADDRESS 021B>MI 7A

>MI 770077 00120078 09

>HlH1=021A>JO200>GPROGRAMBROKEATADDRESS 021B>MI7A

Page 95: LE002-Introduccion a Los Microcontroladores

94 Introducción a los Microcontroladores

La estructura de programación iterativa «por lo menos una vez» realiza el proceso encuestión «al menos una vez», diferenciándose de la estructura de programación iterativa«puede que ningtma vez» (que se verá en el Ejercicio 6.3.), en que en esta última el pro-ceso puede que no se ejecute «ni una sola vez».

Este es el aspecto que presentan ambas estructuras vistas desde el cuadro de flujogra-mas:

PROCESO

PROCESO

I T E R A T I V A “ p o r l o m e n o s u n a v e z ” I T E R A T I V A “ p u e d e q u e n i n g u n a v e z ”

?? Enunciado

La posmem MEM (77H) puede contener números comprendidos entre 1 y 9, teniendoen cuenta esta característica, poner las posiciones de memoria comprendidas entre 6 1 Hy 69H a FFH (todos los bits a uno), según esta relación:

Si MEM= 1 cargar con FFH las posmem 6 1 HSi MEM=2 cargar con FFH las posmem 61H y 62HSi MEM=3 cargar con FFH las posmem 61H, 62H y 63H=========================================

Si MEM=9 cargar con FFH las posmem de la 61H a la 69H

Page 96: LE002-Introduccion a Los Microcontroladores

Modelo de programación (IJ 95

o Flujograma ?? Listado

(T)

clCON <--(MEM)

A <--(CON)

J1

(60+CON) <--FF

4

DEC (CON)

S I7

TITLE ESTRUCTURAITERATIVA. ITERAO.ASMCOMMENT * Por lo menos el proceso se realiza

una vez.7.2.91

*ORIGIN 0200HSYMBOLS ONCODE

MEM EQU 17HCON EQU 78H

MOV CON, MEM

SAL: MOV A, CONADD A, #60HMOV RO, AMOV @RO, #FFH

DJNZ CON, SAL

NOPEND

; Se transfiere el contenido de MEM;aCON; Cargar acumulador; Prepara el dir. indexado por “soft”; Carga el puntero; Carga la posmem. correspondiente; Por lo menos carga una posición; de memoria; Decrementa CON y salta si CON; no es CERO

En el listado resalta el direccionamiento indirecto para cargar las posmem implicadasen el cambio y también la eficacia de la instrucción DJNZ, que decrementa y cambia lasecuencia del programa en función de que el contador (CON) sea o no distinto de cero.Como se puede ver, no es preciso hacer intervenir al acumulador para decrementar yefectuar el salto condicional.

?? Ejecución

En la inicialización del ejercicio, previa a la ejecución del problema, se observa que enla posmem 77H se carga el dato 05H, por lo que, consecuentemente y después de eje-cutado el programa, aparecen las posmem 61 a 65 cargadas con FFH.

Linking serialport: COMl9600 baudrate, 8databit, NONEparityCtrl-CtoreturnDOS, andchangelinkingstatus byediting"USD.INS" file

Page 97: LE002-Introduccion a Los Microcontroladores

96 Introducción a los Microcontroladores

>IEP8052V3.2>DO ITERAO.HEX

Downloadinprocess: 0200Downloadcompleted!>Z 0200020DLOC OBJ0200 8577780203 E5780205 24600207 F80208 76FF020A D578F6020D 00* DISASSEMBLYCOMPLETED

LINE LABEL SOURCE CODE0001 MOV 78,770002 B0203 MOV A,780003 ADD A, #CO0004 MOV RO,A0005 MOV @RO,#FF0006 DJNZ 78,02030007 NOP

A continuación sc inicializan las posmem y se ejecuta el programa:

>MI 77

0077 08 05

007800>>IilH1=020D>JO200>GPROGRAMBROKEATADDRESS020E>>MI6169

Con objeto de establecer las diferencias entre las dos estructuras, se va a realizar el ejer-cicio anterior, considerando que MEM (77H) toma valores comprendidos entre 0 y 9.Cuando (MEM) toma el valor cero sale del programa sin realizar el proceso, cuandoO<MEM<=9 el programa funcionará como en el ejercicio anterior.

Page 98: LE002-Introduccion a Los Microcontroladores

Modelo de programación (l) 97

?? Flujograma

(,,,,,)

CON <-- (MEM)

N O P

I F I N I

?? Listado TITLE ESTRUCTURAITERATIVA. ITERI+l.ASM

COMMENT * Puedequenoejecute, ningunavez, elproceso8.2.91

*

ORIGIN 0200HSYMBOLS ONCODE

MEM ??? 77HCON ??? 78H

MOV

SALO:MOVJZ

ADDMOVMOVDECJMP

SAL1:NOPEND

CON, MEM

A‘ CONSAL1

A, #60H ; Prepara el dir. indexado por “soft”RO, A ; Carga el puntero@RO, #FFH ; Carga la posmem. correspondienteCON ; Decrementa CONSALO ; Sal to incondicional

; Se transfiere el contenido de MEM;aCON; Cargar acumulador; No efectúa ninguna acción; si MEM=0

Page 99: LE002-Introduccion a Los Microcontroladores

98 Introducción a los Microcontroladores

?? Ejecución

En la primera ejecución, cuando la posmem 77H es igual a OOH, el programa «aborta»sin efectuar ningún cambio en las posmem comprendidas entre 6 1H y 69H. Si (77) +-05H, las primeras 5 posmem (de la 6 1H a la 65H) aparecen con todos los bits puestos auno.>1EP8052V3.2>z 0200 0210LOC OBJ LINE LABEL0200 857778 00010203 E578 0002 B02030205 6009 00030207 2460 00040209 F8 0005020A 76FF 000602oc 1578 0007020E 4103 00080210 00 0009 B0210

DISASSEMBLYCOMPLETED>MI6169

OO 0102 03 04 05 06 07 08 09 OAOBOCODOEOF0060 55 5555 555555 55 55 55>>MI 77

l0077 07 00

007800 *>

>H10210>JO200>GPROGRAMBROKEATADDRESS 0211>MI 6169

SOURCEMOVMOVJZADDMOVMOVDECAJMPNOP

CODE78,77A,780210A, #60RO,A@RO,#FF780203

ASCII-CODEuuuuuuuuu

>MI 77

0077 00 05

0078 OO>>JO200>GPROGRAMBROKEATADDRESS 0211>MI6169

Page 100: LE002-Introduccion a Los Microcontroladores

Modelo de programación (1) 99

La operación de comprobación de bits es una práctica habitual en el control de procesos.La secuencia del programa puede cambiar dependiendo del estado de un bit. Este ejer-cicio muestra uno de los métodos.

?? Enunciado

Si el bit 2 de la posmem 28H (CHE) es igual a cero, entonces en la posmem 7FH (RES)se señalará poniendo todos sus bits a cero, y si el bit 2 es igual a uno, se señalará po-niendo todos sus bits a uno. Es decir:

28.2 = 0 implica que: (7FH) c- OOH28.2 = 1 implica que: (7FH) t FFH

b7 b6 b5 b4 b3 b2 bl bO

28.2? Posmem28H

?? Flujograma ?? Listado

TITLE TESTEODEBITS.TESBITO.ASMCOMMENT * Detecta el estado de unbitparato-

mardecisiones9.2.91

*

ORIGIN 0200HSYMBOLS ONCODE

CHE EQU 28HRES EQU 7FH

MOV A,

ANL A,JZ SALOMOV RES,

SALO:JNZ SAL1MOV RES,

SAL1:NOPEND

CHE ; Se carga el ACC con el byte a che-; quear

#04H ; Se detecta el bit; Si es igual a CERO salta

#FFH ; Si no es igual a CERO, carga RES; con unos.) . . . y sale del proceso

#OO ; Si es igual a CERO, carga RES; con ceros

Page 101: LE002-Introduccion a Los Microcontroladores

1 0 0 Introducción a los Microcontroladores

Se observa cómo para detectar el bit 2 utiliza el procedimiento general de colocar una«máscara» (ANL # 04), de forma que «esconde» todos los bits excepto el que se trata decomprobar, así:

1 0 0 1 0 x 1 00 0 0 0 0 1 0 0 c- máscara0 0 0 0 0 x 0 0

? del estado de este bit dependerá que se produzca o no un cam-bio en la secuencia del proceso.

?? Ejecución

La ejecución del programa es como sigue:1 . Se carga la posmem 28H (CHE) con 05H (b2 = 1) y se ejecuta el programa. ¿a

posmem 7FH (RES) se carga con FFH.2 . Se carga la posmem 28H (CHE) con OlH (b2 = 0) y se ejecuta el programa. La

posmem 7FH (RES) se carga con OOH.

>1EP8052V3.2>DOTESBITO.HEX

Downloadinprocess:Downloadcompleted!>>z 0200 02OELOC OBJ0200 E5280202 54040204 60030306 757FFF0209 7003020B 757FOO020E 00

0200

LINE0001000200030004000500060007

LABEL SOURCE CODEMOV A,28ANL A,#O4Li2 0209MOV 7F,#FF

B0209 JNZ 020EMOV 7F,#OO

B020E NOPDISASSEMBLYCOMPLETED

>MI280028 05>HlOZOE>JO200>GPROGRAMBROKEATADDRESS020F

>MI 7F

Page 102: LE002-Introduccion a Los Microcontroladores

Modelo de programación (1) 101

>>MI280028 05 010029D5

>JO200>GPROGRAMBROKEATADDRESS 020F>MI 7F

Cuando se estudiaba el set de instrucciones del 8052/805 1, en el Apartado 4.1. «Instruc-ciones booleanaw, se decía que había una zona de memoria interna direccionable bit abit (20H a 2FH) y una serie de instrucciones que permitían esta forma de proceso (véaseTabla 4.2). Esta práctica es una muestra de este tipo de instrucciones.

El problema es el mismo que el planteado en el ejercicio anterior, pero con la salve-dad de utilizar el carry como variable referencia1 para establecer las bifurcaciones.

?? Flujograma ?? Listado

TITLE TESTEODEBITS.TESBITl.ASMCOMMENT * En este caso detecta el bit con el

modo de direccionamiento especial"bit abit".9.2.91

*

ORIGIN 0200HSYMBOLS ONCODE

CHE EQU 28HRES EQU 7FH

SETB C ;Sepone el “flag delCarry”aUN0ANL C, CHE.2 ; Se detecta el bitJNC SALO ; Si es igual a CERO saltaMOV RES, #FFH ; Si no es igual a CERO, carga RES

; con unosSALO:JC SAL1 ; . . . y sale del proceso

MOV RES, #OO ; Si es igual a CERO, carga RES; con ceros

SAL1:NOPEND

Page 103: LE002-Introduccion a Los Microcontroladores

1 0 2 lntroducci% a ios Microconfroladores

?? Ejecución

En primer lugar, como en todos los ejercicios, se muestra el desensamblado del pro-grama:

>1EP8052V3.2>DOTESBITl.HEX

Downloadinprocess:Download completed!>Z020002ODLOC OBJ0200 D30201 82420203 50030205 757FFF0208 4003020A 757FOO0200 00

0200

LINE LABEL SOURCE0001 SETB0002 ANL0003 JNC0004 MOV0005 B0208 JC0006 MOV0007 B020D NOP

CODECC,28.202087F,#FF020D7F,#OO

DISASSEMBLY COMPLETED>

En .la ejecución del programa se observa que, en primer lugar, se testea el bit2del byte de información 07H y como el bit2 = 1, el resultado, como era de prever, es(7FH t FFH) y cuando el byte de 03H, en este caso el bit2 = 0, el resultado= (7FH t OOH).

>MI28002807

>HlOZOD>JO200>GPROGRAMBROKEATADDRESS 020E>MI 7F

>MI 280028 07 030029D5

>JO200>GPROGRAMBROKEATADDRESS 020E>MI7F

Page 104: LE002-Introduccion a Los Microcontroladores

Modelo de programación (l,l 103

En el control de procesos industriales la información que se recibe o envía es complejay necesita de varios bits. En este caso, la información ocupará 8 bits, es decir, 1 byte.

Este ejercicio, como los dos siguientes, corresponden al mismo planteamiento, peroutiliza procedimientos distintos de resolución. Así, este ejercicio emplea la operación restao sustracción para detectar el byte que desencadena una secuencia de proceso distinta.En este y en los dos siguientes ejercicios el byte clave es 63H.

Si el byte leído en la posmem 70H (CHE), es igual a 63H, pone el bit cero (b0) de laposmem 20H (RES) a cero, y si el byte leído es distinto a 63H, el bit cero (b0) de RESse pone a uno, es decir:

Si (70H) = 63H implica que 20.0 w 0Si (70H) <> 63H implica que 20.0 w 1

?? Flujograma ?? Listado

(Y)

A. SUBB. 63H

TITLE TESTEODEBYTES.TESPALO.ASMCOMMENT * Eneste casodetectaunbyte (carác-

ter)utilizandolainstrucciónresta(SUBB).9.2.91

*

ORIGINSYMBOLSCODE

CHE EQU 70HRES EQU 20H

MOV A,

CLR CSUBB A,

0200HON

70H ; Se CARGA el ACC con la posmem a;chequear;SeponeelcarryaO

#63H ; Resta de posmem CHE la constante; #63H

JZ SALOSETB RES.0

SALO:JNZ SAL1CLR RES.0

SALl:NOPEND

; Si es igual a CERO salta; Si no es igual a CERO, carga con “ 1”; el bit0 del byte RES; . . . y sale del proceso; Si es igual a CERO, carga con “0” el; bit0 del byte RES0200

Page 105: LE002-Introduccion a Los Microcontroladores

1 0 4 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

?? Ejecución

Esta es la operación de carga del programa en la memoria de emulación y la operaciónde desensamblado:

>1EP8052V3.2>DOTESPALO.HEX

Downloadinprocess:Download completed!>Z 0200020DLOC OBJ0200 E5700202 c30203 94630205 60020207 D2000209 7002020B c200020D 00

0200

LINE LABEL SOURCE CODE0001 MOV A,700002 CLR C0003 SUBB A,#630004 JZ 02090005 SETB 20.00006 BOZO9 JNZ 020D0007 CLR 20.00008 BOZOD NOP

DISASSEMBLYCOMPLETED

En la ejecución del programa se observa lo siguiente:

1 . Inicialmente el contenido de la posmem 70H es 55H, y el resultado del bit0 dela posmem 20H es uno, después de la ejecución del programa.

2 . Cuando el contenido de la posmem 70H es 63H, el resultado del bit 20.0 es cero.

>MI 70007055

>MI 20OOZOBFOOOO2155

>H1020D>JO200>GPROGRAMBROKEATADDRESS 020E>MI 20

>MI 700070 55 63007155>JO200>GPROGRAMBROKEATADDRESS 020E

>MI20

Page 106: LE002-Introduccion a Los Microcontroladores

Modelo de programación (1)

El enunciado de este ejercicio es el mismo que el apartado anterior, pero el procedi-miento para la detección del byte que desencadena un cambio en el proceso se realizacon la operación EXCLUSIVE-OR (XRL). Efectivamente, si:

0 1 1 0 0 0 1 1 = LECTURABYTE0 1 1 0 0 0 1 1 = REFERENCIA: 63H

0 0 0 0 0 0 0 0 = RESULTADO

El resultado de la operación será cero, sólo si coinciden el byte leído y el byte de re-ferencia.

Si los bytes difieren al menos en un bit, como en el siguiente ejemplo:0 1 1 0 0 0 1 0 = LECTURABYTE0 1 1 0 0 0 1 1 = REFERENCIA: 63H

0 0 0 0 0 0 0 1 = RESULTADO

El resultado es distinto de cero.

?? Flujograma ?? Listado

El flujograma de este TITLE TESTEODEBYTES.TESPALl.ASMejercicio es el mismo COMMENT * Eneste casodetectaunbyte (carác-que el del ejercicio an- ter) utilizando la instrucción EX-terior. Sustituir en el CLUSIVE-OR (XRL).segundo bloque la ins- 9 . 2 . 9 1trucción A.SUBB.63H *por XRL A, # 63H. ORIGIN 0200H

SYMBOLS ONCODE

CHE EQU 70HRES EQU 20H

MOV A, 70H ; Se CARGA el ACC con la posmem a; chequear

XRL A, #63H ; Operación EX-OR entre ACC y la; cte. #63H

JZ SALO ; Si el resultado es igual a CERO salta; Si no es igual a CERO, carga con “1”; el bit0 del byte RES*> . . . y sale del proceso; Si es igual a CERO, carga con “0” el; bit0 del byte RES

SETB RES.0

SALO:JNZ SAL1CLR RES.0

SAL1:NOPEND

Page 107: LE002-Introduccion a Los Microcontroladores

106 Introducción <I los Microcontroladores

?? Ejecución

En primer lugar la carga y el desensamblado.

>1EP8052V3.2>DOTESPALl.HEX

Downloadinprocess:Downloadcompleted!>Z 0200 020DLOC OBJ0200 ES700202 64630204 60020206 D2000208 7002020A c20002oc 00

0200

LINE LABEL SOURCE CODE0001 MOV A,700002 XRL A,#630003 JZ 02080004 SETB 20.00005 B0208 JNZ 02oc0006 CLR 20.00007 B020C NOP

DISASSEMBLYCOMPLETED

En la ejecución se observa:

1 . Que el byte a detectar inicialmente situado en la posmem 70H es 55H, por loque el resultado, después de la ejecución es, para el bit 20.0, igual a uno.

2 . Que el byte a detectar después es 63H, como coincide con el byte de referencia,el resultado del bit 20.0 es cero.

>MI 70

0070 55

>MI 20

0020 00

>H102OC>JO200>GPROGRAMBROKEATADDRESS 020D>MI20

>MI 70

0070 55 63

Page 108: LE002-Introduccion a Los Microcontroladores

Modelo de programación (1) 107

0070 55 63007155>J 0200>GPROGRAMBROKEATADDRESS 020Dx4120

Los ejercicios 6.6 y 6.7 pueden ser resueltos también con macroinstrucciones como CJNEA,<byte>,rel estudiada en el apartado 4.2.2, «Instrucciones de salto condicional».

Esta instrucción compara y salta si el resultado no es igual y su utilidad se puede vera continuación.

La eficacia de estas macroinstrucciones puede verse amenazada por la falta de flexi-bilidad, pero se puede fácilmente comprender que en este caso, que es habitual, resultamuy eficaz, por lo que es ventajosa su inclusión en el set de instrucciones.

?? FlujogramaTESPAL2.ASM

C O M P . ( A ) c o n 6 3 H

N O ( S A L O : )L

V

CLR 20.0 S E T B 2 0 . 0

l

Page 109: LE002-Introduccion a Los Microcontroladores

108 Introducción a los Merocontroladores

?? Listado

TITLE TESTEODE.BYTES. TESPAL2.ASMCOMMENT * Eneste caso detecta unbyte (carác-

ter) utilizando la instrucción es-pecialdela familia 51 (CJNE).9.2.91

*

ORIGIN 0200HSYMBOLS ONCODE

CHE EQU 70HRES EQU 20H

MOV A, CHE ; Se carga ACC con el contenido de la variable CHECJNE A, #63H, SALO ; Compara el contenido del ACC con el dato # 63H y salta

; a SALO, si (ACC) es distinto de # 63HCLR RES.0 ; En el caso de que sean iguales, pone el bit0 de la posmem

; 20H a “CERO”; . . . y salta al final; Si no es igual a CERO, carga con “1” el bit0 de la posmem; 20H y finaliza

JMP SAL1SALO:SETB RES.0

SAL1:NOPEND

Se puede observar cómo esta instrucción CJNE compara y salta, presenta un algo-ritmo similar al Ejercicio 6.6, en donde se utilizaba la operación resta y una toma dedecisión en función del resultado.

?? Ejecución

La ejecución del programa es similar a los dos apartados anteriores en los que se ha co-mentado profusamente, por lo que se suprime el comentario en este ejercicio.

>1EP8052V3.2>DOTESPALÍ!.HEX

Downloadinprocess: 0200Download completed!>2 0200 02ocLOC OBJ LINE LABEL SOURCE CODE0200 E570 0001 MOV A,700202 B46305 0002 CJNE A,#63,020A0205 c200 0003 CLR 20.00207 0202oc 0004 LJMP 02oc020A D200 0005 B020A SETB 20.002oc 00 0006 B020C NOP

DISASSEMBLYCOMPLETED

Page 110: LE002-Introduccion a Los Microcontroladores

Modelo de programación (1) 109

>MI 70

0070 55

>MI20

0020 00

>Ii102OC>JO200>GPROGRAMBROKEATADDRESS 020D>MI20

>MI70

0070 55 63

007155

>JO200>GPROGRAMBROKEATADDRESS 020D>MI 20

En el siguiente capítulo se estudiarán algunas estructuras de interés un poco máscomplejas a las vistas en este capítulo, pero que se complementan. Al finalizar el estudiodel siguiente capítulo, ya se puede dar por concluida la etapa de iniciación en el cono-cimiento de la familia de Microcontroladores 5 1.

Page 111: LE002-Introduccion a Los Microcontroladores

110 Introducción a los Microcontroladores

3.

4.

Hacer una nueva versión del Ejercicio 6.1(se sugiere poner por nombre al nuevo ti-chero ALTERl .ASM) sust i tuyendo la ope-ración suma por multiplicación y la restapor división. Estas operaciones se explicanen el Apartado 3.5 ( instrucciones ari tméti-cas).

Seguir los programas ITERA0 e INTE-RA 1 .ASM paso a paso ( instrucción a ins-trucción), indicando los cambios que seproducen en los registros y posiciones dememoria hasta concluir los programas.Así, por ejemplo, para el EjercicioITERAO.ASM:

C O N <--- 0 5A C C <--- (CON)A C C <--- ACC+óOH

R O <--- 6 5 H(65) <--- F F H

C O N <--- C O N - l

(Recuérdese que los paréntesis se leen como«el contenido de.. .»).

Realizar lo que se propone en elEjercicio 6.4 (comprobación de bits), perodetectar los bits 0 y 7 (X000000X) car-gando FFH en RES solamente si ambosbits son 1 . Ut i l izar los dos métodos que seproponen en dicho ejercicio.

Hacer el mismo ejercicio indicado en el

5.

6.

7 .

8 .

9 .

punto anter ior por los t res métodos que seproponen en los Ejercicios 6.6, 6.7 y 6.8.Ahora se deberá tratar el dato en formatode byte.

Cargar la posmem 22H con 34H si las pos-mem 35H y 36H contienen números con-secutivos, y si no cumple esta condiciónponerla a «cero».

Restar las posmem 38H (minuendo) y 39H(sustraendo). Si el resultado es igual o ma-yor que cero, poner el resultado en la pos-mem 70H y si es menor, poner la suma dedichas posmem.

Complementar a 1 y a 2 el dato contenidoen la posmem 60H y depositar el resultadoen las posmem 61H y 62H respectiva-mente.

Cargar las posmem 20H a 29H con los diezprimeros números ordenados de menor amayor.

Se t iene un grupo de datos si tuados en lasposmem SOH, 52H, 54H, 56H y 58H.Realizar un programa que indique, en laposmem impar s iguiente al dato, s i e l datoque le precede es par o impar.

Así, si es par, se indicará con OOH, y s ies impar, con OlH. Por ejemplo, si el datosituado en la posmem 50H es 85H (impar)en la posmem 5 lH, deberá contener 0 1H.

Hacer el mismo ejercicio, pero indi-cando s i e l dato es posi t ivo o negat ivo.

Page 112: LE002-Introduccion a Los Microcontroladores

CAPITULO

Modelo de programación (II)

Como en los ejercicios anteriores, es habitual realizar «retardos», aunque, bien es ver-dad que, los retardos de mayor precisión y los que no impiden a la CPU mantener el controlde los periféricos son los retardos producidos con la ayuda de los timers físicos. El 8052tiene tres timers programables y el 805 1 dos, pero de su utilización y programación setratará en capítulos posteriores, por lo que en este apartado sólo se hará referencia a losretardos producidos por software.

Para obtener estos retardos recurrimos al algoritmo de cargar varios registros, tantosmás cuanto mayor es el retardo a producir, con valores que son directamente proporcio-nales al retardo a conseguir. El decremento sucesivo de los mismos de una forma ani-dada produce estos tiempos de espera.

En este ejercicio se utilizan tres registros de 8 bits: el RO, RI y R2, cargados con va-lores iniciales comprendidos entre FFH y 0 1 H. Naturalmente, si se utilizaran registrosde 16 bits, se conseguiría mayor efectividad con menos registros implicados. En este caso,cada registro se carga con el valor siguiente:

RO t- 55HRl f- 85HR2 c- FFH

consiguiendo un retardo de aproximadamente 6 segundos. Para valores superiores de re-tardo hay que incrementar la constante de carga de los registros, y para valores todavíamayores, aumentar el número de registros anidados, como se ha explicado.

111

Page 113: LE002-Introduccion a Los Microcontroladores

112 Introducción a los Microcontroladores

?? Flujograma ?? Listado

TITLE RETARDO. RETARO.ASMCOMMENT * Permite realizar retardos en rela-

ciónconlosvaloresque secarguenenlos registros RO, RlyR2.9.2.91

*

ORIGIN 0200HSYMBOLS ONCODE

MOV RO,SALO:MOV Rl,SAL1:MOV R2,SAL2:DJNZ R2,

DJNZ Rl,

DJNZ RO,

NOPEND

# 5 5H ; Se CARGA el registro RO con # 55H#85H ;SeCARGARl con #85H# FFH ; Se CARGA R2 con # FFHSAL2 ; Decrementa R2 y repite el lazo hasta

; que R2=0SAL1 ; Lo mismo que la instrucción anterior,

; pero bar cada lazo de RI, ejecuta FFH; veces el lazo R2

SALO ; Lo mismo que las instrucciones; anteriores, pero por cada vez que; decrementa RO, decrementa 85H veces; RI y 85H*FFH veces R2.) . . . y sale del proceso

Obsérvese la estructura de lazos anidados y cómo, para decrementar una vez el regis-tro R 1, debe decrementar FFH veces el registro R2 y cómo, para decrementar una vezRO, debe decrementar 85H veces Rl .

?? Ejecución

Una vez dada la orden de ejecución del programa, se observará un retardo en el tiempode comparecencia en la pantalla del símbolo «mayor que» (>) que indica la finalizacióndel programa.

>IEP8052V3.2>DO RETARO.HEX

Downloadinprocess: 0200Downloadcompleted!>z 0200 02ocLOC OBJ LINE LABEL SOURCE CODE0200 7855 0001 MOV RO,+550202 7985 0002 B0202 MOV R1,#850204 7AFF 0003 B0204 MOV R2,#FF

Page 114: LE002-Introduccion a Los Microcontroladores

Modelo de programación (Il) 1 1 3

0206 DAFE 0004 B0206 DJNZ R2,02060208 D9FA 0005 DJNZ R1,0204020A D8F6 0006 DJNZ RO,020202oc 00 0007 NOP

DISASSEMBLYCOMPLETED>HlH1=020C>JO200>GPROGRAMBROKEATADDRESS 020D>TIEMPODE RETARDOAPROXIMADAMENTE 6 SEGUNDOS

Ejercicio 7.2. Movimiento de tabb de datos en la memoria externa

En el control de procesos se producen prácticas habituales de manipulación de datos,que el programador debe convertir, gracias a su técnica e ingenio, en rutinas eficaces.Así, el programador deberá elaborar rutinas para:

- El movimiento de datos de una posición a otra de memoria.- Captura y selección de datos del exterior a través de una unidad de E/S y su co-

locación en memoria.- Búsqueda y selección sobre tablas de datos, etc.

Este apartado y el siguiente proponen ejercicios de proceso sobre bloques de datos.Para estas rutinas los SO52/805 1 cuentan con unas instrucciones muy potentes que vana ser analizadas.

Este ejercicio copia de una posición a otra de la memoria RAM externa un bloquede datos. Estos bloques, para simplificar el problema, son de tamaño fijo, de una páginade 256 bytes, y comienzan en el primer byte de la página seleccionada. Así, en nuestrocaso, si se quiere copiar un bloque de datos situado en las posmem 03 15H a 0380H (pá-gina 03H), a la página 05H, se copiaría todo el contenido de la página 03 (posmem 0300Ha 03FFH) a la página 5 (posmem 0500H a OSFFH) y el bloque de datos situado inicial-mente en las posmem 0315H a 0380H se encontrará copiado en las posmem 05 15H a0580H.

A continuación se muestra el flujograma y el listado del programa fuente, tal comose ha previsto. Se invita al usuario a que realice una versión mejorada, indicando el rangode las posmem a copiar (posmem inicial a posmem final) y la dirección de la primeraposmem destino, incluso por encima del rango de una página de 256 bytes.

FUENTE COPIA

0300H 0 4 0 0 H 0 5 0 0 H 0 6 0 0 H

Page 115: LE002-Introduccion a Los Microcontroladores

1 1 4 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

??Flujogramã ?? Listado

MOTABLAO.ASM

TITLE MOVIMIENTO DE TABLAS. MOTABLAO.ASMCOMMENT * Trasladapáginas de 256 bytes

9.2.91*

ORIGIN 0200HSYMBOLS ONCODE

; RO es elpunteroque recorre las páginas: RleslapáginaFUENTE; R2 eslapáginaDESTIN0

MOV RO, # 0 OH ; Inicializa el punteroSALO:MOV DPL, RO ; Carga RO en el byte bajo del DPTR

DPH <-- (Rl)

4

A <-- ( D P T R ) L E C T U R A

I

DPH <-- (R2)I-IM O V X @DPTR,A

IESCRITURP

MOV DPH, Rl ; Carga Rl en el byte alio del DPTR; (FUENTE)

MOVX A, @DPTR ; Lee byte apuntado por DPTRMOV DPH, R2 ; Carga el byte alto del DPTR

; (DESTINO)MOVX @DPTR,A ; Escribe byte apuntado por DPTRINC RO ; Incrementa punteroMOV A, RO ; Carga el ACC para la s iguiente

; instrucciónJNZ SALO ; Busca el s iguiente byte en la página

; y si es CERO concluye porque ha; terminado la página

NOPEND

Page 116: LE002-Introduccion a Los Microcontroladores

?? Ejecución

Modelo de programación (11) 115

Puesto que este ejercicio utiliza la memoria externa, lo primero que se debe hacer es ha-bilitarla. En nuestro sistema de desarrollo se utiliza la memoria de emulación (SUEM)como memoria externa (*M E).

>*MEMap: emulationmemoryisenabled>DA>DOMO'lYABLAO.HEX

Downloadin process:Downloadcompleted!

>z 0200020ELOC OBJ0200 78000202 88820204 89830206 EO0207 8A830209 FO020A 08020B Ea02oc 70F4020E 00

0200

LINE LABEL SOURCE0001 MOV0002 B0202 MOV0003 MOV0004 MOVX0005 MOV0006 MOVX0007 INC0008 MOV0009 JNZ0010 NOP

CODERO,+=00DPL,RODPH,RlA,@DPTRDPH,RZ@DPTR,AROA,RO0202

DISASSEMBLYCOMPLETED

Se cargan los registros RI y R2 con las páginas fuente y destino, respectivamente.

>>RRlRl (01) 00 03R2 (02)0005R3 (03) 55

En la página 0300H se cargan en sus primeros bytes los números 0, 1, 2, . . . . 9 y enlas últimas posmem de la página los números 0, 1, 2, . . . . D, E, F, que han de servir paraconfirmar que la copia se ha llevado a cabo.

Obsérvese cómo se efectúa la lectura de la memoria externa con el comando (MX).

>MX0300030FOO 0102 03 04 05 06 07 08 09 OAOBOCODOE OF ASCII-CODE

0300 30313233343536373839OAOBOCOOFBDF 0123456789......

>MX03FO 03FFOO 0102 03 04 05 06 07 08 09 OAOB OC ODOE OF ASCII-CODE

0300 3031323334353637 3839414243 44 4546 0123456789ABCDEF

Page 117: LE002-Introduccion a Los Microcontroladores

1 1 6 Introducción a los Microcontroladores

Se ejecuta el programa y se comprueba que el traspaso se ha llevado a cabo.

>>H1020E>>JO200

>GPROGRAMBROKEATADDRESS 020F

>>MX0500050F

OO 0102 03 04 05 06 07 08 09 OAOBOCODOEOF ASCII-CODE0500 30 3132 33 34 35 36 37 38 39 OAOBOCOOFBDF 0123456789......>MX05FO05FF

OO 0102 03 04 050607 0809OAOBOCODOEOF ASCII-CODE05F0 30 3132 33 34 35 36 37 38 39 4142 43 44 4546 0123456789ABCDEF

En algunas ocasiones interesa conocer, para hacer un estudio estadístico, la cantidad deveces que aparece un determinado dato y en qué posición de la tabla de datos se encuen-tra localizado.

Este ejercicio muestra cómo se realiza esta operación dentro de la memoria de pro-gramas de 8K, pudiendo hacer lo mismo en la memoria RAM externa o interna de los8052/805 1, naturalmente, habrá que hacer referencia a las instrucciones correspondien-tes, pues claramente se resaltaron en el estudio del set de instrucciones en el Aparta-do 3.7.1, la «Transferencia de datos sobre la RAM interna», en el Apartado 3.7.2, la«Transferencia de datos sobre la RAM externa», y en el Apartado 3.7.3, «Memoria deprogramas para el tratamiento de tablas».

Concretamente este ejercicio trata de buscar un determinado dato, 23H, en una tablacuyo rango es 0300H a 03FFH. Los resultados que se han de indicar son el número deveces que ha sido encontrado y la posición de memoria en que se encuentran estos datos.

R2 = número de vecesA partir de la posmem 60 = situación

Page 118: LE002-Introduccion a Los Microcontroladores

Modelo de programación (II) 117

?? Flujograma ?? Listado

l IINC (DPTR)

0Rl c-- (DPH)

TITLE CHEQUEODE TABLAS DE DATOS. CHEQUEO.ASMCOMMENT * Busca el carácter marcado dentro del

rango de memoria (0300F-03FF) indi-cando el número de los encontrados ysus posiciones. El carácter abuscaresel#23H.Las posmem en las que previamente sehaescritodichocarácter son:

0323-0343-03F3*

ORIGIN 0200HSYMBOLS ONCODE

#POS ; Apunta el comienzo de la tabla; de las posmem en las que; se van a localizar los caracteres

EA <-- (AtDPTR)

IINC (RO)

-MOV R2 I #OOH ; Se inicializa R2 con 0.; Contador de carácter

MOV Rl, #OOH ; Se inicializa Rl con 0.; Contador de tablas

MOV DPTR, #02FFH ; Se inicializa DPTR con el; comienzo de la tabla

SALO:INC DPTR ; Se busca otro carácterMOV Rl, DPHCJNE Rl, # 03H, SAL1 ; Si se termina la tabla 03xx sale

; del procesoMOV A, #OOH ; El ACC apunta al registro R3

; que está a CEROMOVC A, @A+DPTR ; Se LEE el carácter y se carga

; en el ACC.CJNE A, # 2 3 H , SALO ; Si el carácter no es # 23H busca

; s igu ien teINC R2 ; Si el carácter es # 23H

; incrementa contadorMOV @RO, DPH ; Apunta pos. de mem. (H)

; localización carácterINC ROMOV @RO, DPL ; Apunta posmem (L)

; localización carácterINC ROJMP SALO ; Busca otro carácter para

; evaluarSAL1:NOP

END

Page 119: LE002-Introduccion a Los Microcontroladores

1 1 8 I n t r o d u c c i ó n o l o s Mcrocontrolodores

?? Ejecución

Después del «desensamblado» se introduce el dato 23H en las posmem 0323H, 0343Hy 03F3H, que el programa deberá descubrir, y también se ponen a cero las posmem apartir de la 60H.

>1EP8052V3.2>DOCHEQUEO.HEX

Downloadcompleted!>>Z 0200 021ELOC OBJ0200 78600202 7AOO0204 79000206 9002FF0209 A3020A A98302oc B9030F020F 74000211 930212 B423F40215 OA0216 A6830218 080219 A682021B 08021c 4109021E 00

DISASSEMBLYCOMPLETED

>>M03230323 23

>M 0 3 4 30 3 4 3 2 3>M03F303F3 23

LINE LABEL SOURCE0001 MOV0002 MOV0003 MOV0004 MOV0005 B0209 INC0006 MOV0007 CJNE0008 MOV0009 MOVC0010 CJNE0011 INC0012 MOV0013 INC0014 MOV0015 INC0016 AJMP0017 B021E NOP

CODERO,#60R2,#00Rl,#OODPTR,#02FFDPTRRl,DPHR1,#03,021EA, #OOA,@A+DPTRA,#23,0209R2@RO,DPHRO@RO,DPLRO0209

>>MI 60 6F

OO 0102 03 04 05 06 07 08 09 OAOBOCODOE OF ASCII-CODE0060 00000000000000000000000000000000 . . . . . . . . . . . . . .

Esta vez en la ejecución se ha establecido una diferencia respecto a las de anterioresejercicios y es que se ha colocado un «punto de ruptura» del programa en la posmem02 11 H, pero en la «pasada» o vuelta número lOOH, que es justo cuando el programarealiza la salida del mismo, porque ha llegado a su fin. Esta circunstancia se aprovecha

Page 120: LE002-Introduccion a Los Microcontroladores

Modelo de programación (ll) 1 1 9

para hacer un seguimiento de las últimas instrucciones «paso a paso», observando losregistros.

>H10211100>JO200>GPROGRAMBROKEATADDRESS 0212>SR

IFADDRADDRESSDATA SOURCECODE0212 0212 B4 CJNE A,#23,0209

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)02 OO 81 40 03 FF 6603030055EODO020209 0209 A3 INC DPTR

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)02 OO 81 40 04 OO 6603 030055EODO02020A 020A A9 MOV Rl,DPH

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)02 OO 81 40 04 OO 6604 030055EODO0202oc 02OC B9 CJNE R1,#03,021E

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)02 OO 01 40 04 OO 66 04 03 OO 55EODO02021E 021E OO NOP

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)02 OO 01 40 04 OO 660403 0055EODO02

PSW PCCAFBBO-P100000010209

PSW PCCAFBBO-P10000001020A

PSW PCCAFBBO-P10000001020c

PSW PCCAFBBO-P00000001021E

PSW PCCAFBBO-P00000001021F

Una vez concluido el programa, se buscan las soluciones. En el registro R2 se en-cuentra el dato que nos dice el número de veces que apareció el dato 23H, y a partir dela posmem interna 60H, indica en qué posmem estaba situado el dato.

>>RR2

>MI 60 6FOO 0102 03 04 05 06 07 08 09 OAOBOCODOE OF ASCII-CODE

0060 0323 03 43 03 F3 OO OO OO 000000 OO OO OO OO .#.C . . . . . . . . .

Page 121: LE002-Introduccion a Los Microcontroladores

1 2 0 Introducción a los Microcontroladores

En cualquier programa aparecen bloques repetitivos que repercuten en su crecimiento y,por tanto, en la memoria utilizada y en la claridad y sencillez de interpretación para re-visarlo, ampliarlo o estudiarlo.

Dada la importancia del tema se proponen dos métodos de trabajo con las subruti-nas:

METODO 1:Incluir en el mismo archivo el programa principal y las subrutinas.

METODO 2:Crear un fichero para el programa principal y otro/s para las subrutinas.

Un ejemplo muy sencillo, pero demostrativo de la utilización de las subrutinas, es elejercicio que se propone a continuación resuelto por los dos métodos.

Se pide escribir en memoria el número, permítasenos llamarlo así, mágico, del Mi-crocontrolador 8052, a partir de la posmem 60H de la memoria interna, pero inclu-yendo entre las cifras un guión (-), así 8-O-5-2.

?? Flujograma

(+z)

JIRO <-- PUNTERO

JI

ESCRIBIR “8”

J1

CALL “GUION”

4

ESCRIBIR “0”

JI01

CALL “GUION”

ESCRIBIR “5”

CALL “GUION”

ESCRIBIR “2”

INC PUNTERO

ESCRIBIR “-”

clINC PUNTERO

(iRET

Page 122: LE002-Introduccion a Los Microcontroladores

Modelo de programación (ll) 1 2 1

Resuelto por el método 1:

?? Listado

TITLECOMMENT

ORIGINSYMBOLSCODE

PUN EQU 60HGUION EQU 0300H

MOV RO, #PUNMOV @RO, #38HCALL GUIONMOV @RO, #30HCALL GUIONMOV @RO, #35HCALL GUIONMOV @RO, #32HNOP

SUBRUTINAS. SUBRUO.ASM* Escribecaracteresylos separaconunguión.

Esteguiónes una subrutina16.2.91

*

0200HON

; Inicializa el puntero; Carga en la posmem PUN el carácter decimal “8”; Llama a la subrutina GUION; Carga en la posmem PUN + INC el carácter “0”

; Carga en la posmem PUN + INC el carácter “5”

; Carga en la posmem PUN + INC el carácter “2”

ORIGIN 0300HINC ROMOV @RO, #2DHINC RORETEND

; Incrementa RO = PUN + 1; Carga en la posmem PUN + INC el carácter “-”; Prepara la posmem para depositar el s iguiente; Retorno al programa principal

Obsérvese que tanto el programa principal como la subrutina forman un único pro-grama, con el matiz de que el programa principal comienza en la posmem 0200H y lasubrutina en la posmem 0300H.

Resuelto por el método 2:

?? Listado

Con este método se abre un fichero para contener el programa principal (PRO-GRA.ASM)...

TITLECOMMENT

PROGRAMAPRINCIPAL. PROGRA.ASM* En este ejercicio se separa el PROGRAMAdela

SUBRUTINA.16.2.91

*

Page 123: LE002-Introduccion a Los Microcontroladores

1 2 2 Introducción a los Microcontroladores

ORIGIN 0200HSYMBOLS ONCODE

PUN EQU 60HGUION EQU 0300H

MOV RO, #PUNMOV @RO, #38HCALL GUIONMOV @RO, #30HCALL GUIONMOV @RO, #35HCALL GUIONMOV @RO, #32HNOPEND

; Inicializa el puntero; Carga en la posmem PUN el carácter decimal “8”; Llama a la subrutina GUION; Carga en la posmem PUN + INC el carácter “0”

; Carga en la posmem PUN + INC el carácter “5”

; Carga en la posmem PUN + INC el carácter “2”

y otro archivo/s para cada subrutina, en este caso (SUBRU.ASM)

TITLECOMMENT

SUBRUTINA. SUBRU.ASM* Esta es una SUBRUTINA perteneciente al pro-

gramaPROGRA.ASM.16.2.91

*

ORIGIN 0300HSYMBOLS ONCODEINC ROMOV @RO, #2DHINC RORETEND

; Incrementa RO = PUN + 1; Carga en la posmem PUN + INC el carácter “-”; Prepara la posmem para depositar el s iguiente; Retorno al programa principal PROGRAM

En el primer caso se ensambla y enlaza el único archivo como se ha estado reali-zando hasta ahora y, según el método 2, se ensamblan separadamente, obteniendo dosarchivos:

PRoGuAsh4 --+ PROGRA.OBJ

SUBRU.ASM __, SUBRU.OBJ

La operación de enlace se efectúa en el enlazador (linker) como se indica a continua-ción. Obsérvese cómo se adicionan los dos archivos para crear un único archivo al quese llama FUSION.

PROGRA.OBJ + SUBRU.OBJ w FUSION.HEX

Page 124: LE002-Introduccion a Los Microcontroladores

Modelo de programación (ll)

c:>LINK

2500A.D.Linker Copyright(C)1985 - Version4.05a

Input Filename : PROGRA. OBJEnter Offset For 'CODE' :O

Input Filename : SUBRU. OBJEnterOffset For 'CODE' :o

Input Filename :

Output Filename : FUSION

Library Filename :

Options (D, P, S, A, M, N, 8, X, H, E, T, 1, 2, 3, <CR>=Default) :

Linker Output Filename : FUSION.hexDisk Listing Filename : <NoneSpecified>Symbol Table Filename : <None Specified>

LinkErrors : 0 Output Format : IntelHex

?? Ejecución

Para ejecutar el programa, primero debe cargarse en la memoria del microcontrolador.Esta operación, realizada por el método 1, se lleva a cabo como siempre:

>DOSUBRUO.HEX

Downloadinprocess: 0300Download completed!>>z 0200 0210LOC OBJ0200 78600202 76380204 71000206 76300208 7100020A 763502oc 7100020E 76320210 00

DISASSEMBLYCOMPLETED>z 0300 0304LOC OBJ0300 080301 762D0303 080304 22

DISASSEMBLYCOMPLETED>

LINE LABEL SOURCE0001 MOV0002 MOV0003 ACALL0004 MOV0005 ACALL0006 MOV0007 ACALL0008 MOV0009 NOP

LINE LABEL SOURCE0001 INC0002 MOV0003 INC0004 RET

CODERO,+60@RO,+380300@RO,#300300@RO,+350300@RO,+32

CODERO@RO,#2DRO

Page 125: LE002-Introduccion a Los Microcontroladores

124 Introducción a los Microcontroladores

Utilizando el método 2:

>!EP8052V3.2>DOFUSION.HEX

Download completed!>z 02000210LOC OBJ0200 78600202 76380204 71000206 76300208 7100020A 763502oc 7100020E 76320210 00

DISASSEMBLYCOMPLETED>zo300 0304LOC OBJ0300 080301 762D0303 080304 22

DISASSEMBLYCOMPLETED>

LINE000100020003000400050006000700080009

LINE0001000200030004

Este es el resultado de la ejecución:

>JO200>Ii10210>GPROGRAMBROKEATADDRESS 0211

>MI60 66

LABEL SOURCEMOVMOVACALLMOVACALLMOVACALLMOVNOP

LABEL SOURCEINCMOVINCRET

CODERO,#60@RO,#380300@RO,+300300@RO,#350300@RO,#32

CODERO@RO,#2DRO

OO 0102 03 04 05 06 07 08 09 OAOBOCODOEOF ASCII-CODE0060>

Page 126: LE002-Introduccion a Los Microcontroladores

Modelo de programación (11) 125

Finalmente, para terminar con este apartado dedicado al modelo de programación del8052/805 1, se dedica un ejercicio al manejo de las instrucciones de acceso a la memoriade pila y a las rotaciones.

A la pila, como se puede ver en este ejercicio, no solamente la gestiona el microcon-trolador, de una forma automática, para salvar los registros importantes en los saltos alas subrutinas e interrupciones, sino que también puede y debe ser utilizada y gestionadapor el programador. En este ejercicio, que por otro lado no tiene otras pretensiones quedemostrar estas instrucciones, se ha situado la zona reservada a la pila en otra zona dela memoria interna, distinta a la que por defecto y después de un RESET el microcon-trolador posiciona. Como se recordará, en el capítulo 2, apartado 2.6, se decía que des-pués de un RESET el microcontrolador situaba el comienzo de la pila en la posmem08H. En este ejercicio, como se puede ver en la primera instrucción del programa, la pilase direcciona a partir de la posmem 40H y en sentido creciente.

iPor qué utilizar la pila?Porque el registro de rotación y el contador de rotaciones que se necesitan para este

ejercicio utilizan el mismo registro físico, el acumulador (ACC). Para conseguir esta ca-pacidad del acumulador se utiliza la pila, que permite salvaguardar los valores de los re-gistros, en este caso concreto del acumulador. Es innegable que si se necesita un conta-dor se recurre directamente a uno de los registros de trabajo, pero se ha preferido hacerloasí para ver las características de la pila.

El ejercicio planteado pretende que un dato como 0 1 H realice una rotación completay que finalice en la misma posición con la que empezó o, dicho de otra manera, que elcontenido del b0 se desplace a la izquierda sobre el registro para después de varios des-plazamientos concluya en la misma posición. Para esta operación es preciso efectuar,como se comprobará, 8 rotaciones «bit a bit».

b7 b6 b5 b4 b3 b2 bl b0

0 0 0 0

Después de ocho rotaciones, en el sentido de las flechas, el registro tendrá el mismovalor.

Recuérdese que hay otra instrucción que implica en la rotación al carry y que juntocon las instrucciones de salto condicional (alternativa), constituye una herramienta muyimportante para la toma de decisiones. Además están las instrucciones de rotación a laderecha con carry y sin él, en este caso no se implica en la rotación al carry.

Page 127: LE002-Introduccion a Los Microcontroladores

1 2 6 htroducción a los Microcontroladores

?? Flujograma ?? Listado

TITLE GESTION DE LA PILA Y ROTACIONES.ROTAO.ASM

COMMENT *

*

Utiliza el Acumulador como registrocontadorycomoregistroderotación.Para conseguir estos resultados debede gestionarla guarda delos valoresenlamemoriade pila.23.2.91

(41)~.- OOH (PUSH A) ORIGIN 0200H

j. SYMBOLS ON

A <-- (ROT) CODE

4REF EQU 70HROT EQU 6FH

RLA MOV SP, #40H

J- MOV A, #OOHROT<-- A PUSH A

j. MOV REF,#OlHA <-- (41) (POPA)

MOV4

ROT,REF

INC (A) MOV A, ROTSALO:RL A

4 MOV ROT,A

(41) c--A (PUSH A)

j. POP A

A <-- (ROT)INC A

j. PUSH A

; Recupera valor contador. El ACC; es ahora contador; Incrementa CONTADOR; Guarda contador en la PILA; Recupera el dato rotadoMOV A, ROT

CJNE A, REF, SALO; Compara ACC con REF para salir; del programa cuando sean iguales

NOPEND

; Inicialización de la pila en área; SCRATCH-PAD; Carga del ACC con OOH; Se guarda en la pila. Inicialización; del CONTADOR; Se inicializa el registro de; REFERENCIA; Se inicializa el registro de; ROTACION; Se carga el ACC con el valor de ROT; Rotación a la izda. del ACC; Se salva el contenido de ACC una; vez; rotado

Page 128: LE002-Introduccion a Los Microcontroladores

?? Ejecución

Modelo de programación (Il) 1 2 7

Una vez cargado el programa en la memoria del microcontrolador, se efectúa un desen-samblado y se procede a la ejecución «paso a paso», hasta completar el primer ciclo deprograma. A partir de esta posmem 02 lOH, se procede a la ejecución normal, simple-mente pulsando (G), habiendo colocado previamente un punto de ruptura en la pos-mem 02 1 CH.

La visión de los registros demuestra que el acumulador ha quedado cargado con elmismo valor que tenía al comenzar la rotación v aue el contador de rotaciones (posmem4 1 H) señala ocho rotaciones.

>1EP8052V3.2>DOROTAO.?IEX

Downloadinprocess:Download completed!>>z 0200 021cLOC OBJ0200 7581400203 74000205 COEO0207 757001020A 85706F020D E56F020F 230210 F56F0212 DOEO0214 040215 COEO0217 E56F0219 B570F3021c 00

0200

LINE LABEL SOURCE0001 MOV0002 MOV0003 PUSH0004 MOV0005 MOV0006 MOV0007 B020F RL0008 MOV0009 POP0010 INC0011 PUSH0012 MOV0013 CJNE0014 NOP

CODESP,#40A, #OOACC70,#016F,70A,6FA6F,AACCAACCA,6FA,70,020F

DISASSEMBLYCOMPLETED

>JO200>SR

IFADDRADDRESS DATA SOURCECODE PSW PC0200 0200 75 M O V SP,#40 CAFBBO-P

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)E8l)(83)(82)01 OO 01 40 OO OO 7502 57 55 55 55 5500 0000000102030203 0203 74 MOV A, #OO

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7 PSW PC(EO)(FO)(DO)(8l)(83)(82) CAFBBO-POO OO OO 40 OO OO 7502575555555500 0000000002050205 0205 CO PUSH ACC

Page 129: LE002-Introduccion a Los Microcontroladores

1 2 8 Introducción a los Microcontroladores

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7 PSW PC(EO)(FO)(DO)(81)(83)(82) CAFBBO-P00 00 00 41 00 00 75025755555555000207 0207 75 M O V 70,#01

ACC B PSW SP DPH DPL RO RlR2 R3 R4 R5 R6 R7(EO) (FO (DO)(81)(83)(82)00 00 00 41 00 00 7502575555555500020A 020A 85 MOV 6F,70

ACC B PSW SP DPH DPL RO RlR2 R3 R4 R5 R6 R7(EO) (FO (DO)(81)(83)(82)00 00 OO 41 OO OO 7502575555555500020D 020D E5 MOV A,6F

ACC B PSW SP DPH DPL RO RlR2 R3 R4 R5 R6 R7(EO)(FO)(DO)(8l)(83)(82)01 00 01 41 00 00 7502575555555500-020F 020F 23 RL A

ACC B PSW SP DPH DPL RORlR2R3R4RSR6R7(EO)(FO)(DO)(8l)(83)(82)

-02 0 0 01 41 00 00 7502 5755555555000210 0210 F5 MOV 6F,A

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)02 00 01 41 00 00 75025755555555000212 0212 DO POP ACC

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)00 00 00 40 00 00 75025755555555000214 0214 04 INC A

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)01 00 01 40 00 00 75025755555555000215 0215 CO PUSH ACC

ACC B PSW SP DPH DPL RORlR2R3R4RSR6R7(EO)(FO)(DO)(8l)(83)(82)01 00 01 41 00 00 75025755555555000217 0217 ES MOV A,6F

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)02 00 01 41 00 00 7502575555555500'0219 0219 B5 CJNE A,70,020F

ACC B PSW SP DPH DPL RORlR2R3R4R5R6R7(EO)(FO)(DO)(8l)(83)(82)02 00 01 41 00 OO 7502 57 55 55 55 5500

23 RL ADPH DPL RO RlR2 R3 R4 R5 R6 R7)(83 )(82)

04 00 01 41 00 OO 7502 57 55 55 55 5500

>G

000000000207

PSW PCCAFBBO-P00000000 020A

PSW PCCAFBBO-P00000000 020D

PSW PCCAFBBO-P00000001020F

PSW PCCAFBBO-P000000010210

PSW PCCAFBBO-P000000010212

PSW PCCAFBBO-P00000000 0214

PSW PCCAFBBO-P000000010215

PSW PCCAFBBO-P000000010217

PSW PCCAFBBO-P000000010219

PSW PCCAFBBO-P00000001020F

PSW PCCAFBBO-P000000010210

Page 130: LE002-Introduccion a Los Microcontroladores

, Modelo de programación (ll) 129

PROGRAMBROKEATADDRESS 021D>R

B PSW SP DPH DPL RO RlR2 R3 R4 R.5 R6 R7 PSW PC(FO)(DO)(81)(83)(82) CAFBBO-POO 01 41 OO OO 7502 575555555500 00000001021D

>MI 41

En el acumulador se encuentra el dato después de ocho rotaciones.El número de rotaciones se lee en la primera posmem de la memoria de pila.

1. Realizar el cálculo del retardo en funcióndel contenido de los registros y del t iempode ejecución de las instrucciones corres-pondientes en el Ejercicio 7.1, «Retardo porsoftware», considerando que la frecuenciade reloj del microcontrolador que ejecutaeste programa es de 12MHz.

2 .

3 .

4 .

Nota: Como se indica en el ejercicio, el tiempoaproximado es de 6 segundos y los valores de losr e g i s t r o s s o n :RO = 55HRI = 85HR2 = FFH

Realizar una nueva versión del Ejercicio 7.2MOTABLAO.ASM con las siguientes con-diciones:a) En dos registros o posmem indicar

- posmem de comienzo y posmem finalde la tabla de datos a copiar.

b) En un registro o posmem indicar pri-mera posmem destino de la tabla.

Se t iene una tabla de datos, en la memoriade programas, de la posmem 1000H a1050H. Escribir un programa para buscarel dato de mayor valor de la tabla y si-tuarlo en la posmem 60H de la memoriaRAM interna.

En la tabla del ejercicio anterior, determi-

nar el número de datos pares e impares.Colocar el número de datos pares en laposmem 50H y el de los impares en la 5 1H.Hacer el mismo ejercicio considerando estavez los datos positivos y negativos.

Realizar una suma de dos números de16 bits . el primer sumando se encuentra enlas posmem 60H (byte bajo) y 6 1 H (bytealto) y el segundo en las posmem 62H (bytebajo) y 63H (byte alto). El resultado se si-túa en la posmem 64H (byte bajo), 65H(byte alto) y 66H (posible acarreo).

Realizar el ejercicio anterior en múltipleprecisión con datos y resultados en deci-mal codificado en binario (BCD).

Convert ir diez números codif icados en AS-CII en decimal. Los números están situa-dos en las posmem comprendidas entre la60H y 69H. Colocar los resultados en lasposmem 70H y 79H.Nota: Utilizar una rutina para la conversión delnúmero ASCII en decimal.

Realizar el ejercicio anterior modificandola rutina de conversión. En esta ocasión:a) Conversión de caracteres ASCII a nú-

meros en hexadecimal.b) Conversión de números en hexadeci-

mal a caracteres ASCII.

Page 131: LE002-Introduccion a Los Microcontroladores

CAPITULO

Control de periféricos.Puertos de Entrada/Salida

8.1. INTRODUCCION

En el Capítulo 1 se describía la arquitectura de los puertos de entrada y salida (E/S) dela familia de Microcontroladores 5 1. En este capítulo, se retorna el tema para recordar,ampliar y mostrar una serie de ejercicios de iniciación en el control de los puertos quevan a permitir comunicarse con una buena parte de los periféricos comerciales y con losque el usuario diseñe.

Los cuatro puertos del 8052/805 1 son bidireccionales, es decir, permiten la lectura yescritura en el periférico correspondiente. Las salidas están «latcheadas», lo que posibi-lita mantener el dato indefinidamente hasta que sobreescriba la información original. Otracaracterística importante es que los puertos pueden ser utilizados como buses de direc-ciones, datos y control, por lo que en estas circunstancias se dice que el microcontrola-dor trabaja como microprocesador. A esta característica se refiere el siguiente apartado.

8.2. EL MICROCONTROLADOR COMO MICROPROCESADOR

Los drivers de salida de los Puertos PO y P2 y los bz@rs de entrada del Puerto PO se pue-den utilizar para acceder a la memoria externa del sistema. En estas condiciones, el PuertoPO se configura como salida del byte bajo del bus de direcciones (AO a A7), de un busque consta de 16 bits (capacidad de direccionamiento 64K), multiplexado en el tiempocomo bus de datos bidireccional (DO a D7). El Puerto P2 se configura como salida delbyte alto del bus de direcciones (A8 a A 15). De esta manera el microcontrolador se con-figura a modo de CPU de un sistema externo con unas capacidades de expansión defi-nibles por el usuario. Naturalmente, en estas condiciones, le queda como puerto íntegro,para el-control de periféricos, el Puerto PI y parte del Puerto P3, puesto que hay señalesque se utilizan para el control del sistema (bus de control).

En la Figura 8.1 se muestran los cronogramas correspondientes a un ciclo de lecturaen la memoria externa de programas y a un ciclo de lectura y escritura en la memoriade datos externa. También, se hace referencia a los parámetros representados en la Figu-

130

Page 132: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de Entrada/Salida

FORMA DEONDA

ENTRADADEBE SER PUEDE CAMBIAR PUEDE CAMBIAR SE PERMITE

MANTENIDA D E H A L DELAH CUALQUIER CAMBIO No SE APLICA

SALIDA SERA MANTENIDA ESTARA CAMBIANDO ESTARA CAMBIANDODE H A L

“%YT%c? *LA LINEA DEL

DELAHCENTRO ESTA EN

DESCONOCIDO ALTA IMPEDANCIA

I-TLHLL-I

- TAVIV Ai

PUERTO 2Ix AB-Al5 X A8-Al5

.A) Ciclo de Lectura en Memoria de Programas Externa

ALE Y \ /

PSEN

PUERTO 0

'UERTO 2

B) Ciclo de Lectura en Memoria de Datos Externa

ALE \, /-TLHLL-

PSEN . /- TLLWL-------TwLwH-

- ,WR

PUERTO 0

PUERTO 2/x P2.0-P2.i' 0 A8-Al5 DESDE EL DPH x A8-Al5 DESDE EL PCH

C) Ciclo de Escritura en Memoria -de Datos Externa

Figura 8.1.

Page 133: LE002-Introduccion a Los Microcontroladores

1 3 2 Introducción a los Microcontrokrdores

ra 8.1 y en el Cuadro 8.1, sin hacer mención a los tiempos reales que dependen del tipode microcontrolador y de la frecuencia de trabajo. Para una mayor información solicitea su vendedor las hojas de características en donde se establecen los tiempos de los pa-rámetros según condiciones y las características eléctricas de las señales.

Para un mejor entendimiento y seguimiento de los cronogramas anteriores, en laFigura 8.2 se dibuja un esquema en el que aparece el microcontrolador comandando unamemoria RAM (43256C) y una memoria EPROM (2764).

Cuadro 8.1.

TLHLL

TAVLL

ALE @se Width (Anchura pulso ALE)

Addmss Valid to ALE Low (Dirección válida a ALE baio)

I TLLAX’ ~I

) Addmss Hold After ALE Low (Dirección mantenida después de ALE bajo) 1I

TLLIV

TLLPL

TPLPH

TPLIV

ALE Low to Valid Instruction In (ALE bajo a Instr. In. valida)

ALE Low to PSEN Low (ALE bajo a PSEN bajo)

PSEN Pulse Width (Anchura pulso PSEN)

PSEN Low to Valid Instruction In (PSEN baio a Instr. In. válida)

I TPXIX 1 Input Instr . Hold After PSEN (Mantenimiento de Instr . In. después de PSEN) 1

TPXIZ

TPXAV

TAVIV

T P L A Z

Input Instr . Float After PSEN (Bus f lotante de Instr . In. después de PSEN)

PSEN to Address Valid / PSEN a Dirección válidaAddres to Valid Instr. In. / Dirección a Instr. In. válida

PSEN Low to Addres Float / PSEN baio a bus dirección f lotante

I TRLRH 1 RD Pulse Width / Anchura del pulso de lectura II

T W L W H 1 WR Pulse Widht / Anchura del pulso de escritura 1TRLDV

TRHDXTRHDZ

RD Low to Valid Data In / RD bajo a Dato In. válido

Data Hold After RD / Mantenimiento de Dato después de RD

Data Ploat After RD / Bus Datos f lotante después de RD

TLLDV ALE Low to Valid Data In / ALE bajo a Dato In. válido ITAVDV Addres to Valid Data In / Dirección a Dato In. válido

- -TLLWL ALE Low to RD or WR Low / ALE bajo a RD o WR bajo

- -TAVWL Addres to I%D or WR Low / Dirección a RD o WR bajo

TQVWXI

Data Valid to WR Transition / Dato válido a transición WR

TQVWH ( Data Valid to WR High / Dato válido a WR alto I1 TWHQX 1 Data Hold After WR (Mantenimiento de Dato después de WR)

TRLAZ RD Low to Addres Float (RD bajo a bus f lotante Dirección)-~ - -

TWHLH RD or WR High to ALE Hight (RD o WR alto a ALE alto)

Page 134: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de Entrada/Salida 133

Antes de continuar con la lectura de este apartado, conviene, repasar los tres prime-ros apartados del Capítulo 2.

El acceso a la memoria externa puede hacerse o bien a la memoria de programas o ala memoria de datos y esta última puede ser para leer o escribir un dato. Estos tres as-pectos se van a desarrollar someramente a continuación.

8.2.1. Ciclo de lectura en la memoria externa de programas

Para acceder a la memoria externa de progamas utiliza la señal PSEN (Program StoreEnable) como señal de autorización de lectura (Figuras 8.1 (A) y 8.2).

La señal ALE «latchea» el byte bajo del bus de direcciones en el primer estado (ciclode reloj), y así permite direccionar, durante todo el ciclo de instrucción, mientras esasmismas líneas son utilizadas, en el resto del ciclo de instrucción, como bus de datos. Enla Figura 8.2 se puede observar que la lectura en la memoria de programas se realizacuando PSEN está a nivel bajo y las líneas A13, AI4 y Ai5 se encuentran a nivel alto,siendo el resto de las líneas de dirección las que establecen la posmem exacta del byte deinstrucción u operando que ha de ser leído.

Para el acceso a la memoria de programas, utiliza los 16 bits del bus de direcciones,su posición en el mapa general de memoria es la que se encuentra al final de los 64 Kby-tes, puesto que A 15=A 14=A 13= 1, concretamente comienza en la posmen ll 10.0000.0000.0000=EOOOH y termina en la posmen FFFFH, en total 8 Kbytes.

Si el usuario escribe en el Puerto PO durante el ciclo de búsqueda en la memoria ex-terna, el byte de código puede ser modificado. Se recomienda no escribir en el Puerto POsi es utilizado para leer en la memoria de programa externa.

A la memoria de programas externa se accede bajo dos condiciones:

1 . Cuando la sena1 ¡% es activa, caso de la Figura 8.2.2 . Cuando el contador de programa (PC) contiene un número más grande que

OFFFH para el 8051 o 1FFFH para el 8052.

En las versiones de microcontroladores sin ROM (8031 y 8032) tienen la señal decontrol EA puesta a nivel bajo permanentemente para leer el programa en la memoriaexterna.

8.2.2. Ciclo de lectura en la memoria externa de datos

Para el acceso a la memoria externa de datos utiliza la señal de control RD (función al-ternativa de P3.7) y puede utilizar los 16 bits de dirección (MOVX A,@DPTR) o bien 8bits (MOVX A,@Ri) (véase Figura 8.1(B)).

En un ciclo de lectura el byte de entrada es aceptado en el Puerto PO justo antes de-que la señal de control RD que autoriza la lectura sea desactivada.

Page 135: LE002-Introduccion a Los Microcontroladores
Page 136: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de Entrada/Salida 135

8.2.3. Ciclo de escritura en la memoria externa de datos

Para la escritura en la memoria externa de datos utiliza la señal de control WR (funciónalternativa P3.6) y puede utilizar los 16 bits de dirección (MOV @DPTR,A) o bien 8 bits(MOV @Ri,A) (Figura 8.1 .(C)). t-NY.

waw En el ciclo de escritura, el byte de dato debe permanecer sobre el Puerto PO antes ydespués de que la señal de control de escritura WR sea desactivada.

En general, tanto para la lectura como para la escritura, cuando una dirección de 16bits es utilizada (MOVX @DPTR), el byte alto de dirección sale por el Puerto P2, dondepermanecerá mientras dura el ciclo de lectura o escritura.

Si se utiliza una dirección de 8 bits (MOVX @Ri), el contenido del Puerto P2 en elSFR permanece sobre los pines de P2 durante todo el ciclo de acceso a la memoria ex-terna.

Esto facilita la paginación (véase Apartado 2.3).No se insiste más en este tema por considerar que la potencia de los 8052/8051 se

produce cuando trabajan como microcomputadores monopastilla (microcontrolador) ya ese aspecto se refieren los ejercicios que se muestran a continuación. No obstante nose debe desdeñar la importancia que puede tener en algunas aplicaciones especiales comomicroprocesador.

Resumiendo, si se utilizan los puertos para comandar unidades de memoria externao interface, los puertos quedarán en esta situación:

PO: Bus de direcciones de menos peso (AO a A7) y bus de datos (DO a D7) multiple-xados en el tiempo.

Pl: Puerto de E/S.P2: Bus de direcciones de más peso (A8 a A 15).P3: Bus de control.

8.3. OPERACION DE ESCRITURA EN LOS PUERTOSDE LOS MICROCONTROLADORES 8052/8051

La operación de escritura, utilizando los puertos del 8052/805 1, puede ser realizada porcualquiera de ellos; no obstante, el Puerto PO es el que presenta una mayor cargabilidad,permitiendo comandar ocho cargas TTL-LS, mientras que los otros tres permiten cuatrocargas TTL-LS.

En la ejecución de una instrucción que cambia el valor del lutch del puerto, el nuevovalor llega al Zutch durante el estado 6, fase 2 del final del ciclo de instrucción, segúnindica la Figura 8.3.

Antes de comenzar con el estudio y comprobación de los puertos de E/S, se dibuja elinterface para la conexión de los puertos a los dispositivos de salida, que en este casopueden servir unos simples LED (Figura 8.4).

Para comandar cargas de mayor consumo energético, como relés, se recomienda uti-lizar, entre el puerto y la carga, drivers no inversores, como el ULN 2003, e inversores,como el ULN 2803, que tienen una cargabilidad de 500 mA y soportan hasta 50 v.

Como ya se sabe, el 8052/805 1 presenta dos señales de control, una para ejecutar la

Page 137: LE002-Introduccion a Los Microcontroladores
Page 138: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de Entrada/Salida 1 3 7

Este,ejercicio muestra cómo se deben tratar los cuatro puertos cuando se tiene que en-viar una información de salida del microcontrolador. Se refiere, comúnmente, a.unaoperación de escritura. El ejercicio se realiza con el Puerto PO, pero el usuario puedecomprobar que el programa funcionará igual si sustituye el Puerto PO por el Pl, P2 o P3.

El programa muestra distintas formas de escritura en el puerto. Así:

?? En las primeras instrucciones, mediante una máscara, se ponen todos los bits delPuerto PO a CERO.

??Se incrementa el acumulador y se transfiere al Puerto PO, por lo que el contenidode dicho puerto se incrementará, así hasta contar hasta 5.

??Direccionando directamente los bits 0 y 2 del Puerto PO, que en la última opera-ción habían quedado a UNO, se ponen a CERO. En este instante todos los bits dePO están a CERO.

??Se pone a UNO el bit 7 de PO y con direccionamiento inmediato se carga PO con55H.

?? Finalmente, se complementa (operación lógica NOT) la información de PO cam-biando los UNOS por CEROS y los CEROS por UNOS.

Se observará que entre las distintas operaciones se ha incluido un lazo de retardo parapoder seguir la evolución de la secuencia anteriormente descrita. La rutina de retardo esla misma que la estudiada en el Ejercicio 7.1, con la diferencia del valor asignado al re-gistro RO y, también, que dicha rutina se ubica a partir de la posmen 0300H para queno coincida con el programa principal.

Page 139: LE002-Introduccion a Los Microcontroladores
Page 140: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de Entrada/Salida 139

DJNZ Rl, SAL1 ; Lo mismo que la instrucción an-; terior, pero por cada lazo de R 1,; ejecuta FFH veces el lazo R2

DJNZ RO, SALO ; Lo mismo que las instrucciones; anteriores, pero por cada lazo de

; RO, ejecuta 85H lazos de Rl y; 85H*lTH lazos de RO

NOPRETEND

Se considera que la carga y ejecucion del programa ya han sido comentados suticien-temente en ejercicios anteriores.

8.4. OPERACION DE LECTURA EN LOS PUERTOSDE LOS MICROCONTROLADORES 8052/8051

La operación de lectura o de adquisición de datos no representa ningún tipo de pro-blema; solamente se deberá cambiar el orden de los operandos en la instrucción respectoa la operación de escritura.

Para la operación de lectura, el formato de la instrucción más habitual es el siguiente:

MOV<DATO>, PX ; <DATO> t- PX

Se presentan dos circuitos de interface muy sencillos para poder introducir datos alos puertos del microcontrolador, cuando éste trabaja en modo lectura. El primero, muysimple, es útil para la comprobación de la mayor parte de los ejercicios que aquí se ex-ponen; no obstante, tiene el problema de los «rebotes» (Figura 8.5). El segundo circuitoestá pensado especialmente para los ejercicios que se refieren al tema de las interrupcio-nes. Este circuito es, hasta cierto punto, inmune a los rebotes de los contactos (Figura 8.6).

Si tiene un entrenador de circuitos lógicos podrá comprobar sin ningún reparo todoslos ejercicios que se hacen y se proponen en este libro.

Este ejercicio trata de mostrar cómo se manipula el Puerto PO para utilizarlo como en-trada y el Pl como salida, de tal forma que la información leída por el Puerto PO y des-pués de ser tratada adecuadamente sale escrita por P 1. En este caso cqncreto, la infor-mación leída por PO sale intacta por el Puerto PI.

En la Figura 8.7 se muestra la disposición de ambos puertos.

Page 141: LE002-Introduccion a Los Microcontroladores

1 4 0 Introducción a los Microcontroladores

V

a052/51

al pin del

Figura 8.5.

0 220 R

--

Figura 8.6.

Page 142: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de Entrada/Salida 141

8052/51

-+ P0.7 P1.7 -+

- - P 1 . 6 -W

-+ P0.1

C.P.U.

- P1.5 -+

P1.4 -+ A

P1.3 --+ k.

A- P1.2 ---+

P1.l ---+

P1.O --+

?? Flujograma ?? Listado

1 ) Escrib; Pl

Figura 8.7.

>>Z 0200,0204LOC OBJ LINE LABEL SOURCE CODE0200 E580 0001 B0200 MOV A,!?O0202 F590 0002 MOV P1,A0204 4100 0003 AJMP 0200

DISASSEMBLY COMPLETED>

Page 143: LE002-Introduccion a Los Microcontroladores

1 4 2 Introducción a los Microcontroladores

Este programa se ha escrito y ensamblado directamente con el ensamblador directodel emulador. Para este tipo de programas tan sencillos resulta más útil este ensambladorelemental, como se explicó en el Capítulo 5. A partir de este momento, casi todos losprogramas que se utilicen para demostrar algún aspecto o característica de un subsistemadel microcontrolador serán realizados con el ensamblador directo. No obstante, en al-gunas ocasiones, por la complejidad del programa o por la necesidad de adjuntar comen-tarios al margen de las instrucciones, se utilizará el macroensamblador.

En la línea 0001, se lee la información del Puerto PO (entrada) y se carga en el acu-mulador.

En la línea 0002, se carga el Puerto PI (salida) con el contenido del acumulador.En la línea 0003, se hace un salto incondicional al comienzo del programa para efec-

tuar una nueva lectura.

Este ejercicio muestra cómo se puede realizar la operación de lectura y escritura porel mismo Puerto PO. Para ello dividimos el Puerto PO en dos nibbles, el nibble bajo (PO.0a P0.3) leerá la información que sacará por el nibble alto (PO.4 a P0.7) (Figura 8.8).

8052/5 11

f- P0.7

f- P0.6

f- P0.5

f- P0.4 C.P.U.

I--+ P0.2

Figura 8.8.

Page 144: LE002-Introduccion a Los Microcontroladores

Control de ueriféricos. Puertos de Entrada/Salida 1 4 3

?? Flujograma ?? Listado

I N T E R C A M B I O d e :

>>Z 0200,0205LOC OBJ LINE LABEL SOURCE CODE0200 E580 0001 B0200 MOV A,PO0202 c4 0002 SWAP A0203 F580 0003 MOV PO,A0205 4100 0004 AJMP 0200

DISASSEMBLY COMPLETED>

n i b b l e a l t o P O

En la línea 1, se hace la lectura del Puerto PO y su contenido pasa al acumulador.En la línea 2, se intercambian los nibbles.En la línea 3, el contenido del acumulador se carga en el Puerto PO, con lo que la

lectura del nibble bajo pasará al nivel alto del Puerto PO, y viceversa.La línea 4 es un salto incondicional al comienzo del programa.

El siguiente ejercicio muestra cómo realizar el control de un proceso industrial muy sim-ple, utilizando la CPU del microcontrolador para la toma de decisiones, la memoria paraalmacenar las instrucciones del programa y los datos, y los puertos, uno (de lectura) paracomprobar la situación de los sensores y el otro (de escritura) para enviar la señal a losactuadores.

Se ha escogido este ejercicio resuelto en el libro Sistemas Microprocesadores, deJ. M. Angula Usategui, por considerar que es conocido entre muchos profesionales y en-tusiastas de los «micros», y es interesante ver su resolución desde la perspectiva de losMicrocontroladores 8052/805 1.

?? Proceso

Se trata de controlar el nivel de líquido de un depósito, utilizando tres sondas detectorasde niveles A, B y C, y dos bombas BI y B2 (Figura 8.9).

Page 145: LE002-Introduccion a Los Microcontroladores

Introducción a los Microcontroladores

AlarmaRebose

2!2

Lleno

3Vacio

Bomba 2

ADAS p Bomba ’

Figura 8.9.

He aquí una descripción del proceso, desde el punto de vista de su relación con elmundo exterior, según los tres tipos de señales principales:

?? Entrada de información: SENSORES (sondas).??Actuación sobre los elementos finales: ACTUADORES.?? Señalización del proceso: INDICADORES.

1. SONDAS (entradas)

La sonda A señala el nivel mínimo de agua. Por debajo de este nivel, se indicará «VA-CIO» en el cuadro de INDICADORES.

La sonda B señala el nivel óptimo y cuando se alcance se indicará «LLENO».La sonda C señala el nivel peligroso e indica «REBOSE».Las sondas serán leídas por el Microcontrolador a través del Puerto PO.

PO.0 t- APO.1 +-BPO.2 f- c

Page 146: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de Entrada/Salida 145

2. ACTUADORES (salidas)

Cuando ninguna de las sondas está mojada, se entiende que el depósito está vacío y losactuadores activarán las dos bombas B 1 y B2 (P 1 .O y P 1.1).

Cuando el nivel del líquido toque la sonda B, se desactivará la bomba B2 (P 1 .O t 0),quedando la bomba B 1 activada en modo mantenimiento.

Si el nivel del líquido moja la sonda C (rebose), se desactivará la bomba Bl, que-dando las dos bombas, de momento, fuera de servicio.

3. INDICADORES (salidas)

La señalización utiliza el Puerto PI.

PI .2 t- VACIOP1.3 t-LLENOP1.4 t- REBOSE

Y cuando se produce un fallo (mal funcionamiento) en las sondas de entrada -porejemplo, que la sonda B (PO.l) se active cuando la A (PO.O), por debajo de la B, no loestá- se excita en el cuadro de indicadores una señal de ALARMA.

P1.5 + ALARMA

La Figura 8.10 muestra la disposición de los actuadores, indicadores y sondas.

MICROCONTROLADOR 6052 /5 1

P0.7

P0.6

P0.5

P0.4

P0.3

C P0.2

I - lB P0.1

C.P.U.

- P1.7

~ P1.6

ALARMA~ P1.5 --+

REBOSEP1.4 L-b

LLENO____ P1.3 ---+

VACIO~ P1.2 --+

B2P1. l ---+

Bl----1 P1.O -+

Figura 8.10.

Page 147: LE002-Introduccion a Los Microcontroladores

1 4 6 Introducción a /os Microcontroladores

?? Flujograma ?? Listado

TITLECOMMENT

DPTR <--- 0300H

CODEORIGIN.BYTEORIGIN

CONTROLDEPROCESOS. DEPOSITO.ASM* Controla elnivelde líquido de un de-

pós i to .12.3.91

*

ON

0300H07H,03H,20H,09H,20H,2OH,2OH,l8H0200H

V MOV DPTR,#0300H ; Inicializa puntero de TABLAm á s c a r a : SALO:MOV A, PO ; LEE puerto PO

A.AND.07H ANL A, #07H ; EnmascaraMOVC A, @A+DPTR

4; Direcciona y captura dato

I MOV Pl, A ; A c t ú aJMP SALO

A <---(@A+DPTR) E N D

4

Pl <--- (A)

S A L O :

Nota: A la directiva *BYTE se hace referencia en el Apartado 5.2.2.

Como se puede observar, el programa utiliza el direccionamiento indexado para ac-ceder a la información escrita previamente en la tabla de datos, situada en las posicionesde memoria comprendidas entre la 0300H y 0307H.

? El primer bloque del flujograma inicializa el puntero DPTR en la dirección de co-mienzo de la tabla de datos.

??El segundo bloque lee la información de las sondas a través del Puerto PO.?? El tercer bloque enmascara la información del Puerto PO, dejando solamente los

tres primeros bits útiles de PO.?? El cuarto bloque direcciona a la posición de memoria de la tabla relativa al con-

tenido de las sondas (ACC) más (suma aritmética) el puntero DPTR. El contenidode esa posición de memoria direccionada pasa al acumulador.

Es decir, si el estado de las sondas señala A=l, B=l y C=O (03H), se realiza el si-guiente acceso a la tabla de datos:

A t- @A + DPTR, es decir, A c- (03H + 0300H)

El contenido de la posmem 0303H para el acumulador.

Page 148: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de EntradalSalida 1 4 7

?? El quinto bloque escribe la información leída de la tabla en el Puerto Pl.

El contenido de la tabla, según las directrices dictadas por el algoritmo de control dela planta, es el siguiente:

0300HI07HI0301H 03H

-k-i0302H 20H

0303H 1 09H 10304H 20H

- t - - - i0305H 20H

; Activa Bl - B2 y señala VACIO

; Activa Bl - B2 y no señala VACIO; Señala ALARMA

; Desactiva B2 y señala LLENO; Señala ALARMA; Señala ALARMA

; Señala ALARMA; Señala LLENO y REBOSE

Este algoritmo, que ha sido tratado en el Capítulo 3, Apartado 3.7.3: «Memoria deprogramas para el tratamiento de tablas», resulta interesante por la simplicidad y la fa-cilidad con que permite modificar las configuraciones de salida, con sólo cambiar la ta-bla sin modificar el programa.

A continuación se muestra el programa desensamblado y la tabla de datos, estandoel programa listo para su ejecución:

>z 0200, 020ALOC OBJ LINE0200 900300 00010203 E580 .00020205 5407 00030207 93 00040208 F590 0005020A 4103 0006

DISASSEMBLY COMPLETED

LABEL

B0203

SOURCE CODEMOV DPTR,#0300MOV A,POANL A,#O7MOVC A,@A+DPTRMOV P1,AAJMP 0203

>M 0300,0307OO 0102 03 04 05 06 07 08 09 OAOBOCODOEOF ASCII-CODE

0300 0703200920202018 . . . .>

Con este ejercicio se da fin al capítulo correspondiente al tratamiento de los puertosde los Microcontroladores 8052/805 1.

Page 149: LE002-Introduccion a Los Microcontroladores

148148 lntrhtroducción a los Microcontroladores

1. iQué quiere decir, en el texto, que las sali-das están «latcheadas»? Proponer otra pa-labra o expresión que indique esta acción.

2. iCuándo se dice que el microcontroladoractúa como microprocesador?

3. ¿Qué misión tiene el Puerto PO eti el mi-crocontrolador cuando éste actúa comomicroprocesador?

4. Analizar «paso a paso» los tres cronogra-mas que muestran el funcionamiento delmicrocontrolador como microprocesadoren las funciones de:- Lectura en la memoria de programas

externa.- Lectura en la memoria de datos ex-

terna.

- Escritura en la memoria de datos ex-terna.

5. Explicar el comportamiento de los Puertosde entrada y sal ida, desde el punto de vistadel «hardware» en los Ejercicios:

8.1. El Puerto PO en modo salida.8.2. Operación de lectura en el Puerto PO

y de escritura en el Puerto PI.8.3. Lectura y escritura en el mismo Puerto

PO. Se sugiere analizar con detalle laFigura 1.4.

6. Realizar el mismo Ejercicio 8.4 con los mi-croprocesadores que conozca de 8 bits, ycompare en cuanto al tamaño del pro-grama, claridad, facilidad, etc.

1. Diseñar varios sistemas (basta con dibujarel esquema) utilizando el microcontrola-dor como microprocesador, según las si-guientes necesidades:- Aumentando la capacidad de la

EPROM en 8 K.- Aumentando la capacidad de la RAM

en 2 K.- Aumentando la capacidad de entradas

y salidas con el conexionado de unaunidad de E/S.Nota: Se puede usar una VIA 6522 o elIP 8255 u otra conocida.

2. Realizar un programa en el microcontro-lador que simule realmente a un decodifi-cador de 3 a 8 líneas. Puede utilizarse comoentrada el Puerto PO y como salida elPuerto PI.

3. Siguiendo la línea del ejercicio anterior, di-señar con el microcontrolador un:- Codificador de 8 a 3 líneas.- Multiplexor.

Figura 8.11.

Page 150: LE002-Introduccion a Los Microcontroladores

Control de periféricos. Puertos de Entrada/Salida 1 4 9

- Demultiplexor.- Convert idor de códigos.- Etcétera.

4. Diseñar un comparador de 8 bits (byte),siendo uno de los bytes el A, que accederáal microcontrolador por el Puerto PO, elotro byte el B, por el Puerto PI, y el resul-tado se obtendrá por el Puerto P2, según elesquema de la Figura 8.12.

Figura 8.12.

5. El siguiente ejercicio se ha seleccionado deEl libro de los cerebros electrónicos, deWalter R. Fuchs (Ediciones Omega), y diceasí:

El dueño de «La Posada del Venado»está muy orgulloso de la fama que haadquirido su establecimiento en toda la co-marca, y cuida por sí mismo de que sola-mente frecuenten su local los clientes quele merezcan confianza. Dejemos que sea élmismo quien nos lo expl ique:

«Siempre sigo inflexiblemente una sen-cil la regla: no quiero tener l íos con la pol i-cía. Por esto no admito a ningún borrachoen mi local. Personalmente cuido que noentre nadie “con alguna copa de más”: deotro modo, podrIan surgir dif icultades conlas autoridades. Mis clientes pueden tenerhambre o sed; desde luego, mejor que ten-gan ambas cosas a la vez. Pero si alguienbebe sin comer nada, yo no tengo en elloningún inconveniente, lo mismo que sicome sin beber. Pero en cualquier caso,deben pagar la cuenta. En esto soy inflexi-

ble: yo no debo nada a nadie, y no me gustallevar cuentas de lo que me deben. Sola-mente “fto” a los octogenarios acompaña-dos de sus abuelos».

Después de analizarlo detenidamente yde quitarle la parte graciosa y los aspectosintrascendentes se puede resolver como uncircuito combinacional, y hago una suge-rencia para facilitar la resolución. Obsér-vense las siguientes frases que le dan las va-riables de entrada y salida:

«... personalmente cuido de que no en-tre nadie “con alguna copa de más”».VARIABLE KA»;

«... mis clientes pueden tener hambre osed».HAMBRE - VARIABLE «HaSED ---, VARIABLE «SN

También pueden englobarse, en estecaso, como una sola variable.CONSUMICION -, VARIABLE «C»;

«... deben pagar la cuenta».DINERO - VARIABLE «D»;

La salida, que será el permiso o no deentrada a la posada, será:PERMISO -3 VARIABLE «P»

En la Figura 8.13 se muestra el esquemadel montaje.

C P 0 7

c P06

c P05

C P 0 . 4

D -C P 0 3

3 WC P 0 . 2

H -c P O . l

A -c P O O

PI.7

P1.6 t

P15

P14

PI 3l-P1.2

P1.l

P10 SAL

Figura 8.13.

Realizar el programa correspondiente ycomprobar su funcionamiento.

Page 151: LE002-Introduccion a Los Microcontroladores

CAPITULO

Temporizadores y contadores

9.1. INTRODUCCION

El Microcontrolador 8052 tiene tres registros temporizadores-contadores denominadosTimer 0 (TO), Timer 1 (Tl) y Timer 2 (T2). El Microcontrolador 805 1 tiene sólo dos ti-mers, el TO y el Tl, de las mismas características que los del 8052. Por esta razón, todolo que se diga con relación a los Timers 0 y I del 8052 es valido para los del 8051 yviceversa.

Los tres timers pueden ser configurados para que operen como temporizadores o comocontadores.

Cuando el dispositivo opera como timer, el registro contador se incrementa cadaciclo máquina (la temporización se produce contando los ciclos máquina hasta «sobre-pasar» el valor prefijado). Así, se puede considerar que funciona como un contador deciclos máquina, de tal forma que, como a cada ciclo máquina le corresponden 12 perío-dos de reloj, la razón de contaje es 1/12 de la frecuencia del oscilador.

En la función counter (contador), el registro es incrementado en respuesta a la tran-sición del nivel alto de tensión al nivel bajo (flanco descendente) de la señal externa apli-cada al (pin 14) para el contador TO, al (pin 15) para Tl y al (pin 1) para el T2, este úl-timo pertenece al 8052. La entrada externa es muestreada durante el estado 5 de la fase 2(S5P2) de cada ciclo máquina. El contador se incrementa cuando la muestra señala unnivel alto de la señal de entrada en un ciclo y un nivel bajo en el ciclo siguiente. El nuevovalor de contaje aparece en el registro correspondiente durante el estado 3 de la fase 1(S3Pl) del siguiente ciclo en que la transición ha sido detectada. Puesto que necesita dosciclos máquina (24 ciclos de reloj) para reconocer la transición del flanco descendente,la máxima razón de contaje es 1/24 de la frecuencia del oscilador.

Mientras que el Timer 0 y I tienen cuatro modos de operación, el Timer 2 tiene tresmodos, como se va a ver en el Apartado 9.2 y 9.3.

Antes de pasar al estudio de los distintos tipos timers, de su configuración y de rea-lizar algunos ejercicios de aplicación, se va a analizar el circuito general que representa.a los timers presentes en los Microcontroladores 8052/805 1.

150

Page 152: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 151

Nota: Las señales cuya simbología en los esquemas termina con la palabra gin, se refieren a patillas delmicrocontrolador, que deben activarse con señales externas.

En la Figura 9.1. se observan cuatro bloques fundamentales que de izquierda a de-recha se van a exponer a continuación:

- En la parte superior izquierda aparece un dispositivo conmutador que seleccionala forma de efectuar el «contaje», bien mediante el oscilador reloj del microcontrolador,o con un reloj externo. La primera opción establece aplicaciones generales de tipo timer(temporizador) y la segunda de tipo counter (contador).

- En la parte inferior izquierda se encuentra un circuito lógico que acciona el inte-rruptor (símil eléctrico) que permite el paso de los impulsos que incrementan los regis-tros de contaje. Este circuito permite dos opciones: bien se acciona el interruptor por soft(instrucción del programa), para ello GATE=O y TR 1 = 1, que son bits imagen pertene-cientes a unos registros que se estudiarán, o bien se acciona por hard con la señal denivel alto, aplicada al pin INT 1, estando GATE= 1 y TR 1 = 1.

- En la parte central se encuentran los registros de contaje, que pueden ser de 8, 13o 16 bits, según el modo de trabajo (TL 1, TH 1).

- A la derecha del registro de contaje se encuentra el biestable representativo del bitde j’ag o bandera, TFl, que señala el overflow o sobrepasamiento del registro contador.

- Finalmente, si la interrupción correspondiente está habilitada, se produciría unainterrupción, tema que será tratado en el próximo capítulo.

9.2. TIMER 0 (TO) Y TIMER 1 (Tl)La función timer (temporizador) o counter (contador) es seleccionada por el bit de con-trol c/T perteneciente al registro TMOD (Timer/Counter Mode Control Register), de 10sSFR (Special Function Register). El registro TMOD no es direccionable «bit a bit» (Cua-dro 9.1).

Estos dos timer/counters tienen cuatro modos de operación, como se indica a conti-nuación, que se seleccionan mediante los pares de bit (MO,Ml) en el registro TMOD.

‘ Se recomienda cuando se estudie este Cuadro 9.1 tener presente la Figura 9.1.

Figura 9.1.

Page 153: LE002-Introduccion a Los Microcontroladores

1 5 2 Introducción a los Microcontroladores

Cuadro 9.1.

T M O D

b be bs b4 bj b bi boGATE 1 C/T 1 Ml 1 MO 11 CATE 1 C/=i ( Ml 1 MO-Timer 1-b-Timer 0A

BIT I NOMBREYCOMENTARIO

bo - b,

b

II I MODO j MI 1 MO 1 MODO DE OPERACION l

0 0 0 Temporizador de 13 bits1 0 1 Temporizador/Contador de 16 bits2 1 0 Temporizador/Contador de 8 bits con Auto-recarga

1 1 Contadores múltiples especílicos

Selecciona temporizador o contador- Si C/T = 0 entonces temporiza con los pulsos del reloj interno.- Si C/i’ = 1 entonces cuenta los pulsos que llegan por TO @in 14).

bl

bq - bs -be Y b7

r--1: ”GATE Hahhta la entrada exterior iN% (pin 12).- Si GATE = 1 entonces habilita INTO si TRO = I (control por hardware).- Si GATE = 0 entonces deshabilita INTO y depende exclusivamente de TRO (control por software).(TRO es un bit del Reg. TCON y se activa o desactiva por software). ,

Configuración del Timer 1 .Igual que para el Timer 0, sustituyendo:

TO porTI (pin 15)INTO por INTl (pin 13)TRO porTR1

A continuación veremos los cuatro modos de operación.

9.2.1. Modo 0: Temporizador/contador de 13 bits

Poniendo los bits MO = Ml = 0 en el registro TMOD se selecciona el modo de operacióncero (Modo 0). El timer/counter 0 y el 1 se ven como indica la Figura 9.2.

Como se puede ver en la Figura 9.2, los Timers 0 y 1 están configurados con re-gistros de 13 bits, repartiéndose 8 bits para TH0 o TH 1 y los 5 bits de menor peso paraTL0 o TL1 (los 3 bits de más peso de TL0 o TL1 son indeterminados y deben ser igno-rados). Cuando la cuenta, en el registro de contaje, da una vuelta pasando desde todos«unos» a todos «ceros», activa el flag de interrupción TFx (x=0 si se trata del Timer 0 yx= 1 si se trata del Timer I), siehdo éste un bit que pertenece al registro TCON (Timer/Counter Control Register), registro que es direccionable «bit a bit» (véase Cuadro 9.2).

Para una mejor comprensión de este cuadro es conveniente tener presente la Figu-ra 9.2.

Page 154: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores

INTERRUPT

Figura 9.2.

Cuadro 9.2.

T C O N

b b6 bs bd b3 b2. b, bo

TFI 1 TRI ( TFO ( TRO (( IEl ( ITI ( IEO ( ITO

I BIT I NOMBREYCOMENTARIO I

bo/ I

cl:I T O Control interrupción externa 0 (INTO).- Si ITO = 0 entonces es activa por nivel bajo.- Si ITO = 1 entonces es activa DOI flanco de baiada.6

I lm : Flag de interrupción para la interrupción externa 0 (INTO)- Se pone a uno cuando se detecta interrupción externa.- Se repone automáticamente al atender la interrupción por flanco.

m : Control interropción externa 1 (INTI).

1-I : F/ug de interrupción para la interrupción externa 1 (INTI).

LJ: ”TRO Hablhta temporizador/contador 0.- Si TRO = 1 entonces habilita temporizador/contador 0.- Si TRO = 0 entonces deshabilita temporizador/contador 0.

cl:T F O Flag de Overtlow (sobrepasamiento) del Timer 0 .Se repone automáticamente al atender la interrupción.

nI: ”T R I HalAita temporizador/contador 1 ,

b, m : Flag de Overflow (sobrepasamiento) del Timer 1 .

Page 155: LE002-Introduccion a Los Microcontroladores

1 5 4 Introducción a los Microcontroladores

La autorización de cuenta de impulsos, procedentes de la señal de reloj (actuandocomo temporizador) o bien del pin 15 (Tl) (actuando como contador), se produce en elTimer 1, cuando TR 1 = 1 y las entradas GATE=O o INT 1= 1.

Una aplicación podría ser, para medir el ancho de pulsos a través del pin INT 1. Así,mientras INTl = 1 los impulsos internos o externos de contaje llegarían al contadorTH 1 -TL1 . Cuando INT 1 = 0 el valor del contador permanecerá inamovible, puesto queno llegarían impulsos de contaje. Para, ello es necesario que GATE = 1 y TR 1 = 1.

El Modo 0 de operación es el mismo para el Timer I que para el Timer 0, sustitu-yendo los bits o señales con subíndice 1 por subíndice 0. Así, el registro TMOD está di-vidido en dos partes iguales para el control del Timer 1 y para el Timer 0, lo mismo su-cede con el registro de control TCON. El lector puede imaginarse la Figura 9.2 para elTimer 0, claro está, sustituyendo los subíndices.

Este ejercicio prueba el funcionamiento del Timer 0 en Modo 0 con la puesta en marchapor «software».

El bit 0 del Puerto PO (PO.O), parpadeará en función de los valores de carga del Timer 0(THO+TLO).

?? Flujogramas

(yi---)+

T M O D <-- OO

bit PO.0 <-- 1

4

R U T I N A :

TEMPO

4

bit PO. <--0

4TLO=THO=O

JI

TCON <-- 1 O H

4

R U T I N A :

TEMPO

Page 156: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 1 5 5

El flujograma del programa principal muestra:

Bloque 1: Se programa el registro TMOD.

GATE :control por soft

se trata de un Timer

b7 b6 b5 b4 b3 b2 bl b0

TMOD - - - - 0 0 0 0 = OOHI

Bloque 2: Se activa el bit 0 del Puerto 0.

Bloque 3: Se llama a la rutina Timer O> para temporizar.

Bloque 4: Se desactiva el bit 0 del Puerto 0.

Bloque 5: Se llama a la rutina Timer 0 y se salta incondicionalmente al bloque 2.

El flujograma de la rutina Timer 0 muestra:

Bloque 1: Carga de los registros del Timer 0 a sus valores mínimos corresponden conla máxima temporización. Se entiende que el j?ag TFO se activará (0 b 1) cuando lacuenta rebase:

xxxo 0000 0000 0000

XXXl 1111 1111 1111 = 1FFFH

Se sugiere al lector que calcule la temporización considerando lo indicado en elApartado 9.1, es decir, se incrementa a la razón de l/ 12 de la frecuencia de reloj. Pode-mos adelantar que la temporización es muy pequeña.

Page 157: LE002-Introduccion a Los Microcontroladores

156 ’ I n t r o d u c c i ó n a los Microcont ro lac fores

Bloque 2: Se programa el registro TCON.

b7 b0

TCON - - ? - - - - = 1OH

FLAG TFOsobrepasamiento

SET Timer 0habilita el contaje l-

Bloque 3: Pregunta si se ha producido el sobrepasamiento. Si es así, se sale de la ru-tina Timer 0 .

??Listado>Z 0200 0213LOC OBJ0200 7589000203 75FOOl0206 85F0800209 7100020B 75FOOO020E 8510800211 71000213 4103

DISASSEMBLYCOMPLETED>Z 0300 030FLOC OBJ0300 758AOO0303 758CO00306 7588100309 E588030B 5420030D 60FA030F 22

DISASSEMBLYCOMPLETED>

LINE LABEL SOURCE CODE0001 MOV TMOD,#OO0002 B0203 MOV B, #Ol0003 MOV PO,B0004 ACALL 03000005 MOV B, #OO0006 MOV PO,B0007 ACALL 03000008 AJMP 0203

LINE LABEL SOURCE0001 MOV0002 MOV0003 MOV0004 B0309 MOV0005 ANL0006 JZ0007 RET

CODETLO,#OOTHO,#OOTCON,#lOA,TCONA, #200309

9.2.2. Modo 1: Temporizador/contador de 16 bits

El funcionamiento de los Timers en Modo 1 es el mismo que en Modo 0, exceptuandoque los registros de contaje son de 16 bits (TLO+THO) o (TLl+THl).

Page 158: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 1 5 7

Este ejercicio es similar al anterior en cuanto a los resultados, pues el bit 0 del Puerto PO(PO.0) va a parpadear al ritmo del Timer 1, pero éste, al estar programado en Modo 1,utiliza los 16 bits de TH1 +TLl; si se carga con OOOOH, la temporización es más larga,,por lo que el ritmo del parpadeo será menor. Recuérdese que elflag de sobrepasamiento,al utilizar el Timer 1, es TFl (bit 7 del registro TCON) y que éste se produce al pasarTH 1 -TL1 de FFFFH a OOOOH, es decir, después de contar 65.536 ciclos máquina.

El arranque del Timer I se produce, como en el ejercicio anterior, al poner a «l» elbit 6 del registro TCON.

?? Configuración de TMOD

b7 b0

TMOD 0 1 0 1 0 1 1 1 - 1 - 1 - 1 - 1 =lOH

GATE:controlpor softP-

I I P. I I I I

es un

?? Configuración de TCON

b7

i

Ml=O y MO=1Timer 1 en Modo 1TH1 + TL1 = 16 bits

b0

TCON ? 1 - - - - - _ = 40H

SET Timer 1habilita el contaje

FLAG TFl- se pone a «l» al producirse el sobre-

pasamiento

Page 159: LE002-Introduccion a Los Microcontroladores

1 5 8 Introducción a los Microcontroladores

?? Flujogramas

Ib i t P O . 0 <--0

tiR U T I N A :

T E M P O

?? Listados

>Z020002OBLOC OBJ0200 7589100203 D2800205 71000207 C2800209 7100020B 4103

DISASSEMBLYCOMPLETED

>ZO300 030FLOC OBJ0300 758BOO0303 758DOO0306 7588400309 E588030B 5480030D 60FA030F 22

DISASSEMBLYCOMPLETED

LINE000100020003000400050006

LINE0001000200030004000500060007

TL1 =THi =0

TCON <-- 40H

LABEL

B0203

LABEL

B0309

SOURCE CODEMOV TMOD,#lOSETB PO.0ACALL 0300CLR PO.0ACALL 0300AJMP 0203

SOURCE CODEMOV TLl,#OOMOV THl,#OOMOV TCON,#40MOV A,TCONANL A, #80JZ 0309

Page 160: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 1 5 9

Este ejercicio permite ver la interacción de la temporización de los Timers fisicos con latemporización, ya estudiada en el Capítulo 7 -Ejercicio 7.5-, por software; de estamanera se pueden conseguir tiempos más largos.

El algoritmo de funcionamiento de este programa es el siguiente: por cada unidad dedecremento del registro RO se establece un ciclo de contaje del Timer 1, de tal forma quesi se carga el registro RO con OFH. y el Timer I con OOOOH., se establecen 16 períodoscompletos de ciclos de contaje del Timer I más los ciclos máquina que implica la eje-cución del programa, es decir, aproximadamente:

16 x 65536 ciclos máquina

Los registros TMOD y TCON están configurados como en el ejercicio anterior, porlo que no se hace ningún comentario.

?? Flujogramas

clTMOD <-- IOH

bit PO.0 <-- 1

TH1 =TLi =0

TCON <-- 4 0 H

DEC RO

RO c-- OFH

f3R E T

Page 161: LE002-Introduccion a Los Microcontroladores

160 Introducción Q los Microcontroladores

?? Listados

>ZOZOO OZODLOC OBJ0200 780F0202 7589100205 D2800207 71000209 C280020B 7100020D 4105

>2 03000313LOC OBJ0300 758BOO0303 758DOO0306 7588400309 E588030B 5480030D 60FA030F D8EF0311 780F0313 22

DISASSEMBLYCOMPLETED

LINE0001000200030004000500060007

LINE000100020003000400050006000700080009

LABEL

B0205

LABELB0300

B0309

SOURCE CODEMOV RO,#OFMOV TMOD,#lOSETB PO.0ACALL 0300CLR PO.0ACALL 0300AJMP 0205

SOURCEMOVMOVMOVMOVANLJZDJNZMOVRET

CODETLl,#OOTHl,#OOTCON,#40A,TCONA,#800309RO,0300RO,#OF

Este ejercicio es similar al anterior, salvo en la forma de arrancar el Timer 1. En el ejer-cicio anterior, el arranque se hacía vía soft al poner el bit 6 (TR.1) del registro TCON a«l», estando el bit 7 (GATE) del registro TMOD a «OH, como se puede observar en laFigura 9.2. Entonces el interruptor CONTROL se cerraba y llegaban los impulsos a losregistros de contaje. Ahora la nueva configuración parte de que GATE= 1 y TR 1 = 1, perono es suficiente para arrancar el Timer 1; se necesita aplicar al pin 13 (INT 1) un nivel detensión alto desde el exterior.

Page 162: LE002-Introduccion a Los Microcontroladores

?? Configuración de TMOD

Temporizadores y contadores 1 6 1

b7 bO

TMOD 1 0 0 - - - - = 90Ht I

GATE:control -

por hard

C/T:

Mi=0 y MO=1- Timer 1 en Modo 1

TH1 + TL1 = 16 bits

es un Timer

Las conexiones extras externas para el funcionamiento de este ejercicio se indican enla Figura 9.3.

+5v INTl0 0 0 .c 13

Figura 9.3.

Page 163: LE002-Introduccion a Los Microcontroladores

162 Introducción a los Microcontroladores

?? Flujogramas

clTMOD <-- 90H

r-lb i t P O . 0 < - - 1

f5F I N

TH1 =TLl = 0

clTCON É-- 40H

??Listados ~

>Z 0200020BLOC OBJ LINE LABEL SOURCE CODE0200 758990 0001 MOV TMOD,#900203 780F 0002 MOV RO,#OF0205 C280 0003 CLR PO.00207 7100 0004 ACALL 03000209 D280 0005 SETB PO.0020B 00 0006 NOP

DISASSEMBLYCOMPLETED

Page 164: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 1 6 3

,TINTERRUPT

>20300 0311LOC OBJ LINE0300 758BOO 00010303 758DOO 00020306 758840 00030309 E588 0004030B 5480 0005030D 60FA 0006030F D8EF 00070311 22 0008

DISASSEMBLYCOMPLETED

LABEL SOURCEB0300 MOV

MOVMOV

B0309 MOVANLJZDJNZRET

CODETLl,#OOTHl,#OOTCON,#40A,TCONA, #800309RO,0300

9.2.3. Modo 2: Temporizador/contador de 8 bits con auto-recarga

Puesto que el funcionamiento es el mismo para el Timer 1 que para el Timer 0, los co-mentarios se hacen para el Timer 1.

El Modo 2 configura el registro Timer como un contador de 8 bits (TLl) con recargaautomática (Figura 9.4).

El sobrepasamiento de TL1 no sólo activa el bit deflug (TFl), sino que también «re-carga» TL1 con el contenido de TH 1, el cual es inicializado por software. La recargade TL1 por TH1 es una copia, por lo que TH1 mantiene el dato inicial con que fuecargado.

Figura 9.4.

Este ejercicio trata de observar el funcionamiento del Timer I como contador de impul-sos externos, autorrecargándose al producirse el sobrepasamiento con el dato situado enTH 1, como muestra la arquitectura del Timer 1 en Modo 2 en la Figura 9.4.

Page 165: LE002-Introduccion a Los Microcontroladores

164 Introducción a los Microcontroladores

A cada flanco descendente de los impulsos de contaje exteriores, aplicados al pin 15(T 1) el registro TL1 se incrementa en una unidad a partir del valor inicial de carga, queen este caso es FOH. Cuando este valor alcanza FFH, el impulso siguiente, que produceel sobrepasamiento, activa el j7ag TF 1 y recarga automáticamente el contenido del regis-tro THl, que en el ejercicio contiene el mismo valor inicial de TLl, es decir, FOH.

Para que puedan llegar los impulsos de contaje a TL1 , es preciso que CONTROL= 1;para ello se necesita que GATE= 1 (por soft) y que el pin 13 (INT 1) esté a nivel alto.

En la Figura 9.5 se puede ver la conexión precisa del microcontrolador con las se-riales exteriores para el buen funcionamiento de este ejercicio.

L-J

8052/51+5vMe 39. b PO.O

R 438 + P0.137 + P0.2

Eb P0.3+ P0.4

34 b PB.5-- -z- 33 b PO.ô

0 -0 0 Tl c 15 32 + P0.7

GATE:control

por hard

c/T:es CONTADORt

Figura 9.5.

L-

?? Configuración de TMOD

6b7 b0

TMOD 1 1 1 1 1 - - - . - = EOHI I

MI=1 y MO=0Timer 1 en Modo 2TL1 (contador) y TH1 (cargador)

Page 166: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 1 6 5

?? Configuración de TCON

b7 b0

l-CON ? 1 - - - - - - = 40H

SET Timer 1habilita el contaje

FLAG TFl- se pone a «l» al producirse el sobre-

pasamiento

?? FlujogramaTl -MODOBREC.

TMOD <-- EOH

TL1 =THl =FOH

4TCON <-- 40H

PO <--- TL1

?? Listado

>202000211LOC OBJ LINE LABEL0200 758930 00010203 758BF0 00020206 758DF0 00030209 758840 000402oc 858B80 0005 B020C020F 41oc 00060211 00 0007

DISASSEMBLYCOMPLETED>

SOURCE CODEMOV TMOD,#EOMOV TLl,#FOMOV Thl,#FOMOV TCON,#40MOV PO,TLlAJMP 02ocNOP

Page 167: LE002-Introduccion a Los Microcontroladores

166 Introducción a los Microcontroladores

9.2.4. Modo 3: Varios contadores

El Modo 3 está previsto para aquellas aplicaciones que requieran un temporizador ocontador extra. Así, TL0 y TH0 son dos contadores de 8 bits independientes (Figu-ra 9.6). En este modo el Timer 1 cede elflas de tratamiento de interrupciones (TFl) y elbit de control (TRl).

El registro TL0 (8 bits) utiliza la lógica de control que ha sido común hasta ahora(GATE, pin INTO y TRO), permitiendo la operación de temporización con los ciclos má-quina del microcontrolador y el contaje de pulsos a través del pin 14 (TO).

El registro TH0 (8 bits) sólo permite la temporización con la señal de 1/12 de la fre-cuencia del oscilador, utilizando como bit de CONTROL (TRl ) y como flag (TFl); am-bas señales, como ha quedado dicho, pertenecen al Timer 1.

En realidad, el Modo 3, en cuanto a su funcionamiento, es similar a los modos an-teriores, con la salvedad de que sólo cuenta con registros de 8 bits, produciéndose el so-brepasamiento al incrementarse en una unidad del valor FFH. ’

De esta manera, el Microcontrolador 8052 puede tener hasta cuatro temporizadores/contadores, y el 805 1 hasta tres; es decir, cuando el Timer 0 está en Modo 3, el Timer 1puede ser utilizado, por ejemplo, como generador de base de tiempos en las comunica-ciones serie 0 en cualquier aplicación que no necesite interrupciones. La cuestión es, enel caso del Microcontrolador 8052, que el Timer 2 ha sido diseñado especialmente parautilizarlo como generador de frecuencia en las comunicaciones del puerto serie. No obs-tante, es la imaginación y creatividad del usuario la que va a determinar lo que es útilpara su aplicación.

1/= f0SC OíI T H 08 BITS TFl INTERRUPT

TRl/ ‘ONTRoL

Figura 9.6.

Page 168: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 167

Se trata de mostrar el funcionamiento del Timer 0 en Modo 3, como contador. Los im-pulsos de contaje exteriores se aplican al pin 14 (TO). La acción sobre el interruptorCONTROL es exterior a través del pin 12 (INTO). El valor inicial de TL0 es FOH y elestado de la cuenta se presenta al exterior por el Puerto PO. Cuando se produce el sobre-pasamiento, se carga en el Puerto P0,55H.

PO 4- 55H

La Figura 9.7 muestra el conexionado externo para la comprobación de este ejer-cicio.

?? Flujograma

TMOD <-- 07H

TCON <-- 10H

I TLO’<-- F O

PO <-- 55H

Page 169: LE002-Introduccion a Los Microcontroladores

1 6 8 Introducción a los Microcontroladores

??Listado>Z 02000216LOC OBJ0200 7589070203 7588100206 758AF00209 858A8002oc E588020E 54200210 60F70012 74550214 F5800216 00

DISASSEMBLYCOMPLETED

LINE LABEL SOURCE0001 MOV0002 MOV0003 MOV0004 B0209 MOV0005 MOV0006 ANL0007 JZ0008 MOV0009 MOV0010 NOP

CODETMOD,#07TCON, # 10TLO,#FOPO,TLOA,TCONA, #200209A,#55PO,A

0 0 0 TO

8052/5112

393037

35"343332

PO.OP0.1P0.2P0.3P0.4P0.5P0.6P0.7

Figura 9.7

9.3. EL TIMER 2

El Microcontrolador 8052, con relación al 805 1, presenta un temporizador/contador ex-tra de 16 bits (el timer 2). Al igual que los Timen 0 y 1, puede operar como temporiza-dor o como contador de eventos. Dentro de los registros especiales (SFR),el registro(T2CON) puede configurarlo como Timer (C/n=O) o como Counter (C/T2=1) conta-dor de flancos descendentes, introduciendo los mismos a través del pin 1 (T2) delMicrocontrolador 8052.

El registro T2CON (Timer/Counter 2 Control Register) es un registro direccionable«bit a bit», y su estructura aparece en el Cuadro 9.3.

Es conveniente seguir el Cuadro 9.3 teniendo presentes las Figuras 9.8 y 9.10.

Page 170: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 1 6 9

Cuadro 9.3.

TXON

b, be b5 b4 h b b, boTF2 1 EXR ( RCLK ( TCLK 11 EXEN ( TR2 1 C/B ( CP/m [

BIT

bo

NOMBRE Y COMENTARIO

m] : Bit de Captura/Recatga-

- Si CP/RLZ = 1 y EXENZ = 1 habilita captura en TLEX (pin 2). (véase Figura 9-g).-- Si CP/RLZ = 0 y EXENZ = 1 habilita autorrecarga por:

- Sobrepasamiento del Timer 2.- Por flanco descendente en REX (véase Figura 9.10).

- Si RCLK = TCLK = l se ignora este bit y el Timer 2 es forzado a la autorrecarga en el sobrepasamiento.

bl m-I:C/T2 Btt selector del Temporizador/Contador.- Si C/i? = 0 actúa como temporizador.- Si C/T2 = 1 actúa como contador.

j--J:T R 2 Btt de Arranque/Parada del Timer 2.

- Si TR2 = 1 arranque del Timer 2.- Si TR2 = 0 parada del Timer 2.

b3 11:EXENL Btt de habilitación del flanco descendente e&ior (TZEX).- Si EXEN = 1 habilita señal TZEX. Captura o autorrecarga si procede.- Si EXENZ = 0 deshabilita pin TZEX.

EI.TCLK . Btt comunicaciones reloj transmisor (véase Cuadro 12.2).

EI.R C L K Btt comunicaciones reloj receptor (véase Cuadro 12.2).

IEl.EXR . Flug de activación de setial por el pin TZEX (EXENZ=I).Vectoriza interrupción si esta habilitada.

b, EI:TF2 Flag de sobrepasamiento en el Timer 2.

No se activa cuando RCLK = TCLK = 1 .Vectoriza interrupción si esta habilitada.

El Timo 2 tiene tres modos de operación, pero sólo los dos primeros serán tra-tados en este capítulo.

??Modo captura.??Modo autorrecarga.??Modo generador señal comunicación serie.

Siendo la selección establecida según los valores asignados, según el Cuadro 9.4, a losbits correspondientes del registro T2CON.

Page 171: LE002-Introduccion a Los Microcontroladores

170 Introducción a los Microcontroladores

Cuadro 9.4.

RCLK + TCLK

001

CP/RL2

01X

TR2 MODO

1 16 bits con autorrecarga1 16 bits con captura1 Generador de baudios

.

X I X 0 1 Off

9.3.1. El Timer 2 en modo captura

Hay dos opciones que son seleccionadas por el bit 3 (EXEN2) del registro de controlT2CON. Si EXEN2=0, el Timer 2 puede trabajar como temporizador o contador, po-niendo el flag TF2 a nivel alto cuando se produce el sobrepasamiento y generando inte-rrupción si ésta está habilitada. Si EXEN2= 1, el Timer 2 puede hacer lo señalado ante-riormente, pero además, cuando se produce una transición en la entrada externa T2EXen «flanco descendente», el valor que en ese instante está presente en los registros decontaje TL2 y TH2 es capturado dentro de los registros de captura RCAP2L y RCAP2H,respectivamente (RCAP2L y RCAP2H ocupan las posiciones de memoria CAH y CBHen el área de los SFR). Además, el flanco descendente en el pin T2EX, siendo EXEN2= 1,pone a «l» el j7ag de EXF2 y puede generar una interrupción, si está habilitada (Figu-ra 9.8).

DETECTOR

TRANSICION

EXEN

Figura 9.8.

Page 172: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 171

Este ejercicio tiene la misma estructura que el Ejercicio 9.2, por lo que se remite al lectora revisar dicho ejercicio.

Observar cómo al modificar el contenido de los registros TL2+TH2 se pueden con-seguir distintas temporízaciones. La máxima se consigue con OOOOH.

El registro T2CON queda configurado de la siguiente forma:

b7 b0

T2CON ? 0 0 0 0 1 0 0 = 04H

FLAG TF2

Page 173: LE002-Introduccion a Los Microcontroladores

1 7 2 Introducción a los Microcontroladores

?? Flujogramas

R U T I N A :

TEMPOS

4

b i t P O . 0 <-- 0

4

R U T I N A :

T E M P 0 3

?? Listados

>z 02000208LOC OBJ0200 D2800202 71000204 C2800206 71000208 4100

DISASSEMBLYCOMPLETED>>Z 0300030FLOC OBJ0300 75cc990303 75CD990306 75C8040309 E5C8030B 5480030D 60FA030F 22

DISASSEMBLYCOMPLETED

T2CON <-- 04H

LINE00010002000300040005

LINE0001000200030004000500060007

LABELB0200

LABEL

B0309

SOURCESETBACALLCLRACALLAJMP

SOURCEMOVMOVMOVMOVANLJZRET

CODEPO.00300PO.003000200

CODETL2,#99TH2,#99TLCON,#04A,TZCONA, #800309

Page 174: LE002-Introduccion a Los Microcontroladores

Temporizadores y c o n t a d o r e s 1 7 3

Con este ejercicio se pretenden alcanzar los siguientes objetivos:

??Observar el Timer 2 como contador de 16 bits, con las mismas características queel Timer 0 o el Timer 1.

??Observar cómo se produce el modo captura.?? Integrar en el mismo ejercicio el Timer I y el Timer 2. El primero como tempo-

rizador y el segundo como contador.

A continuación se pasa a comentar los bloques de flujograma.- En el primer bloque se configura el Timer 2 como contador y en modo «cap-

tura».

b7 b0

T2CON ? ? 0 0 I 1 1 1 1 = OFH

CONTROL DE FLANCO

FLAG TF2 -CONTROL

TR2= 1I,/”

#JJ’

es un CONTADORc/T2=1

CONFIGURADO COMO CAPTURAPOR TRANSICION NEGATIVA -

EN EL PIN 2 (T2EX)

- En el segundo se cargan los registros de contaje TL2 y TH2.- El contenido de TL2 se saca por el Puerto PO, por lo que los impulsos de contaje

del byte bajo van apareciendo en el Puerto PO.- Pregunta si ha llegado algún flanco descendente en el pin T2EX. Si es así, y puesto

que está programado en modo captura, pasa el contenido de TL2 y TH2 aRCAP2L y RCAP2H, respectivamente.

- El contenido de RCAP2L se saca por el Puerto PO, pero se intercambian los nib-bles (SWAP A). El tiempo de visualización del contenido de CAP2L está tempo-rizado por el Timer I en la rutina situada en la posmem 0300, tal como se vio enel Ejercicio 9.2 (Temporización Timer I en Modo I (16 bits)).

Nota: Se observa que, mientras se produce la temporización, los impulsos de contaje que llegan alTimer 2 son evaluados, como corresponde a un proceso en tiempo real.

Page 175: LE002-Introduccion a Los Microcontroladores

174 Introducción a los Microcontroladores

?? FlujogramaTP-CAPTURA

TPCON <-- OFH

1A <-- (CAPPL)

R U T I N A :

Tl-MODOI-16b

4

flag EXFP <-- 0

PO <--- 55H

Page 176: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 1 7 5

- Al regresar de la rutina de temporización se borra el flag EXF2, correspondientea la transición negativa.

- Se pregunta por el flag de sobrepasamiento y si se activa quiere decir que elTimer 2 ha sobrepasado el valor FFFFH.

- En estas condiciones el programa termina visualizando por el Pdrto PO el dato55H.

En la Figura 9.9 se muestra el esquema del montaje exterior:

+5v

38 PO.OPO.l

37 P0.236 P0.335R P0.434 P0.533 P0.632 P0.7

Figura 9.9.

?? Listado

>Z 0200 0224LOC OBJ0200 75C80F0203 75CDFF0206 75CCF00209 85CC8002oc E5C8020E 54400210 60090212 E5CA0214 c40215 F5800217 71000219 C2CE021B E5C8021D 5480021F 60E80221 7580550224 00

LINE LABEL SOURCE0001 MOV0002 MOV0003 MOV0004 B0209 MOV0005 MOV0006 ANL0007 JZ0008 MOV0009 SWAP0010 MOV0011 ACALL0012 CLR0013 B021B MOV0014 ANL0015 JZ0 0 1 6 MOV0017 NOP

TZCON,#OFTH2,#FFTL2,#FOPO,TLLA,TZCONA,#4O021BA,CAP2LAPO,A0300.EXF2A,T2CONA, #800209PO,++55

Page 177: LE002-Introduccion a Los Microcontroladores

1 7 6 Introducción a los Microcontroladores

>Z 03000316LOC OBJ LINE0300 7850 00010302 758910 00020305 758BOO 00030308 758DO0 0004030B 758840 0005030E E588 00060310 5480 00070312 60FA 00080314 D8EF 00090316 22 0010

DISASSEMBLYCOMPLETED

LABEL SOURCEMOVMOV

B0305 MOVMOVMOV

B030E MOVANLJZDJNZRET

CODERO,#50TMOD,#lOTLl,#OOTHl,#OOTCON,#40A,TCONA, #80030ERO,0305

En la línea 02 19 aparece el nemónico CLR .EXF2, para borrar elflug producido porla transición descendente del pin T2EX. También puede ponerse a «O» con el nemónicoCLR T2CON.6.

9.3.2. Timer 2 en modo autorrecarga

En el modo autorrecarga hay, de nuevo, dos opciones, que se seleccionan con el bitEXEN del registro T2CON. Si EXEN2=0, entonces, cuando en el Timer 2 se produceel «sobrepasamiento», no sólo pone a «l» el flug TF2, sino que «recarga» los valores delos registros RCAP2L y RCAP2H, cargados inicialmente por software, en los registros decontaje TL2 y TH2, respectivamente. Si EXEN2= 1, entonces el Timer 2 no sólo hace loanterior, sino que al producirse un flanco descendente, en la entrada externa T2EX, dis-para la recarga y activa elJ!ug EXF2 (Figura 9.10).

pin TZ

I DETECTOR I I I "b-=y I l'-'l F- DE

1L3its)J-l

\ INTERRUPTTRANSICION ,- TIMER 2

-

pin TZEX EXFZ

CONTROL

EXEN

Figura 9.10.

Page 178: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 177

En este ejercicio se configura el Timer 2 como contador de los impulsos que le lleganexteriormente por el pin 1 (T2), al producirse el sobrepasamiento, los registros TH2 yTL2 se recargan con los valores situados en RCAP2H y RCAP2L.

En este caso el registro T2CON queda configurado de la siguiente forma:

T2CON ? -

‘iF*- AL

CONTROLCONTADORHABILITADO

?? Flujograma

A la vista del flujograma y del listado del programa de esteejercicio se observa:

- Cómo al producirse la entrada de los impulsos de contajepor el pin 1 (T2), se va incrementando el contenido deTH2+TL2.

- Se visualiza por el PO el contenido de TL2, hasta que re-basa el límite FFFFH (sobrepasamiento).

- Al producirse el sobrepasamiento se recarga el valor de losregistros RCAP2H + RCAP2L, y...- RCAP2L se visualiza en el Puerto PO.- Cada vez que un nuevo ciclo de contaje se inicia se bo-

rra el j7ug TF2 con la penúltima instrucción.

Page 179: LE002-Introduccion a Los Microcontroladores

178 Introducción a los Microcontroludores

En la Figura 9.10 se muestra el montaje simplificado para ejecutar el ejercicio.

3938373635343332

Figura 9.10.

?? Listado

>2 0200 0219LOC OBJ LINE LABEL SOURCE0200' 75C806 0001 MOV0203 75CAF5 0002 MOV0206 75CBFF 0003 MOV0209 75CCF0 0004 MOVozoc 75CDFF 0005 MOV020F 85CC80 0006 B020F MOV0212 D3 0007 SETB0213 82CF 0008 ANL0215 50F8 0009 JNC0217 C2CF 0010 CLR0219 410F 0011 AJMP

DISASSEMBLYCOMPLETED 4

T2CON,#06CAPZL,#FSCAPZH,#FFTL2,#FOTH2,#FFPO,TLLCC,.TF2020F.TF2020F

La diferencia con el ejercicio anterior consiste en que, en este caso, la «recarga» tambiénse produce al generar un flanco descendente en el pin 2 (T2EX) del microcontrolador.Los impulsos de contaje entran por el pin 1 (T2).

El esquema del montaje es el mismo que el de la Figura 9.9 del Ejercicio 9.8. En aquél

Page 180: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores i79

se producía una captura al flanco descendente en el pin T2EX, mientras que en éste seproduce una recarga.

El registro T2CON debe configurarse de la siguiente forma:

b7 b0

TLCON ? ? 0 0 I 1 1 1 01 I ’

Flag de flancoRECARGA al sobre-pasamiento

4 Flag de Overflow -i TIMER 2=CONTADORCONTROL Flanco CONTROL contador

exterior activado habilitado

?? Flujograma

TZCON <-- OEH

TL2 <-- FOHTH2 <-- FFH

p’--

PO <-- (TL2)

/ 1’ EXFP<--0 1

.1

TF2=1NO‘-SI

TF2 <-- 0

Page 181: LE002-Introduccion a Los Microcontroladores

1 8 0 Introducción a los Microcontroladores

El primer rombo es para preguntar si se ha producido un flanco descendente en elpin T2EX. En caso afirmativo se produce la recarga.

El segundo rombo sustituye al salto incondicional.En el caso de que sea negativa la pregunta del primer rombo se realiza una segunda

pregunta, jse ha producido «sobrepasamiento» en los registros de contaje (TL2 + TH2)?En caso afirmativo se observa la recarga, en caso negativo seguirá la secuencia normalde contaje.

?? Listado

>z 0200 0222LOC OBJ0200 75C80F0203 75CAF50206 75CBFF0209 75CCF002oc 75CDFF020F 85CC800212 D30213 82CE0215 50040217 CLCE0219 40F4021B D3021c 82CF021E 50EF0220 C2CF0222 410F

DISASSEMBLYCOMPLETED

LINE0001000200030004000500060007000800090010001100120013001400150016

LABEL

B020F

B021B

SOURCE- CODEMOV TLCON,#OEMOV CAPZL,#F5MOV CAPZH,#FFMOV TL2,#FOMOV TH2,#FFMOV PO,TLZSETB CANL C,.EXFZJNC 021BCLR .EXFZJC 020FSETB CANL C,.TFZJNC 020FCLR .TF2AJMP 020F

Si en el Ejercicio 9.10 se sustituye la instrucción:

0 2 0 0 MOV T2CON, #OEH por MOV T2CON, #OFH

se producirá la captura al producirse un flanco descendente por la línea T2EX (pin 2).Si también se sustituye la instrucción:

020F MOV PO, TL2 por MOV PO, CAP2L

Page 182: LE002-Introduccion a Los Microcontroladores

Temporizadores y contadores 181

se observará, al pulsar sucesivamente, y por este orden:

flanco descendente

T 2i-1 impulso de contaje

que el incremento producido en TH2+TL2 «pasa» al registro RCAP2H+RCAP2L vi-sualizándose, por medio de la instrucción situada en la posmem 020FH, en el Puerto PO.

Sin más, concluye este capítulo dedicado a los Timers para pasar al capítulo dedi-cado a las interrupciones.

Si la frecuencia del microcontrolador es de6 MHz, jcuál es la razón de contaje (incre-mento contadorjciclos de reloj) cuando ac-túa en modo TEMPORIZADOR?Justificar por que la máxima razón de con-taje es 1124 de la frecuencia de reloj cuandoel microcontrolador trabaja en modoCONTADOR.

3. Explicar cómo se seleccionan los cuatromodos de operación de los Timen 0 y 1.

4. En los timen, iqué se entiende por controlpor «software» y control por «hardware» ycómo se seleccionan?

5. iCual es el nombre del bit de control quehabilita o no la cuenta en los registros decontaje? iQué posición ocupa en el regis-tro? iCuál es el nombre de dicho registro?

iCuál es la diferencia de los timen traba-jando en Modo 0 y en Modo I?

iCuándo se activan losflags TFx en los ti-mers? -&Sucede lo mismo cuando trabajacomo contador que cuando lo hace comotemporizador?

¿Qué significa que el timer trabaja con au-torrecarga? Poner un ejemplo en donde sevea la necesidad de trabajar con esta mo-dalidad (véase Figura 9.4).

Programar el registro T2CON para que ac-túe de la siguiente forma:

- Modo de captura.- Por transición de una señal externa.- Trabajando como TEMPORIZADOR.

Page 183: LE002-Introduccion a Los Microcontroladores

1 8 2 Introducción a los Microcontroladores.roladores

Obtener, utilizando el Timer 0 o 1, una se-ñal cuadrada de frecuencia 50 Hz por elpin 1 del Puerto PI. Iniciar la secuencia conun pulsador el «arranque» y con otro (si sequiere se puede utilizar el mismo) la «pa-rada» (véase Ejercicio 9.2).

Imaginar que se tiene un barco de paseoque sólo admite a 30 personas. Diseñar conel microcontrolador un sistema que de-tecte el paso de la persona número 20 y se-ñalar por el pin PO.0 la alarma de «preve-nido» y por el pin PO.1 el paso de lapersona número 30 que indique wom-pleto». El sistema debe «recargarse» (ini-cialización) para comenzar un nuevo ciclo(véase Ejercicio 9.5).

Obtener por el pin PO.0 una señal que tengael s iguiente per íodo.

-b=T=20 20 40 20 60 20 t(microseg.)

4. Como complemento del Ejercicio 2 de esteapartado de «Ejercicios propuestos» se su-giere añadir al programa lo siguiente:

En cualquier momento que se accione unpulsador exterior deberá aparecer en el

Puerto PI el número de personas que en esemomento están a bordo.

Nota: Si se trabaja con un 8052, revisarel Ejercicio 9.8, y si se utiliza un 805 1, crearuna rutina que lea el registro contador yvisualice su contenido en el Puerto PI.

Realizar el programa que resuelva el si-guiente automatismo:

Al accionar el pulsador (MARCHA)debe ponerse en intermitencia la señal enel pin PO.0 del microcontrolador durante10 segundos como aviso de la puesta enmarcha de un complejo de máquinas; al li-nalizar este intervalo de tiempo, el pin PO.0se desactivará y se activará el pin PO. 1, quelas pone en marcha. Un segundo pulsador(PARO) desactiva, en cualquier instante, elcomplejo de máquinas.

Continuando con el planteamiento reali-zado en el Ejercicio 4 de los Ejercicios pro-puestos del Capítulo 8, se modif icarán losresultados de salida:

Si A>B, por el pin P2.0 se emitirá unaseñal de frecuencia 1 Hz en la que la du-ración del pulso « 1 » sea cinco veces menorque la duración del pulso «O».

Si A=B, por el pin P2.1 se obtendrá unaseñal a nivel alto permanentemente.

Si A<B, se activarán las salidas P2.0 yP2.1 de manera alternativa con la frecuen-cia de 0,5 Hz.

Page 184: LE002-Introduccion a Los Microcontroladores

CAPITULO

Interrupciones

10.1. INTRODUCCION

La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos,se puede establecer de dos maneras fundamentales:

a) Consultas (polling): Se comprueban cíclicamente, mediante instrucciones del pro-grama, los registros de estado de los dispositivos de E/S. Unas líneas de dialogo (hands-hake) establecen el protocolo de comunicación.

Así, en la Figura 10.1 se muestra cómo se establece el diálogo entre un sistema mi-crocomputador o microcontrolador y dos periféricos, mediante el procedimiento de con-sultas. Primero el programa pregunta si el bit 0 del Puerto 0 está activo, esto quiere decirque el Periférico 1 solicita la atención del sistema, en ese caso la CPU atiende al Periféri-co 1. Cuando el proceso termina, el programa activa el bit .I del Puerto 0 para indicar, alPeriférico 1, que el proceso ha finalizado. El mismo procedimiento para el Periférico 2.

Las desventajas de este método son:

- En cada ciclo de programa, éste tiene que interrogar los bits de consulta.- Al periférico se le atiende después de realizar la consulta y no cuando solicita la

intervención de la CPU.

b) Interrupción: Servicio directo entre periféricos y CPU, siempre que &.ta desee es-tablecer el diálogo. Este servicio tiene la característica de la inmediatez, pueden elimi-narse total o parcialmente los ciclos de consulta y permite inhibir la interrupción cuandose considera que es «inoportuna» y, por tanto, perjudicial para la marcha del proceso.

Esta forma de trabajo es inherente al control de procesos en tiempo real.Así, en la Figura 10.2, cuando el Periférico 1 requiere la intervención del sistema mi-

crocomputador o microcontrolador activa la interrupción INTl, si esta habilitada el sis-tema atenderá la petición y ejecutará el proceso correspondiente de atención en laRUTINA 1. El mismo procedimiento se establecería para el Periférico 2.

La importancia de las interrupciones nace de la necesidad de ejecutar un subprocesoen el instante preciso, y por tanto se considera su intervención «urgente». Cuando ter-

Page 185: LE002-Introduccion a Los Microcontroladores

Introducción a los Microcontroladores

P R O G R A M A

r - - + - - l b i t 0 ~~0.0 1

b i t 1 .“.’ kPERIFERICO 1

PUERTO 0

/ D A T O S E/S

b i t 0 yp1.0 =

bit 1 “” =PERIFERICO 2

PUERTO 1

j D A T O S E/S

Figura 10.1.

mina la ejecución de este subproceso, la CPU vuelve al programa principal, continuando,su tarea cíclica justo donde la dejó.

Una interrupción puede ser iniciada:

?? Por un periférico o ente externo ajeno al microprocesador o microcontrolador através de los pines específicos del mismo. En estas condiciones la interrupción esexterna.

?? Dentro del propio chip microprocesador o microcontrolador. Entonces la inte-rrupción es interna.

Toda interrupción aceptada conduce a la ejecución de un subprograma específico cuyadirección de comienzo se indica en las posiciones de memoria de una tabla, que recibeel nombre de tabla de vectorización.

10.2. ASPECTOS GENERALES Y TIPOS DE INTERRUPCIONES

El Microcontrolador 8052 tiene seis interrupciones, mientras que el 805 1 tiene cinco. LaFigura 10.3 muestra los distintos tipos de interrupciones, señalando la falta de losflagsque activan TF2 y EXF2 en el 805 1 por no tener implementado el Timer 2.

Page 186: LE002-Introduccion a Los Microcontroladores

I n t e r r u p c i o n e s 1 8 5

PROGRAMA INT le INTERRUPCION

----_-- - - -_

RUTINA 1

PERIFERICO 1

PUERTO 0

i DATOS E/S

RUTINA 2 PUERTO 1

; DATOS E/S

Figura 10.2.

TFOb

TFl

';2~'Solo 8052) + 1

Figura 10.3.

Page 187: LE002-Introduccion a Los Microcontroladores

1 8 6 fntroducción a los Microcontroladores

Los bits deflag que generan las interrupciones pueden ser cancelados, en algunas in-terrupciones, por hard, cuando éstas son vectorizadas; no obstante, todos los bits puedencancelarse por soft escribiendo ceros en el registro correspondiente.

Nota: Dada la cantidad de nemónicos para identificar fuentes de interrupción y los J2ags que se acti-van en los microcontroladores, se propone referenciar, siempre que sea posible, el elemento que generala interrupción por su nombre completo. De todas formas, la Tabla 10.1 trata de aclarar esta dificultad.

Cada una de estas fuentes de interrupción pueden ser individualmente habilitadas oinhabilitadas poniendo a «uno» o a «cero» el bit correspondiente del registro IE (Me-rrupt Enable Register) perteneciente a SFR (Special Function Register) (Cuadro 10.1).

Cuadro 10.1

I IE (INTERRUPT ENABLE REGISTER) I

b b6EA 1 X

b5 b4 b3 bz bl boET2 ) ES 11 ET1 1 EXI 1 ET0 1 EX0

BIT I NOMBRE Y COMENTARIO

pg: - ‘= ‘.SI EX0 I hablhta mtermpción externa INTO- Si EX0 = 0 inhabilita.

b, 9 ET01 IETOI’ ~~ETO:Oinhabilita.

1 habilita interrupción del Timer 0 .

b SI EXIJEXI[’ IiEXk r()i&a&ia,1 hablhta Interrupción exiema INTI.

SI ET1JETIJ’ riET1If)inha&a,

1 hab& mtermpción del Timer 1.

I-1’ IiESz()inhabiliQ.SI ES 1 habilita intermpción del puerto serie.

SI ET2@’ ~~ET?íOinhabilita.

1 habilita intermpción por sobrepasamiento o captura del Timer 2.

. . .

..*

JgI:- = ” ”.‘,

SI EA 1 hab& mdlmdualmente a todas las interrupciones que en este reD[istro están a uno.- Si EA = 0 no reconoce ninguna interrupción.

Page 188: LE002-Introduccion a Los Microcontroladores

184 Introducción a los Microcontroladores

1

PROGRAMA

t activo

Figura 10.1.

mina la ejecución de este subproceso, la CPU vuelve al programa principal, continuando,su tarea cíclica justo donde la dejó.

Una interrupción puede ser iniciada:

?? Por un periférico o ente externo ajeno al microprocesador o microcontrolador através de los pines específicos del mismo. En estas condiciones la interrupción esexterna.

?? Dentro del propio chip microprocesador o microcontrolador. Entonces la inte-rrupción es interna.

Toda interrupción aceptada conduce a la ejecución de un subprograma específico cuyadirección de comienzo se indica en las posiciones de memoria de una tabla, que recibeel nombre de tabla de vectorización.

10.2. ASPECTOS GENERALES Y TIPOS DE INTERRUPCIONES

El Microcontrolador 8052 tiene seis interrupciones, mientras que el 805 1 tiene cinco. LaFigura 10.3 muestra los distintos tipos de interrupciones, señalando la falta de losflagsque activan TF2 y EXF2 en el 805 1 por no tener implementado el Timer 2.

Page 189: LE002-Introduccion a Los Microcontroladores

/PROGRAMA INT 1

IAT I t-l

INTERRUPCION

RUTINA 1

RUTINA 2

pg2J-J

I I-----I

Figura 10.2.

TFlb

Figura 10.3.

Page 190: LE002-Introduccion a Los Microcontroladores

1 8 6 Introducción a los Microcontroladores

Los bits de flag que generan las interrupciones pueden ser cancelados, en algunas in-terrupciones, por hard, cuando éstas son vectorizadas; no obstante, todos los bits puedencancelarse por sofl escribiendo ceros en el registro correspondiente.

Nota: Dada la cantidad de nemónicos para identificar fuentes de interrupción y losflags que se acti-van en los microcontroladores, se propone referenciar, siempre que sea posible, el elemento que generala interrupción por su nombre completo. De todas formas, la Tabla 10.1 trata de aclarar esta dificultad.

Cada una de estas fuentes de interrupción pueden ser individualmente habilitadas oinhabilitadas poniendo a «uno» o a «cero» el bit correspondiente del registro IE (Inte-rrupt Enabk Register) perteneciente a SFR (Special Function Register) (Cuadro 10.1).

BIT

Cuadro 10.1

IE (INTERRUFT ENABLE REGISTER)

bi b6 bi b4 b, b z bl bo1 EA 1 X ) ET2 1 ES )( ET1 \ EX1 ) ET0 ( EX0

I NOMBRE Y COMENTARIO

bo pjJ:[:-. = ”SI EX0 I habilita mtermpción externa INTO- Si EX0 = 0 inhabilita.

h. ( : - Si ET0 = 1 habilita interrupción del Timer 0.-,

b z

b3

b4

bs

b6

b

L-J - Si ET0 = 0 inhabilita. .

SI EXIIExIT’ liEXI:Oinhabilita.

1 habilita intermpción externa INT 1 .

Si ETIIETII’ :SiETk:Oinh&liia.

1 hahhta mtermpción del Thzer 1.

SI ESI-1’ IS~ES~Oinhabilita.

1 habilita interrupción del puerto serie.

SI ET2IET2(’ -SiET2IOinhabilita.

1 habilita interrupción por sobrepasamiento o captura del Timer 2 .

Reservada. .,.*.pj-J:):-. = ““’ .f.

SI EA 1 hablhta mdlndualmente a todas las interrupciones que en este r@stro están a wfo.- Si EA = 0 no reconoce ninguna intermoción.

Page 191: LE002-Introduccion a Los Microcontroladores

Interrupciones 187

Tabla 10.1.

Fuente de interrupción Flag que activa

Externa 0 . . . . . . . . . . . . . . . INTO . . . . . . . . . . . . .Timer 0 . . . . . . . . . . . . . . . . TIMERO . . . . . . . . .Externa 1 . . . . . . . . . . . . . . . INTl . . . . . . . . . . . . .Timer 1 . . . . . . . . . . . . . . . . TIMERl . . . . . . . . .Puerto serie . . . . . . . . . . . . . RI . . . . . . . . . . . . . . .Puerto serie . . . . . . . . . . . . . T I . . . . . . . . . . . . . . .Timer 2 . . . . . . . . . . . . . . . . TIMER2 . . . . . . . . .Timer 2 Externa 2 . . . . . . . T2EX . . . . . . . . . . . .

............. IEO

. . . . . . . . . . . . . TFO

. . . . . . . . . . . . . IEl

. . . . . . . . . . . . . TFl

. . . . . . . . . . . . . RI

. . . . . . . . . . . . . T I

. . . . . . . . . . . . . TF2

. . . . . . . . . . . . . EXF2

Las interrupciones, como se explicó en el Capítulo 2 (véase Figura 2.4), presentan unatabla, tabla de vectorizaciones, en la que se reservan 8 posmem para cada una de las in-terrupciones en la memoria de programas (Tabla 10.2).

Tabla 10.2.

I Tabla de vectorizaciones

Fuente Dirección

INTO 0003HTIMERO OOOBH

INT 1 0013HTIMER 1 OOlBHRI + TI 0023H

TIMER2 + T2EX 002BH

En estas 8 posmem se puede escribir el programa de atención a la interrupción o,como es habitual, mediante un JMP<dir> se desvía a una zona de memoria de progra-mas lo suficientemente extensa para albergar la rutina de tratamiento de la interrupcióndetectada. As-por ejemplo, si se habilita la interrupción exterior (bit EX0 correspon-diente al pin INTO) y el comienzo del programa de tratamiento de la rutina está ubicadoen la posmem 0450H, la tabla de vectorización contendrá en la posmem 0003H el có-digo de operación de la instrucción de salto (y la parte alta de la dirección del salto si esun salto absoluto AJMP), en la siguiente posmem 0004H el byte alto de la dirección delsalto y en la posmem 0005H el byte bajo de la dirección del salto (Figura 10.4).

Page 192: LE002-Introduccion a Los Microcontroladores

188 Introducción a los Microcontroladores

tratamientoComienzo

0450H - rutinaINT 0

0005H

0004H

0003H

- OOOOH

Figura 10.4.

10.3. EL PROCESO DE INTERRUPCIONEN LOS MICROCONTROLADORES SO52/8051

Losflags o indicadores de interrupción son muestreados en el estado 5, fase 2 (S5P2) decada ciclo máquina. Las muestras son escrutadas durante el siguiente ciclo máquina. Elsistema de interrupciones del microcontrolador genera un LCALL al apropiado vectorde interrupciones. Esta situación se produce salvo que:

? Una interrupción de igual o mayor nivel de prioridad esté en ese momento en pro-ceso.

??No haya finalizado la instrucción que en ese momento está procesándose.??La instrucción en proceso es una RETI (retorno de interrupción) o se esté produ-

ciendo un acceso a los registros IE o IP; entonces asegura que una instrucción más,al menos, será ejecutada antes de que la interrupción sea vectorizada.

El ciclo de «escrutinio» se repite con cada ciclo máquina y los valores escrutados sonlos que corresponden a la activación de la interrupción presente en el S5P2 del ciclo má-quina anterior.

i

Puede suceder que un Jag de interrupción sea activado y no pueda responder el sis-tema por encontrarse en una de las situaciones de bloqueo comentadas anteriormente.En estas condiciones puede suceder lo siguiente:

Page 193: LE002-Introduccion a Los Microcontroladores

Interrupciones 1 8 9

a) Que desaparezca la situación de bloqueo y que el flas siga activado. En este casola interrupción será tratada por el microcontrolador.

b) Que desaparezca la situación de bloqueo, pero que en ese intervalo el flug de pe-tición de interrupción se haya desactivado. En ese caso la interrupción será de-negada y deberá ser solicitada nuevamente.

El ciclo completo es mostrado en la Figura 10.5, considerando las condiciones idó-neas, es decir, cuando el ciclo máquina C2 coincide con el último ciclo de instrucciónque se está ejecutando y que esta instrucción no sea una RETI o un acceso a los registrosIE o IP.

l ___ cl-cz-le- c3--cl-c4 wa---c5-*

LAS INTERRUPCIONES LLAMADA ALVFSXOR RUTINA INTERRUPCIONSON ESCRUTADAS DE DIRECCIONES DE

INTERRUPCION INTERRUPCION WL INTERRUPCIONACTIVADA MUESTREADA

Figura 10.5.

Puede suceder también que una interrupción de un nivel de prioridad más alto seactive antes del estado S5P2 del ciclo de máquina etiquetado C3 en la Figura 10.5; deacuerdo con lo dicho anteriormente, esta interrupción será vectorizada durante los ciclosC5 y C6, sin que ninguna instrucción de la rutina de prioridad más baja haya sido eje-cutada.

Con relación al borrado de losflags, una vez servida la rutina de interrupción, se hade decir que, en algunos casos, el borrado es automático, aspecto denominado como<<borrado por hardware»; en el otro caso, es el programador el que debe estar pendientede su borrado, modalidad de «borrado por software».

I No se produce borrado por hard en las interrupciones del puerto serie y delTimer 2.

I I

LosJlags de las interrupciones exteriores (INTO e INTl) son borrados por hard cuandose activan por flanco. Si están activadas por «nivel», éste debe volver a su estado de «noactivación» para que «salga» de la rutina de interrupción.

Una vez validada la interrupción y producido el salto a la rutina de servicio, laCPU guarda en la memoria pila (stack) el contenido del contador de programa (PC= Program Counter) y no salvaguarda el registro de estado (PSW).

Page 194: LE002-Introduccion a Los Microcontroladores

190 Introducción a los Microcontroladores

La rutina de interrupción debe finalizar con la instrucción RETI, que informa a laCPU de que la rutina ha finalizado. A renglón seguido se recuperan de la memoria depila los dos bytes de dirección del programa principal, instrucción siguiente a la que enproceso’recibió la interrupción y que concluyó antes de pasar al proceso de tratamiento.Estos dos bytes recargados en el contador de programa (PC) permiten que se siga ejecu-tando el programa principal, sin más que sufrir una relativa pequeña pérdida de tiempo.

10.4. NIVELES DE PRIORIDAD DE LAS INTERRUPCIONES

Cada fuente de interrupción puede programarse individualmente en dos niveles de prio-ridad, poniendo a «l» o a «ON su bit correspondiente en el registro IP (Cuadro 10.2) delbanco de registros SFR. Como se puede observar en la figura, un «l» en el bit corres-pondiente a la interrupción la sitúa en el nivel de prioridad más «alto» y un «O» en elnivel más «bajo».

Los bits b6 y b7 no están asignados, y lo mismo pasa con el b5 para el Microcontrola-dor 805 1, puesto que no tiene Timer 2.

Una interrupción con nivel de prioridad bajo puede ser interrumpida por otra de ni-vel de prioridad alto, pero no por otra de nivel de prioridad bajo. Una interrupción deprioridad alta no puede ser interrumpida por otra fuente de interrupción, salvo por lainterrupción externa RESET.

Cuadro 10.2.

IP (INTERRUPT PRIORITY REGISTER)

BIT

b,

Xb 6

Xh bl b 3 b 2 b, b o

1 PT2 1 PS 11 PT1 1 PXI 1 PT0 1 PXO

NOMBREYCOMENTARIO

b o

6

piJI:-. =SI PXO 1 define alta prioridad a interrupción INTO

m : - Si PT0 = 1 define alta prioridad a interrupción Timer 0 .

piiJ:--. =SI PX I 1 define alta prioridad a interrupción INTL

pTiJ-. =SI PT1 1 define alta prioridad a interrupción Timer 1 .

I-I:-’ =SI PS 1 define alta prioridad a interrupción puerto serie.

pEJ-: =SI PT2 1 define ah prioridad a interrupción Timer 2.

Reservado

Reservado

Si dos peticiones de interrupción de distintos niveles de prioridad son recibidas si-multáneamente, la interrupción de nivel de prioridad alto es servida. Si la petición co-rresponde a interrupciones del mismo nivel de prioridad y se producen simultánea-

Page 195: LE002-Introduccion a Los Microcontroladores

Interrupciones 191

mente, un escrutinio interno secuencia el servicio de la forma predeterminada que semuestra en la Tabla 10.3.

Tabla 10.3.

I Prioridades en el mismo nivel

I Prioridad

(más alta) . . . . . . . . 12

5(más baja) . . . . . . . . 6

Fuente

INTO (Int. EXTERO)TISO (Int. TIMERO)

INT 1 (Int. EXTERI)TIMER 1 (Int. TIMERl)RI + TI (Int. PUERTO SERIE)

TIMER2 + T2EX (Int. TIMER2 + FLANCO)

Así, dentro del mismo nivel de prioridad, hay una segunda estructura de prioridadesdeterminada por el orden de escrutinio según la tabla anterior. Esta prioridad, dentro delmismo nivel, solamente es utilizada para resolver estas peticiones simultáneas.

La Figura 10.6 resume y esquematiza los aspectos más importantes que han sido tra-tados con relación al tema:

- -?? INTO e INTI pueden ser activas por nivel o flanco.?? El registro IE (Interrupt Enable) permite «inhabilitan> todas las interrupciones o

«habilitarlas» individualmente.?? El registro IP (Interrupt Priority) puede disponer cada interrupción, individual-

mente, en la «cola» de interrupciones de alta o baja prioridad.

Hasta aquí se ha tratado el tema de las interrupciones de una forma general. A con-tinuación se estudia cada uno de los tipos de interrupciones, exceptuando las de los puer-tos de comunicaciones.

Como viene siendo habitual en el desarrollo de los temas, al comienzo se hace unaintroducción específica, en este caso al tipo de subsistema que va a generar la interrup-ción, para mostrar posteriormente, con un ejercicio, aquellos aspectos dignos de resaltarpara que el usuario pueda aplicarlos en terrenos más «comerciales», si se permite la ex-presión.

10.5. INTERRUPCIONES EXTERNAS (INTO) E (INTl)

Estas interrupciones externas, como se pueden observar en la Figura 10.6, pueden seractivas por nivel o por flanco descendente, dependiendo del estado del bit 0 (ITO) para

Page 196: LE002-Introduccion a Los Microcontroladores

192 lntroduccidn a los Microcontroladores

Permisos individualesInhibicion g lobal

Interrupcionesde prioridadalta

J

t

Secuencia- de

escrutinio

Interrupcionesde prioridadbaja

Figura 10.6.

INTO y del bit 2 (ITl) para INTl en el registro TCON (Cuadro 9.2). Losflags que acti-van estas interrupciones son los bit 1 (IEO) y bit 3 (IEl), también del-gistro TCON.

Cuando se genera una interrupción externa por flanco del tipo INTO o INT 1, elJlagse activa (se pone a «l») y se desactiva (se pone a «O»), cuando el servicio de interrup-ciones vectoriza para la ejecución de la rutina, entonces se dice que lo ha borrado el hard-ware del microcontrolador. Si la interrupción ha sido generada por nivel, la señal externaactiva elf2ag y la puesta a «cero» del mismo se hace por software, mediante una instruc-ción que pone el flag a cero actuando sobre el propio bit en el registro correspondiente.

Para ilustrar el funcionamiento y manejo de las interrupciones se propone una seriede ejercicios significativos para cada tipo de interrupción. En este apartado se muestranlas interrupciones externas y prioridades.

Page 197: LE002-Introduccion a Los Microcontroladores

Interrupciones 1 9 3

?? Descripción del programa

El programa consta de un cuerpo principal que pretende simular el funcionamiento dela pantalla de luces deslizantes del «Coche Fantástico», que daba nombre a la popularserie de televisión. Un bit se desplaza de izquierda a derecha y de derecha a izquierda yexcitará 8 leds situados a la salida del Puerto 0 (PO). Una rutina de temporización per-mite modificar la frecuencia de desplazamiento del bit.

En estas condiciones se tiene el efecto referido, pero cuando por el pin 12 (INTO),interrupción externa del microcontrolador, se produce un flanco descendente, y dado queestá habilitado este tipo de interrupción, el microcontrolador ejecuta una rutina, aso-ciada a la interrupción, cuyos efectos externos son hacer «parpadean> diez veces y si-multáneamente todos los leds del Puerto 0 (PO) para, una vez concluida esta secuencia,continuar con el programa principal del bit deslizante.

A continuación se indican, someramente, las operaciones que van a tener lugar deuna manera secuenciada:

- Cuando el microcontrolador recibe la interrupción y ésta es aceptada, por estarhabilitada (IE), el contador de programas (PC) no se incrementa para ejecutar la si-guiente instrucción, sino que consulta la tabla de vectorizaciones en la posmem corres-pondiente al tipo de interrupción.

- El contador de programas salta a ejecutar la rutina situada en la posmem señaladaen la tabla de vectorización.

- Antes de proceder a la ejecución de la rutina asociada a la interrupción, guarda enla pila (memoria LIFO situada por defecto en la posmem 0007H de la memoria RAMinterna) la posmem de la instrucción siguiente en la que fue interrumpido el sistema para,una vez concluida la rutina de interrupción, conocer la instrucción que le correspondíaejecutar y permitir, de esta manera, no romper la secuencia del programa principal.

- En este punto se recuerda al usuario que guarde en la pila el registro de estado(PSW), por si es modificado por la rutina y preste atención a los registros y posmem queson utilizados en común y no se encuentre con que los valores que utilizaba en el pro-grama principal han sido modificados por la rutina, lo que rompería la secuencia delprograma principal. En este caso, proceda a guardarlos, justo al comienzo del programade la rutina, y a recuperarlos antes de que ésta concluya.

- El regreso de la rutina se efectúa colocando al final de la misma, y justo despuésde recuperar los valores de los registros y posmem de la pila, la instrucción RETI.

A continuación se muestra el montaje, el mapa de memoria, el flujograma, el pro-grama fuente y el programa objeto del ejercicio..

I INota: Es importante que el interruptor o pulsador utilizado para producir la interrupción sea «anti-

rrebote» (véase Figura 8.6). LI

Page 198: LE002-Introduccion a Los Microcontroladores

1 9 4 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

?? Esquema del montaje (Figura 10.7)

8052/5 1

+5v 3 9 - b PO.O3 8 + P0.13 7 b P0.2

z-b P0.3b P0.4

INTO 3 4 b P0.512 3 3 + P0.6

3 2 b P0.7

Figura 10.7.

?? Mapa de memoria

0200H *IIv<IpIIi 0300H /li,“:u 0400H dElIBEN0003H

VECTORIZACION (INTO) 0400H

?? Flujograma

Secuencia de inicialización:

b7

TCON

IEO b0

? I T O

« l» activa por flanco descendente«O» activa por nivel

b7 b0

IE EA I EX0

« l» habilita interrupción INTO

Page 199: LE002-Introduccion a Los Microcontroladores

Interrupciones 195

D E S P L A O . A S M

TCON <-- 01 H

R L C

4

PO t ACC

4

R U T I N A :

R E T A R D O

i;lPO <-- ACC

(-yc)

1RO <-- 04H

DEC (RO)

R E C U P E R A R R E G .R E C U P E R A R R E G .DEL “STACK”DEL “STACK”

Page 200: LE002-Introduccion a Los Microcontroladores

196 Introducción a los Microcontrolacfores

?? Programa fuente

TITLE DESPLAO.ASM.COMMENT *Desplazaunbitdeizda. a dcha.enelPuerto 0 (PO)

31.5.91*

SYMBOLS ONCODE

RETARDO EQU 0300H ; Comienzo de la RUTINA de RETARDO.INTO EQU 0400H ; Comienzo de la RUTINA de INTERRUPCION.

ORIGIN 0003H ; Vectorización de la RUTINA DE INTERRUPCION (INTO).JMP INTO ; Llamada a la RUTINA DE INTERRUPCION.

: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ORIGIN 0200HMOV TCON,#OlH ; Se programa la INTO por flanco.MOV IE, #81H ; Habilitada interrupción INTO.MOV A, #OOHSETB C ; Se pone el CARRY a 1.

SALO:RLC A ; Rotación de un bit a la izda.MOV PO, A ; Se escribe en el Puerto 0 (PO).CALL RETARDO ; Se llama a la rutina de RETARDO.JNB A.7, SALO ; Se testea el bit 8. Si es < > 0 se comienza el

; desplazamiento a la dcha.SALl:RRC A

MOV PO, ACALL RETARDOJNB A.0, SAL1JMP SALO

;------------------------------------------m-sORIGIN 0300H ; Comienzo de la rutina de RETARDO.PUSH A ; Se guarda el ACC en el «stack» (PILA).MOV A ROPUSH A,MOV RO, #04H ; Rutina comentada en el Ejercicio 7.5.

SAL2:MOV Rl, #20HSAL3:MOV R2, #FFHSAL4:DJNZ R2, SAL4

DJNZ Rl, SAL3DJNZ RO, SAL2POP AMOV RO, APOP A ; Se recupera ACC del «stack».RET

;---------------------------------------------ORIGIN 0400H ; Comienzo de la rutina de interrupción INTO.

; pone en intermitencia todos los bi ts del PO.PUSH AMOV A PSWPUSH A, ; Se guarda en el «stack» el registro de estado.MOV A RO

Page 201: LE002-Introduccion a Los Microcontroladores

PUSH A,MOV RO, #OAH

SAL5:MOV PO, #FFHCALL RETARDOMOV PO, #OOHCALL RETARDODJNZ RO, SAL5POP AMOV RO, APOP AMOV PSW, APOP ARETIEND

Interrupciones 197

; Se guarda, también, el registro RO.

; Se recuperan los registros del «sta&>.

?? Programa objeto

Conviene comprobar el comportamiento de la interrupción INTO cuando está progra-mada por nivel. Para comprobarlo se sustituye la instrucción posmem 0200, línea 1:

MOV TCON,#Ol por MOV TCON,#OO

Considérese esta modificación como ilustración de lo dicho en el segundo párrafo delApartado 10.5.

>z 0003LOC OBJ0003 8100

>z 02000219LOC OBJ0200 7588010203 75A8810206 74000208 D30209 33020A F58002oc 7100020E 30E7F80211 130212 F5800214 71000216 30EOF80219 4109

>Z 03000316LOC OBJ0300 COEO0302 E80303 COEO0305 78040307 7920

LINE0001

LINE0001000200030004000500060007000800090010001100120013

LINE00010002000300040005

LABEL

LABEL

B0209

B0211

LABEL

B0307

SOURCE CODEAJMP 0400

SOURCE CODEMOV TCON,#OlMOV IE,#81MOV A, #OOSETB CRLC AMOV PO,AACALL 0300JNB ACC.7,0209RRC AMOV PO,AACALL 0300JNB ACC.O,OLllAJMP 0209

SOURCE CODEPUSH ACCMOV A,ROPUSH ACCMOV RO,#04MOV R1,#20

Page 202: LE002-Introduccion a Los Microcontroladores

1 9 8 Introducción a los Microcontroladores

0309 7AFF030B DAFE030D D9FA030F D8F60311 DOEO0313 FE0314 DOEO0316 22

>Z 0400 0420LOC OBJ0400 COEO0402 E5DO0404 COEO0406 EE0407 COEO0409 780A040B 7580FF040E 71000410 7580000413 71000415 D8F40417 DOEO0419 FE041A DOEO041c F5DO041E DOEO0420 32

DISASSEMBLYCOMPLETED>

0006 B0309 MOV0007 B030B DJNZ0008 DJNZ0009 DJNZ0010 POP0011 MOV0012 POP0013 RET

LINE LABEL SOURCE0001 PUSH0002 MOV0003 PUSH0004 MOV0005 PUSH0006 MOV0007 B040B MOV0008 ACALL0009 MOV0010 ACALL0011 DJNZ0012 POP0013 MOV0014 POP0015 MOV0016 POP0017 RETI

R2,#FFR2,030BR1,0309RO,0307ACCRO,AACC

CODEACCA,PSWACCA,ROACCRO,#OAPO,#FF0300PO,#OO0300R0,040BACCRO,AACCPSW,AACC

Se trata de ilustrar con un ejercicio el manejo del registro de prioridades en las interrup-ciones (IP).

Puesto que el usuario está familiarizado con el funcionamiento del ejercicio anterior,se va a utilizar el mismo para esta demostración, con una interrupción más, la corres-pondiente a la entrada exterior activa por flanco descendente (T2EX), asociada alTimer 2.

Cuando se active esta interrupción se observará un cambio en la secuencia de las lu-ces; si el programa principal genera un deslizamiento de las luces y la primera rutina(INTO) produce una secuencia de intermitencia de todos los bits del Puerto 0 (PO), laejecución de esta rutina (T2EX) produce el intercambio alternativo de los nibbles bajo yalto del Puero 0 (PO), como se indica a continuación:

Page 203: LE002-Introduccion a Los Microcontroladores

Interrupciones 203

0 Programa fuente

TITLE PRIORO.ASM.COMMENT *Desplazaunbitdeizda. adcha. enelPuerto 0 (PO),

además, presentaotros programas alternativos31.5.91

*SYMBOLS ONCODE

RETARDO EQU 0300HINTO EQU 0400HT2EX EQU 0500H

ORIGIN 0 0 0 3 HJMP INTO

.-------------_-ORIGIN 002BHJMP TLEX

;---------------ORIGIN 0200HMOV TCON,#OlHMOV TZCON,#08HMOV IE, #AlHMOV IP, #OOH

MOV A, #OOHSETB C

SALO:RLC AMOV PO, ACALL RETARDOJNB A.7, SALO

SAL1:RRC AMOV PO, ACALL RETARDOJNB A.0, SAL1JMP SALO

: --------ORIGINPUSH AMOV A,PUSH A,MOV A,PUSH A,MOV RO,

SAL2:MOV Rl,SAL3:MOV R2,SAL4:DJNZ R2,

DJNZ Rl,DJNZ RO,

; Comienzo de la RUTINA de RETARDO.; Comienzo de la RUTINA de INTERRUPCION.; Comienzo de la RUTINA de INTERRUPCION (T2EX).; Vectorización de la RUTINA de INTERRUPCION (INTO).

; Llamada a la RUTINA DE INTERRUPCION.-------------------------~-~-~~

; (TCON t OlH flanco); (TCON c- OOH nivel).; Se programa la T2EX por flanco.; Habilitada interrupción INTO y T2EX.; Define prioridad. IP t OO (P es ya por defecto).; IP t 20H alta prioridad para T2EX.; Pone a «O» ACC.; Se pone el CARRY a «IB.; Rotación de un bit a la izda.; Se escribe en el Puerto 0 (PO).; Se llama a la rutina de RETARDO.; Se testea el bit 8. Si es < > 0 se comienza el; desplazamiento a la dcha.; Rotación de un «bit» a la dcha.; Se escribe en el (PO).

; Salta si el bit ACC.0 es < > de «O».

.-----------------------------0300H ; Comienzo de la rutina de RETARDO.

; Se guarda el ACC en el «sta& (PILA).RO

PSW

#15H#20H#FFHSAL4SAL3SAL2

; Rutina comentada en el Ejercicio 7.5.

--------

Page 204: LE002-Introduccion a Los Microcontroladores

POP AMOV PSW, APOP AMOV RO, APOP ARET

; - - - - - - - - - - - - -ORIGIN 0400H

PUSH AMOV A PSWPUSH A,MOV A ROPUSH A,MOV RO, #OAH

SAL5:MOV PO, #FFHCALL RETARDOMOV PO, #OOHCALL RETARDODJNZ RO, SAL5POP AMOV RO, APOP AMOV PSW, APOP ARETI

;-------------ORIGIN 0500HANL TZCON,#BFHPUSH AMOV A, PSWPUSH AMOV A, ROPUSH AMOV RO, #08H

SAL6:MOV PO, #FOHCALL RETARDOMOV PO, #OFHCALL RETARDODJNZ RO, SAL6POP AMOV RO, APOP AMOV PSW, APOP ARETI

END

2 0 4 Introducción a los Microcontroladores

; Se recupera ACC del «stack».

- - ------------------------------; Comienzo de la rutina de interrupción INTO; poniendo en intermitencia todos los bi ts del PO.

; Se guarda en el «stack» el registro de estado.

; Se guarda, también, el registro RO.; Contador de eventos.

; Se recuperan los registros del «Sta&>.

------------------------------; Comienzo de la rutina de interrupción (T2EX).; Se borra el flag EXF2 por «soft».

; Hasta aquí guardar registros en el «stack».; Contador de eventos.

; Se recuperan los registros del «stack».

Page 205: LE002-Introduccion a Los Microcontroladores

Interrupciones 1 9 9

POH POL

Configuración 1

Configuración 2

Configuración 3

b7 b0

1 1 1 1 0 0 0 0

b7 b0

0 0 0 0 1 1 1 1

b7 b0

1 1 1 1 0 0 0 0

.................................

.........................................................

Así estará oscilando entre los dos estados hasta ocho veces.

?? Esquema del montaje (Figura 10.8)

Como se puede observar en la figura, el pulsador pone en marcha simultáneamente lasdos interrupciones INTO y T2EX, ambas activas, como se podrá ver en la «inicializa-ción», en flanco descendente. En función del valor escrito en el registro de prioridades(IP), se estudian dos opciones:

TXEXl

I N T O

L¿

v6052

! 39303736

341 2 33

32

I - + P O . O4 P0.1__) P 0 . 2+ P 0 . 3+ P 0 . 4-----+ P 0 . 5------b P 0 . 6------+ PB.7

Figura 10.8.

Page 206: LE002-Introduccion a Los Microcontroladores

200 Introducción a los Microcontroladores

a) Que se ejecute la interrupción INTO y posteriormente T2EX, pulsandouna sola vez.

b) Que se invierta el orden de ejecución.

?? Mapa de memoria

rl500H

RUT. DEINTERRUP.

INTO

RUT. DEINTERRUP.

T2EX

?? Flujograma

Como se ha señalado antes, han de observarse, de momento, dos opciones a) y b).Para que se cumpla la primera opción, no es necesario programar el registro de prio-

ridades (IP), puesto que, por defecto, según se estudió, INTO tiene mayor prioridad queT2EX, por esta razón, en el programa:

IP f- OOH

Para que se cumpla la segunda opción, a T2EX se le da la prioridad «alta» y a INTOla prioridad «baja», es decir:

PT2 t 1

PXOtO

Estos son los flujogramas correspondientes al programa principal, rutina de retardoy las dos rutinas de interrupciones correspondientes a INTO y T2EX.

Page 207: LE002-Introduccion a Los Microcontroladores

Interrupciones 2 0 1

T C O N < - - 0 1 HT2CON <-- 08H

CIP O <-- A C C

clR U T I N A :

R E T A R D O

P O <-- A C C

4

R U T I N A :

R E T A R D O

(-yi-)ti

RO <-- 0 4 H

Rl <-- 20H

*

DEC ( R 2 )

DEC (Rl)

DEC (RO)

Page 208: LE002-Introduccion a Los Microcontroladores

I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

GUARDAR REGISTROSEN EL ‘STACK”

SALVAR REGISTROSDEL “STACK”

BORRA “FlAG”

TSEX

4

GUARDAR REGISTROSEN EL ‘STACK”

clRO <-- 08H

P O c-- FOH

JI

R U T I N A :

R E T A R D O

JI

P O <-- OFH

4

R U T I N A :

R E T A R D O

f?RETI

Page 209: LE002-Introduccion a Los Microcontroladores

?? Programa objeto

>z 0003LOC OBJ0003 8100

DISASSEMBLYCOMPLETED

>Z 002BLOC OBJ002B Al00

DISASSEMBLYCOMPLETED

>Z 0200 021F

LOC OBJ0200 758801

0203 75C808

0206 7 5A8Al0209 75B80002oc 7400

020E D3020F 33

0210 F5800212 7100

0214 30E7F80217 130218 F580021A 7100021c 30EOF8021F 410F

>Z0300031ELOC OBJ0300 COEO0302 E80303 COEO0305 E5DO0307 COEO0309 7815030B 7920030D 7AFF030F DAFE0311 D9FA0313 D8F60315 DOEO0317 F5DO0319 DOEO031B F8031c DOEO031E 22

??? 04000420

LOC OBJ0400 COEO

LINE0001

LINE0001

LINE00010002

0003

0004

0005

0006

0007

0008

0009001000110012001300140015

LINE00010002

0003

0004

0005

0006

0007

0008

00090010001100120013

0014

0015

0016

0017

LINE0001

LABEL

LABEL

LABEL

B020F

B0217

LABEL

B030BB030DB030F

LABEL

SOURCE CODEAJMP 0400

SOURCE CODEAJMP 0500

SOURCE CODEMOV TCON,#OlMOV T2CON,#08MOV IE,#AlMOV IP,#OOMOV A, #OOSETB CRLC AMOV PO,AACALL 0300

JNB ACC.7,020FRRC AMOV PO,AACALL 0300

JNB ACC.0,0217AJMP 020F

SOURCEPUSHMOVPUSHMOVPUSHMOVMOVMOVDJNZDJNZDJNZPOPMOVPOPMOVPOPRET

SOURCE CODEPUSH ACC

CODEACCA,ROACCA,PSWACCRO,++15R1,#20R2,#FFR2,030FR1,030DR0,03OBACCPSW,AACCRO,AACC

Page 210: LE002-Introduccion a Los Microcontroladores

2 0 6 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

0402 E5DO 00020404 COEO 00030406 EE 00040407 COEO 00050409 780A 0006040B 7580FF 0007040E 7100 00080410 7,58000 00090413 7100 00100415 D8F4 00110417 DOEO 00120419 F8 0013041A DOEO 0014041c F5DO 0015041E DOEO 00160420 32 0017

MOVPUSHNOVPUSHMOV

B040B MOVACALLMOVACALLDJNZPOPMOVPOPMOVPOPRETI

A,PSWACCA,R0ACCRO,#OAPO,#FF0300PO,#OO0300R0,04OBACCRO,AACCPSW,AACC

Finalmente ésta es la rutina T2EX que se activa al producirse un flanco descendenteen el pin del mismo nombre.

>Z 0500 0523LOC OBJ0500 53CEBF0503 COEO0505 E5DO0507 COEO0509 EE050A COEO05oc 7808050E 7580FO0511 71000513 75800F0516 71000518 D8F4051A DOEO051c FE051D DOEO051F F5DO0521 DOEO0523 32

DISASSEMBLYCOMPLETED>

LINE LABEL SOURCE0001 ANL0002 PUSH0003 MOV0004 PUSH0005 MOV0006 PUSH0007 MOV0008 B050E MOV0009 ACALL0010 MOV0011 ACALL0012 . DJNZ0013 POP0014 MOV0015 POP0016 MOV0017 POP0018 RETI

CODETZCON,#BFACCA,PSWACCA,ROACCRO,++08PO,#FO0300PO,#OF0300R0,050EACCRO,AACCPSW,AACC

En este Ejercicio 10.2 parece interesante comprobar, además de las interrupciones si-multáneas, los siguientes aspectos:

?? En el caso de que se esté ejecutando una interrupción, iqué sucederá si se activaotra de menor o igual prioridad?

Page 211: LE002-Introduccion a Los Microcontroladores

Interrupciones 207

- Lógicamente, la segunda interrupción no interrumpirá la ejecución de la primera,pero será ejecutada, una vez finalizada la primera, porque la memoriza en lacola de ejecución de rutinas.

?? iQué sucederá si ejecutando el programa de la rutina de interrupción se activa otrade mayor prioridad?

- Abandona la rutina de interrupción para ejecutar la segunda, y una vez finalizadaésta, regresará a completar la ejecución de la primera.

Para comprobar este comportamiento se deberá independizar las interrupciones co-locando para cada entrada un pulsador.

10.6. INTERRUPCIONES INTERNAS PRODUCIDASPOR EL TIMER 0 Y 1

Las interrupciones de los Timers 0 y I son generadas por TFO y TFl respectivamente(Figura 10.2), al producirse un sobrepasamiento en el registro de contaje del timer co-rrespondiente.

Con la intención de servir de repaso y a modo de resumen se muestran a continua-ción los registros de contaje, losflags que son afectados, según el timer, y los modos detrabajo.

TIMER/COUNTER 0 EN MODO 0:

TFO -> INTERRUPT

TIMER/COUNTER 1 EN MODO 0:

TH 1 (8 bits) TL1 (5 bits) > INTERRUPT

TIMER/COUNTER 0 EN MODO 1:

TH0 (8 bits) TFO -> INTERRUPT

TIMER/COUNTER 1 EN MODO 1:

TH1 (8 bits) . TFl -> I N T E R R U P T

TIMER/COUNTER 0 EN MODO 2:

TL0 (8 bits) TFO -> INTERRUPT

TIMER/COUNTER 1 EN MODO 2:

TL1 (8 bits) . TFl -> I N T E R R U P T

Page 212: LE002-Introduccion a Los Microcontroladores

2 0 8 Introducción a los Microcontrolacfores

TIMER/COUNTER 0 y 1 EN MODO 3:

TL0 (8 bits) TFO -> INTERRUPT

TH0 (8 bits) TFl -> INTERRUPT

En cualquier caso, el &g activo es borrado por hardware cuando sea vectorizada larutina de atención a la interrupción.

Este ejercicio produce el desplazamiento de un bit a la izda. y se visualiza en el Puerto 0(PO). El desplazamiento es siempre en la misma dirección. La velocidad de desplaza-miento del bit depende del valor que el usuario le ponga en el Puerto PI con los ochoconmutadores, según el peso de los bits.

?? Objetivos

- Repasar la programación de los timers.- Ver cómo se activa una interrupción al producirse el «sobrepasamiento» en los

timers.- Observar el mecanismo de la vectorización.

En este caso se utiliza el Timer 1, pudiendo sustituirse sin ningún inconveniente porel Timer 0.

?? Esquema de montaje (Figura 10.9)

b-7

b6

b5

b4

b3

b2

b l

b O

ttttttttb7 b6 b5 b4 b3 b2 bl bO

Figura 10.9

Page 213: LE002-Introduccion a Los Microcontroladores

I n t e r r u p c i o n e s 2 0 9

?? Mapa de programas

OOlBHVECTORIZACION (TIMER 1) 0300H

?? Flujogramas

DESPIAl ASM

TMOD c-- 10H

A C C <-- 0 1 H7TL1 <-- OOH

TH1 <-- OOH

TCON <-- 40H

Page 214: LE002-Introduccion a Los Microcontroladores

210 Introducción a los Microcontroladores

El programa principal contiene los siguientes bloques:

- Primer bloque: Inicialización:

TMOD c- 10H ; Queda programado el Timer I en Modo 1.IE c- 88H ; Se habilitan interrupciones globalmente y concretamente la

; que se produce en el «sobrepasamiento» del Timer 1.IP f-- 08H ; Prioridad «l» a esta interrupción. En este caso, como es la

; única, podría prescindirse de esta instrucción.

- Segundo bloque:

ACC f- OlH ; Se carga el registro ACC con el bit que se va a desplazar, para; conseguir el efecto de «deslizamiento».

- Tercer bloque:

TL1 y TH1 c- OOH ; Carga de los registros de contaje. Al cargarlos con (OOH) se; conseguirá la máxima temporización.

- Cuarto bloque:

TCON t 40H ; Se permite la entrada de impulsos de contaje (TRl c- 1) in-; detinidamente. Esta última palabra significa que cuando Ile-; gue a producirse el «sobrepasamiento» paso de FFFFH a; OOOOH, el contador seguirá contando, elflas del Tima I (TFl); se pondrá a «O» por hard al vectorizar la interrupción y estará; dispuesto a activarse de nuevo en el próximo «sobrepasa-; miento», y así sucesivamente hasta impedir el paso de los im-; pulsos de contaje (TRl t 0).

- Quinto bloque:

PROGRAMA ; Simula una tarea repetitiva que en el control de procesos sePRINCIPAL ; puede identificar por capturas de datos, visualización de

; resultados, señalizaciones de alarmas, etc.

La rutina contiene los siguientes bloques:

- Indudablemente el primer bloque que debería estar presente, pero que en este casono lo está por no existir un programa principal, es el que hace referencia a la «salva-guarda» de los registros del microcontrolador utilizados por el programa principal y co-herentemente, al final de la rutina, el bloque antagónico que repone los valores de losregistros salvados.

- Primer bloque:

RL A ; Desplazamiento de un bit del (ACC) a la izquierda.

Page 215: LE002-Introduccion a Los Microcontroladores

I n t e r r u p c i o n e s 211

- Segundo bloque:

PO t- ACC ; Escribe el contenido del ACC por el PO.

- Tercer bloque:

TL1 y TH 1 f- Pl ; Si estas dos instrucciones no existieran en el programa, la tem-; porización del Timer 1 sería la máxima, tal como se inicializó; en el programa principal, pero en este caso los valores del re-; gistro de contaje se refrescan después de la lectura de los inte-; rruptores situados a la entrada del Puerto 1 (PI) y que pueden; ser modificados a voluntad por el usuario.

- Cuarto bloque:

RETI ; Retorno de la rutina de interrupción.

0 Programa fuente

TITLE DESPLAl.ASM.COMMENT *Desplaza un bit en el puerto PO, con velocidadvariable en

funcióndeldato leídoenelpuertodeentradaP11.6.91

*SYMBOLS ONCODEORIGIN OOlBHJMP 0300H ; Vectorización de la interrnpción Timer 1.

;------------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ORIGIN 0200HMOV TMOD,#lOH ; Timer 1 como«temporizadon>en ModoI.MOV IE, #88H ;Validación de interrupción Timer 1.MOV IP, #08H ; Prioridad para el Timer 1 (no es necesaria).MOV A, #OlH ; Se carga el ACC con 0 1 H.MOV THl, #OOH ; Se carga la parte alta del Timer 1.MOV TLl, #OOH ; Se carga la parte baja del Timer 1.MOV TCON,#40H ; Se arranca el Timer 1.

SALO:NOPJMP SALO ;Se cierraen unbucleque «no hace nada».

i ---- ---------------_--_-____________________~ORIGIN 0300H ; Rutina de desplazamiento y lectura de P 1.RL A ; Desplazamiento a la izda. del (ACC).MOV PO, A ; Saca el dato por el PO.MOV TLl, Pl ; Lee del puerto PI y carga en la parte baja del Timer 1.MOV THl, Pl ; Lee del puerto Pl y carga en la parte alta del Timer 1.RETlEND

Page 216: LE002-Introduccion a Los Microcontroladores

2 1 2 Introducción <I los Microcontrolodores

?? ’ Programa objeto

En primer lugar aparece el salto a la rutina de vectorización:>z 001BLOC OBJ LINE LABEL SOURCE CODEOOlB 6100 0001 AJMP 0300

DISASSEMBLYCOMPLETED>

A continuación están los programas de inicialización y el programa principal ficticio(NOP. = NO OPERACION) y la rutina de interrupción.

>z 02000215LOC OBJ0200 7589100203 75A8880306 75B8080209 7401020B 758DOO020E 758BOO0211 7588400214 000215 4114

DISASSEMBLYCOMPLETED

>z 03000309LOC OBJ0300 230301 F5800303 85908B0306 85908D0309 32

DISASSEMBLYCOMPLETED>

LINE LABEL00010002000300040005000600070008 B02140009

LINE LABEL SOURCE0001 RL0002 MOV0003 MOV0004 MOV0005 RETI

SOURCEMOVMOVMOVMOVMOVMOVMOVNOPAJMP

TMOD,#lOIE,#88IP,#OEA, #OlTHl,#OOTLl,#OOTCON,#40

0214

CODEAPO,ATLl,PlTHl,Pl

10.7. INTERRUPCIONES INTERNAS DEL TIMER 2 (sólo 8052)

En el microcontrolador 8052 la interrupción del Timer 2 puede producirse por dos ca-minos, según se active TF2 o/y EXF2. En el Ejercicio 10.2 se estudió la interrupción ex-terior por flanco descendente (T2EX), dentro del contexto de las prioridades. Ahora letoca el turno al análisis del funcionamiento de la interrupción producida por el Timer/Counter 2.

El flag activado por el Timer 2 deberá ser borrado por software, accediendo previa-mente al registro T2CON (Cuadro 9.3 y Figura 9.8).

Page 217: LE002-Introduccion a Los Microcontroladores

Interrupciones 213

Este ejercicio es una variante del Ejercicio 10.1 (DESPLAO.ASM). En él se trata de va-riar la frecuencia de desplazamiento, según los datos fijos almacenados previamente enuna tabla, de tal forma que el desplazamiento se haga «rápido» en los extremos y «lento»en el centro (Figura 10.10). El Ejercicio 8.4 también utiliza una tabla.

Figura 10.10.

El valor en hexadecimal que figura entre los bits del puerto de salida (PO) es el que serecargará en los registros de contaje TL2 y TH2, estos valores deberán ser cargados enuna tabla de datos.

?? Objetivos- Estudiar las interrupciones del Timer 2.- Cargar los registros de contaje con los datos procedentes de una tabla.- Observar el borrado delflag de interrupción del Timer 2 por soft.

?? Esquema del montaje (Figura 10.11)

TABLA DE DATOS

b7 b6 b5 b4 b3 b2 bl b0

Figura 10.11.

Page 218: LE002-Introduccion a Los Microcontroladores

2 1 4 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

?? Mapa de programas

10500H

l--TABLA DATOS

002BH, 1VECTORIZACION (TIMER 2) 0500H

?? Flujogramas

A continuación se hace un breve comentario a los flujogramas del Ejercicio 10.4.El programa principal «INTETIM2.ASM» comienza con la inicialización del registro

DPTR (puntero de la tabla) de la variable auxiliar (AUX), que apunta el sentido de ro-tación de cada ciclo, y de la variable ROTA, que es el registro de almacenamiento delacumulador donde se realizan las rotaciones.

El CARRY se pone a «l». Es el bit que se desplaza.Se programan los registros de:

Habilitación de interrupciones IE c- AOH.Prioridad de interrupciones IP c- 40H.

(Puesto que sólo hay una interrupción del Timer 2, es innecesario programar IP; noobstante, se ha puesto como «recordatorio»).

Se inicializan los registros de contaje.Se arranca el Timer 2 y se entra en el programa principal. Este programa, como en

el ejercicio anterior, no existe y en su defecto se ha puesto la instrucción NOP (no ope-ración). El contador de programa (PC) se encontrará normalmente ejecutando la ins-trucción NOP, salvo que se produzca un sobrepasamiento en el Timer 2 y por consi-guiente un salto a la rutina de interrupción T2.

La rutina de interrupción «INTERRUP.T2» es la que se encarga de desplazar el bita dcha. y a izda., visualizar el resultado por el Puerto (PO) y retener esa visualización enfunción del tiempo asignado al Timer 2, según los valores de la tabla de datos.

La primera operación que hace es borrar el jZag de interrupción, puesto que no lohace automáticamente la vectorización de la rutina (no hay borrado por hardware).

Determina el sentido del desplazamiento según la variable AUX, que se posiciona ala salida de la rutina, según el bit desplazado llegue al extremo derecho o izquierdo.También, en este caso, inicializa la tabla de datos.

En la parte central del flujograma visualiza el dato, lee la tabla de datos, la almacenaen la parte baja y alta del registro de contaje (ambos registros tienen el mismo valor) eincrementa el puntero de TABLA (DPTR t- (DPTR) + 1).

Page 219: LE002-Introduccion a Los Microcontroladores

Interrupciones 2 1 5

?? Flujogramas

e

INICIALIZAR:r-lD P T R <-- 0 5 0 0 HAUX <-- 01 H

R O T A <-- OOH

ARRANCATIMER

TPCON <-- 04H

TL2 <-- TABLA

TH2 c-- TABLA

I N C R E M E N T A RP U N T E R O T A B L A

AUY. c-- 01 H

AUX <-- OOH

#--INICIALIZAR

P U N T E R OD P T R <-- 0 5 0 0 H

Page 220: LE002-Introduccion a Los Microcontroladores

216 Introducción a los Microcontroladores

0 Programa fuente

TITLE INTETIM2.ASM.COMMENT *Igual que DESPLAO.ASM, pero la velocidad de desplazamiento

es funcióndelosvalores registradosenunaTABLA.1.6.91

*SYMBOLS ONCODE

TABLA EQU 0500H ; Posmem comienzo de la TABLA.AUX EQU 40H ; Variable que indica el sentido de ROTACION:ROTA EQU 41H ; Variable dato de salida por PO.TIMERZ EQU 0300H ; Posmem comienzo rutina Timer 2.

ORIGIN 0500H ;Comienzodelosdatos delaTABLA..BYTE FFH,80H,40H,OOH,40H,8OH,FFH

: -- _______-_-----_------------------------------ORIGIN 002BHJMP TIMERZ

i ----- - - - - - - - - -ORIGIN 0200HMOV DPTR,#TABLAMOV AUX, #OlHMOV ROTA,#OOHSETB CMOV IE, #AOHMOV IP, #40HMOV TL2, #OOHMOV TH2, #OOHMOV TLCON,#04H

SALO:NOPJMP SALO

--

; Vectorización rutina interrupción (Timer 2).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; Programa de inicialización y principal.; Se carga inicio de TABLA en puntero DPTR.; Se inicia movimiento rotación a izda.; Se inicia valor salida leds por puerto PO.; C t 1. Este es el bit que se desplaza.; Se habilita interrupción Timer 2.; Máxima prioridad Int . Timer 2 (no es necesario).; Se carga registro contador Timer 2.

; Se arranca Timer 2.; Simula el programa principal.

: ----------------ORIGIN 0300HANL TLCON,#BFHPUSH AMOV A, AUXJZ SAL1MOV A, ROTARLC AMOV ROTA,AJMP SAL2

SALl:MOV A, ROTARRC AMOV ROTA,A

SAL2:MOV PO, ROTAMOV A, #OOHMOVC A, @A+DPTRMOV TL2, AMOV TH2, A

_________--------------------; Comienzo de la rutina de interrupción.; Se borra elflas de interrupción.; Guardar registros programa principal.; Para saber el sentido de rotación que . . .*) . . . corresponde. Si AUX t OlH a la izda . . .; . . . si AUX t OOH a la dcha.

; El contenido de ROTA se saca por el PO.; Se inicializa ACC.; Se obtiene dato de temporización de TABLA.; Se carga dato TABLA en Timer 2.

Page 221: LE002-Introduccion a Los Microcontroladores

Interrupciones 2 1 7

MOV TZCON,#04 ; Se arranca Timer 2.INC DPTR ; Se incrementa puntero de TABLA.MOV A, AUX ; Si el bit que se desplaza llegó al extremo . . .JZ SAL3 ; . . . del recorrido se cambia el sentido de la . . .MOV A, ROTA ; . . . rotación, cambiando el valor de AUX.CJNE A, #80H,SAL4MOV AUX #OOHMOV DPTR,#TABLA ; Se inicializa puntero de TABLA.JMP SAL4

SAL3:MOV A, ROTACJNE A, #OlH,SALIMOV AUX #OlHMOV DPTR,#TABLA

SAL4:CLR CPOP ARETI

END

?? Programa objeto

>Z 002BLOC OBJ002B 6100

>20200021ALOC OBJ0200 9005000203 7540010206 7541000209 D3020A 75A8AO020D 75B8400210 75ccoo0213 75CDOO0216 75C8040219 00021A 4119

>z03000344LOC OBJ0300 53C8BF0303 COEO0305 E5400307 60080309 E541030B 3303oc F541030E 0203160311 E5410313 13

LINE0001

LINE LABEL SOURCE0001 MOV0002 MOV0003 MOV0004 SETB0005 MOV0006 M O V0007 MOV0008 MOV0009 MOV0010 B0219 NOP0011 AJMP

LINE LABEL SOURCE0001 ANL0002 PUSH0003 MOV0004 JZ0005 MOV0006 RLC0007 MOV0008 LJMP0009 B0311 MOV0010 RRC

LABEL SOURCEAJMP

CODE0300

CODEDPTR,#050040,#0141,#00CIE,#AOIP,#40TL2,#00TH2,#00TZCON,#04

0219

CODET2CON,#BFACC.A,400311A,41A41,A0316A,41A

Page 222: LE002-Introduccion a Los Microcontroladores

2 1 8 Introducción Q los Microcontroladores

0314 F541 00110316 854180 0012 B03160319 7400 0013031B 93 0014031c F5CC 0015031E FSCD 00160320 75C804 00170323 A3 00180324 E540 00190326 600E 00200328 E541 0021032A B48014 0022032D 754000 00230330 900500 00240333 020341 00250336 E541 0026 B03360338 B40106 0027033B 754001 0028033E 900500 00290341 c3 0030 B03410342 DOEO 00310344 32 0032

DISASSEMBLYCOMPLETED>MO500 0506

OO 0102 03 04 05 06 07 08 09 OAOBOCODOEOF0500 FF8040004080FF

MOVMOVMOVMOVCMOVMOVMOVINCMOVJZMOVCJNEMOVMOVLJMPMOVCJNEMOVMOVCLRPOPRETI

41,APO,41A, #OOA,@A+DPTRTL2,ATH2,AT2CON,#04DPTRA,400336A,41A,#80,034140,#00DPTR,#05000341A,41A,#01,034140,#01DPTR,#0500CACC

ASCII-CODE..@.@..

Con el listado de la «tabla de datos» termina este apartado y capítulo dedicado altema del tratamiento de las interrupciones.

Page 223: LE002-Introduccion a Los Microcontroladores

Interrupciones 219

1.

2.

3.

4.

5.

i.Qué es la tabla de vectorizaciones? Ex-plicar el proceso de preparación y ejecu-ción de una rutina de interrupción desdeel instante en que el periférico envía la se-ñal de lATENCION!

iQué es el flag de interrupción? ¿Quénombre recibe el flag de interrupción delTimer 1 y qué posición ocupa en el regis-tro correspondiente? iCuál es el nombrede este registro?

iQué misión tiene el Interrupt Enable Re-gister (IE)? iQué posmem ocupa en elSFR? iCuál es la dinámica de funciona-miento de los b i ts del IE?

iQué condiciones impiden que sea aten-dida una interrupción?

Explicar qué se entiende por borrado por«hardware» y por «software» en una in-terrupción.

6.

7.

8.

9 .

10.

iQué sucede, comúnmente, si estando enejecución una rutina de interrupción seproduce una nueva interrupción de másalta prioridad? ¿De igual prioridad? ¿Demenor prioridad?

¿Qué se entiende por prioridad en elmismo nivel? Indicar en el Microcontro-lador 8052 cuál es el orden de prioridaddentro del mismo nivel.

Explicar de una forma secuenciada la mi-sión de los cuatro bloques diferenciados dela Figura 10.6.

Configurar el Interrupt Priority Register(IP) para que el Timer 2 y las comunica-ciones serie tengan la máxima prioridad.

Diferenciar entre interrupciones internasy externas.

1. En el Ejercicio 10.1, DESPLAO.ASM, rea- el programa y el «hardware» del circuitolizar la siguiente modificación: que la con- para que TH1 se cargue a través de Pl yf iguración inicial de bits (byte) que se des- TL1 de P2; de esta manera se ganará enplazan no sea una constante suministrada precis ión.por programa, es decir, un «uno» y el resto«ceros», por ejemplo, 10000000 B, sino quesea conligurable por el usuario medianteunos interruptores conectados al Puerto PI.

Nota: El algoritmo del programa princi-pal, como se habrá observado, debe sermodificado. Se sugiere, para detectar losextremos del desplazamiento, utilizar uncontador.

2. En el Ejercicio 16.3, DESPLAI.ASM, elvalor de carga de los registros de contaje seefectúa a través de Pl correspondiendo elmismo valor para TH1 y TLl. Modificar

3. En el Ejercicio propuesto número 5 delCapítulo 9, la señal de «parada» prove-niente del pulsador debe ser testeada encada ciclo de programa para detectar suactivación. Por eso la respuesta no es ins-tantánea.

Para evitar este inconveniente, que en elejercicio no tiene importancia desde unpunto de vista práctico, se aconseja tratarla acción de parada mediante una inte-rrupción (INTO o INTI). La rutina deatención a la interrupción deberá encar-garse de desactivar el sistema y dejarlo listopara un nuevo ciclo de funcionamiento.

Page 224: LE002-Introduccion a Los Microcontroladores

220 Introducción a los Microcontroladores

4. Generalmente un proceso tiene múltiplesinterrupciones externas. Imaginar que tieneocho interrupciones provenientes de otrastantas alarmas externas (de presión, tem-peratura, caudal, etcétera), y para cada unatiene asociada una rutina de interrupción.

Explicar cómo procedería a la conexiónde las alarmas al microcontiolador y hacerun esquema de cómo sería el programa.

Nota: Considérese que realmente sólo setienen dos interrupciones externas, activaspor flanco descendente, INTO e INTl. Sesugiere utilizar una para detectar la inte-rrupción y las ocho alarmas se podrían leerdesde...

5. Realizar el ejercicio anterior de dos formasdiferentes:

a) Testeando en cada ciclo de programalas ocho alarmas con este orden de priori-dad:0,1,2,3,4,5,6~7.

b) Tratando cada alarma como una in-terrupción y también con prioridad, de talforma que estando en ejecución la rutinaasociada a la alarma 5 se activase la 1,dejaría de ejecutar la rutina 5 cuando noexista peligro para el proceso, y comenza-ría la atención de la rutina 1; cuando ter-minase ésta, concluiría la rutina 5 ante-riormente iniciada.

Además, tanto en un caso como en otrose harta sonar una alarma sonora y por unpuerto se indicaría qué alarma se ha acti-vado. Se sugiere uti l izar un conversar B C Dde siete segmentos para conectarle a la sa-l ida del puerto un disp lay .

6. En otro orden de ejercicios, se propone elcorrespondiente al diálogo con interrup-ción entre un periférico, por ejemplo unaimpresora, con un microcontrolador queactuaría como un ordenador clásico.

Se trata de un periférico receptor de da-tos. Cuando el periférico está preparado

para recibir un carácter (byte) envía unainterrupción al microcontrolador, ésteabandona su tarea principal (se puede ele-gir cualquier ejercicio para mantener ocu-pado el microcontrolador), toma un carác-ter de la tabla y lo coloca sobre el PuertoPO, al mismo t iempo que envía una señal ,por ejemplo, poniendo a «l» el pin P1.0,para indicar al periférico que tiene un datolisto para leer. Una vez procesado este datopor el periférico, éste envía una nueva in-terrupción para obtener un nuevo carácter,y así sucesivamente hasta que el microcon-trolador envía un carácter de control queindique el final de la transmisión. La Figu-ra 10.12 ilustra el ejercicio.

Figura 10.12.

Nota: Se pueden simular múltiplestransmisones de este tipo, y aunque pri-mitivas y carentes de eficacia ilustran eltrabajo de las interrupciones. Se puede uti-lizar como periférico otro microcontrola-dor con un programa adecuado al tipo deperiférico que se desee simular. Tambiénsería interesante realizar una transmisión«duplex» en paralelo utilizando otro mi-crocontrolador; se deberá cargar en ambosel programa de transmisión y recepción. Nodeben olvidarse las l íneas de diálogo.

El Capítulo 12 trata de la comunicaciónserie según protocolos estándar, que seidentif ica mejor con las que se uti l icen ha-bitualmente.

Page 225: LE002-Introduccion a Los Microcontroladores

Implementación de la aplicación en los Microcontroladores 8052/8051

8052/5 1

P O . O

‘-&:

1. C=180KZ

PO.l y

1 F-R=4K’7

C= 180K

CANAL 0

DscILoscoPIo

CANAL 1

2 2 3

Figura ll .2.

El troceado es función del Timer 0, que actuará con «autor-recarga» (Modo 2) con unvalor constante de recarga de 200 CLS ((FF+l)H - C8H = 38H) y la anchura del pulsodependerá del Timer 1 trabajando en Modo 1, los valores que determinan el ancho delpulso los toma de una tabla con que se estableció, previamente, la relación (elongaciónde la onda - ancho del pulso).

La Figura ll .3 representa la décima parte de la semionda positiva. La semionda ne-gativa tendrá el mismo aspecto, salvo que los impulsos serán negativos, es decir, estaránpor debajo de la línea de referencia.

-----200 /LS 200 ,L¿s 200 /LS 200 /Js 200,us ’

z 1 0 0 div./periodo = 20000ps -----------e

Figura 11.3.

Page 226: LE002-Introduccion a Los Microcontroladores

2 2 4 Introducción a los Microcontroladores

La Figura ll .4 representa con puntos el troceado de la onda completa. Obsérvese quela separación en el tiempo entre punto y punto es de 200 PS.

I

iI) . . .i ,:. . . .

:.

: . .

. 2@0 yS/dic

Figura 11.4.

?? Mapa de memoria

Esta aplicación se ha realizado para que pueda ser implementada tanto en un 8052como en un 805 1. Por esta razón se utilizan los primeros 4 K de memoria interna y lostimers y registros son comunes para ambos microcontroladores.

La Figura ll .5 muestra el mapa de memoria de la aplicación. En la parte baja de lasdirecciones de memoria se encuentran las vectorizaciones de las rutinas, a continuaciónel programa principal (posmem 0200H) y la rutina de retardo (posmem OsOOH), las ru-tinas de las interrupciones (0900H) y (OCOOH), y la tabla de datos (OEOOH) completan elmapa.

Page 227: LE002-Introduccion a Los Microcontroladores

Implementación d e l a a p l i c a c i ó n en los Microcontroladores 8052/8051 225

II IRUT.INT.TIMERQ

' INTERRUPCIONES

pi 0200H> I N I C I A L I Z A C I O N

VECTORIZACION

JMP 0200H

Figura ll .5

?? Flujogramas

El flujograma que se muestra a continuación corresponde al programa principal(AB1 lOO.ASM), que tiene como objetivo principal la inicialización y el envío de una se-ñal «parpadeante» por el bit P0.3, que indica que el sistema está en marcha.

Page 228: LE002-Introduccion a Los Microcontroladores

Introducción a los Microcontroladores

CARGAR TABLA

VECTORIZAR:; (OOOOH); (OOOBH); (001 BH)

HABILITAR INTE.:*TIMERO*TIMERl

DPTR <-- OEOOH

PROGRAMAR TIME%:

TMOD <-- 12H

TH0 < -- 38H

TCON <-- 10H

Es la misma del ejercicio 7.5 (RETARO.ASM)

R U T I N A R E T A R D O

Page 229: LE002-Introduccion a Los Microcontroladores

CAPITULO

Implementación de la aplicaciónen los Microcontroladores8052/8051

ll .l. INTRODUCCION

En el Capítulo 1 se describía la operación de grabar, verificar, proteger y ejecutar la in-formación (programa) en/desde la EPROM del microcontrolador. Este capítulo pre-tende, desde un punto de vista más práctico, orientar al usuario.

Se persigue que la explicación abarque todo el proceso de la forma más didáctica po-sible. Se realizará el planteamiento del problema, la depuración y una vez el programaoptimizado se grabará en la memoria EPROM del microcontrolador. Estas operacionesserán descritas ampliamente a lo largo de este capítulo.

La aplicación a desarrollar en el microcontrolador es la siguiente: Se trata de generaruna onda senoidal de frecuencia 50 Hz modulando en el tiempo la anchura de un pulsode amplitud constante.

Las operaciones secuenciadas a realizar son éstas y se estudian en los siguientes apar-tados:

1 . Conversión del archivo (programa de la aplicación) ejecutable en el emulador de ex-tensión .HEX en archivo ejecutable en el microcontrolador .BIN (Apartado ll .3).

2 . Cargar el programa en el bu& del grabador de memorias habiendo seleccionadopreviamente el fabricante y el tipo de microcontrolador (Apartado ll .4).

3 . Efectuar a renglón seguido la operación de «grabación» y «veriIicación» en la me-moria del microcontrolador (Apartado ll .4).

4 . Operación de «protección» del programa grabado en la EPROM, mediante la «ca-dena de encriptaciómk y los «bits cerradura» (Apartado ll .5).

5 . Realizar las conexiones pertinentes, según la aplicación y puesta en marcha me-diante el impulso en el pin RESET (Apartado 11.6).

221

Page 230: LE002-Introduccion a Los Microcontroladores

222 Introducción a los Microcontroladores

ll .2. APLICACION

W Descripción

El objetivo es tener una onda senoidal en la salida de 50 Hz y amplitud constante mo-dulando la anchura de los impulsos; la semionda positiva se obtiene en el pin PO.0 y lanegativa en el pin PO. 1 del Puerto 0 (PO) del microcontrolador. Esto se hace así para po-der excitar un puente de transistores HEXFET TRANSISTOR N-CHANNEL IRF 740y obtener en la carga la onda senoidal. En la Figura ll. 1 se observa cómo la salida PO.0excita la diagonal principal del puente y la salida PO. 1 la diagonal secundaria.

El pin PO.3 se utiliza como señalización llevando la salida sobre un led «parpa-deante» que indica que el programa está en «marcha» (Figura ll. 1).

v

8052/51

OPTO

i

OPTO!-P0.3- L E D

PARPADEANTE

lDIAGONAL SECUNDARIA -4

Figura 11.1.

Para observar el funcionamiento del programa no es preciso construir el «puente detransistores», basta con colocar a la salida de los pina PO.0 y PO. 1 un filtro RC (Figu-ra 11.2).

El troceado de la onda para la modulación del ancho del pulso (PWM) se estableceen 100 divisiones por período que corresponde a 200 microsegundos por división.

En la Figura ll .3 se observa cómo se efectúa el «troceado», siendo la anchura delpulso dependiente de la elongación de la onda alterna.

Page 231: LE002-Introduccion a Los Microcontroladores

Implementación de la aplicación en los Microcontroladores 8052/¿?051 2 2 7

Los dos flujogramas siguientes corresponden a las dos rutinas de interrupción Timer 0y Timo 1. La primera se encarga de borrar la interrupción Timer 0, que se pone en mar-cha desde el programa principal, además carga el Timer I y lo pone en marcha con elvalor de la tabla y decide si la señal debe salir por el pin PO.0 (diagonal principal delpuente) para obtener la semionda positiva o por el pin PO. 1 para obtener la semiondanegativa. La segunda rutina (Timer 1) desactiva el pulso cuando finaliza la temporiza-ción del Timer 1 y decide si debe iniciar la tabla por finalización del semiperíodo o sim-plemente incrementar el puntero de tabla para tomar el siguiente valor. Una explicaciónmás detallada se encuentra en los comentarios del programa fuente.

Ambas rutinas pertenecen al archivo ABITI lOO.ASM.

INTE. TIMERO

J

BORRAR INTERRUPTIMERO

+

ACC <-- OOH

ACC <-- @A+DPTR ; Leer dato TABLA

TH1 <-- FFH

PO.0 <-- “1”

PO. 1 <-- “0”PO.0 <-- “0”

PO.1 <-- “1”

ARRANCAR TIMERI

BORRAR INTERRU

PO.0 <-- “0”

PO. 1 <-- “0”; D e s a c t i v a r p u l s o .

NO

DPTR <-- OOH INCREMENTAR DPTR

N O

v

AUX <-- 0 1 H AUX <-- OOH

k k

clRETI

(53RETI

Page 232: LE002-Introduccion a Los Microcontroladores

228 Introducción a los Microcontroladores

?? Programas fuente

TITLECOMMENT

SYMBOLSCODE

TIMERO EQUTIMERl EQURETARDO EQUSTART EQUAUX EQU

GENERADORDEONDASENOIDAL. ABIlOO.ASM*Onda senoidalal75% de suvalorreal.lOO DIV./PERIODO.Máximaanchuradepulso200 microseg.11.6.91

*ON

0900HOCOOHOEOOH0200H61H

; Comienzo rutina interrupción Timer 0.; Comienzo rutina interrupción Timer 1.; Comienzo rutina RETARDO.; Comienzo programa.; Variable representativa del semiciclo...* a procesar.> . . .

ORIGIN OEOOH ; Comienzo de la TABLA duración de pulsos..BYTE FBH,F2H,ESH,DFH,DGH,CDH,C4H,BCH,B4H,ACH,A4H,9DH,96H,9OH.BYTE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.BYTE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.BYTE BCH,C4H,CDH,D6H,DFH,EgH,F2H,FBH

; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ORIGIN OOOOH ; Vectorización RESET.JMP START

; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ORIGIN OOOBH ; Vectorización Timer 0.JMP TIMERO

._-______--------- ------------------------------ORIGIN OOlBH ; Vectorización Timer 1.JMP TIMERl

.-----------------------------------------------ORIGIN 0200H ; Programa de inicialización.MOV AUX, #OO ; Inicializar semionda positiva.MOV IE, #8AH ; Activar interrupciones Timer 0 y Timer 1.MOV IP, #08H ; Máxima prioridad a las interrup. Timer 1.MOV PO, #OOH ; Puerto a «cero».MOV DPTR,#OEOOH ; Inicializar puntero de TABLA.MOV TMOD,#12H ; Timer 0 en Modo 1 y Timer 1 en Modo 2.MOV TLO, #38H ; Se carga el Timer 0 para un ciclo de pulso . . .MOV THO, #38H ; . . . de 200 microseg.MOV TCON,#lOH ; Se arranca el Timer 0.

SALO: SETB PO.3 ; El pin PO.3 en intermitencia, según . . .CALL RETARDO ; . . . rutina de RETARDO, como indicador de . . .CLR PO.3 ; . . . funcionamiento del sistema.CALL RETARDOJMP SALO

; ------ ___----------------------------------- - - -ORIGIN OEOOH ; Rutina de retardo para intermitente P0.3.MOV RO, #03H

SALl: MOV Rl, #20HSAL2: MOV R2, #FFH

Page 233: LE002-Introduccion a Los Microcontroladores

lmplementación de la aplicación en los Microcontroladores 8052/8051 229

SAL3: DJNZ R2, SAL3DJNZ Rl, SAL2DJNZ RO, SAL1RETEND

TITLE GENERADORDEONDASENOIDAL. ABITIlOO.ASMCOMMENT * Tratamientodelas interrupcionesdel Timer Oy 1.

Versión 1.100 Impulsos/período. (11.6.91)*

SYMBOLS ONCODE

AUX EQU 61HORIGIN 0900HANL TCON,#DFHMOV A, #OOHMOVe A, @A+DPTRMOV TLl, AMOV THl, #FFHMOV A, AUXJNZ SAL4SETB PO.0CLR PO.1JZ SAL5

SALI: SETB PO.1CLR PO.0

SAL5: ORL TCON, #40HRETI

;------------------ORIGIN OCOOHPUSH AMOV A, PSWPUSH AANL TCON,#7FHCLR PO.0CLR PO.1MOV A, DPLCJNE A,#31H,SALóMOV DPTR,#OEOOHMOV A, AUXJNZ SAL7MOV AUX, #OlHJZ SAL8

SAL7: MOV AUX, #OOHJNZ SAL8

SAL6: INC DPTRSAL8: POP A

MOV PSW, APOP ARETIEND

; Interrupción Timer 0.; Borra interrupción Timer 0

; Lee dato TABLA.; Carga Timer 1.

; Determina semiciclo posi t ivo o negat ivo.

; Activa diagonal principal del puente.

; Activa diagonal secundaria del puente.

; Pone en marcha Timer 1.

--_--------------------------; Interrupción Timer 1.

; Borra interrupción Timer 1.; Desact iva pulso.

; Determina si es FIN de TABLA.

; Si es FIN de TABLA inicializa semiciclo.

; Si no es FIN de TABLA lee s iguiente dato.

Page 234: LE002-Introduccion a Los Microcontroladores

230 Introducción a los Microcontro/adores

11.3. CONVERSION DEL ARCHIVO.HEX EN EL ARCHIVO.BIN

Como se ha venido realizando hasta ahora, el archivo .ASM se «ensambla» y se obtieneel archivo.OBJ; se «enlaza» y se obtiene el archivo.HEX. Este archivo programa es eje-cutable en el sistema emulador, pero no es suficiente para poder grabarlo en la memoriainterna del microcontrolador y ejecutarlo. La operación de convertir un archivo .HEX enun archivo «ejecutable>) por el microcontrolador .BIN, la realiza otro archivo denominadoHEXBIN.EXE, que viene en el software del «grabador de memorias».

En el proceso de enlazado se obtiene un archivo .HEX, como se ha dicho, y se leasigna un nombre apropiado a la aplicación, como es: ONDA.HEX.

Esta es la operación de enlazado (linker) para los dos archivos de la aplicaciónAB1 lOO.OBJ y ABITI lOO.OBJ, tal como se ha realizado en capítulos anteriores.

C:> LINK

2500 A.D. Linker Copyright (C) 1985 - Version 4.05a

Input Filename : ABIlOO.OBJEnter Offset For 'CODE' : 0

Input Filename : ABITIlOO.OBJEnter Offset For 'CODE' : 0

Input Filename :

output Filename : ONDA.HEX

Library Filename :

Options (D, P, S, A, M, N, 2, X, H, E, T, 1, 2, 3, <CR> = Default) :

Linker Output Filename : ONDA.HEXDisk Listing Filename : <None Specified>Symbol Table Filename : <None Specified>

Link Errors : 0 Output Format : Intel Hex

A continuación se realiza la conversión:

HEXBIN.EXEONDA.HEX > ONDA.BIN

ONDA.BIN es el archivo grabable y ejecutable desde el microcontrolador.Este es el proceso:

C:\EXPRO-60>IiEXBIN.EXE

Sunshine Hex to Binary converter V2.3(C)Copyright 1988 By Sunshine Electronic Co.,Ltd.

Input HEX file name: ONDA.HEXOutput BIN file name[ONDA.BIN]:HEX file format<I>ntel /<M>otorola /<T>ektronics/<X>TI SDSMAC [1] : 1

Page 235: LE002-Introduccion a Los Microcontroladores

Implementación de la aplicación en los Microcontroladores 8052/8051 231

Wait...INTELHextoBinaryconverterConvertcomplete

C:\EXPRO-6O)DIRONDA.X

ElvolumenenlaunidadCtieneetiquetaDOS400Elnúmerode serie delvolumenes 2DIC-07ClDirectoriodeC:\EXPRO-60

ONDA HEX 585 23/06/91 13:55ONDA BIN 3634 23/06/91 0:05

2 Archivo(s) 26572800 bytes libres

11.4. CARGA DEL PROGRAMA-EJECUTABLE EN EL «BUFFER»DEL SISTEMA GRABADOR DE MEMORIASY GRABACION DE LA MEMORIA

El sistema grabador que se utiliza en este caso no es «autónomo»; forma parte de losgrabadores que actualmente se comercializan con gran profusión de marcas y de preciosasequibles. Consta de una tarjeta que se conecta a los slots del bus PC (Computador Per-sonal) y un mazo de cables unen la tarjeta con el zócalo de «inserción nula»; de estaforma, la memoria o el microcontrolador quedan unidos al hardware del PC. El softwareresulta bastante «amigable», por lo que la operación de grabar una memoria, como puedeapreciarse a continuación, es fácil.

Se llama al programa PGM5 l..., y el menú que aparecerá en pantalla será el si-guiente:

SUNSHINE Device ProgrammerMODEL: EXPRO- (C)1991MPU 8751 section V3.07'----------- Main Menu -----_--_-1. DOS SHELL2. Load BIN file to buffer3. Save buffer to disk4. Edit buffer 7. Display buffer5. Change I/O base adr. of SAC-101A6. Display loaded file history

*MFG: INTEL * TYPE: 8752BH

r current Encryption codeOO-OF: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFlo-1F: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

T. Type select M. Manufacturer select2. Modify target zoneB. Blank check D. DisplayP. Program A. Auto(B&P)R. Read V. VerifyC. Compare & display errorL. Program lock bitE. Program encryption codeQ. Quit-------------_--_- --_-______-Allocation buffer sise : 64K BytesStart address at 3Ell:OOOO

Select which function?

Page 236: LE002-Introduccion a Los Microcontroladores

2 3 2 Introducción C I los Microcontroladores

Hay grabadores de memoria «autónomos» que también permiten la conexión con elPC a través del puerto de comunicaciones serie, por lo que se puede operar de una formasimilar a la que se indica a continuación.

El grabador y el resto de los aparatos que se han utilizado para implementar la apli-cación en la memoria del microcontrolador se referencian al final del Apéndice D.

La primera operación es seleccionar el fabricante (opción M) y el tipo de microcon-trolador (opción T), en este caso:

* MFG: INTEL *TYPE: 8752BH

que aparecerán en la línea superior-derecha de la pantalla.La siguiente operación es cargar el archivo programa ONDA.BIN en el buffet-

(opción 2) y si quiere, puede almacenar el contenido del buffer en el disco (opción 3). ElMenú que aparecerá en pantalla será el siguiente:

C: \EXPRO-óO\*.*

INSTALL.BAT

<DIR> 01-01-80<DIR> 01-01-80<DIR> 01-01-80

282 06-25-901154 06-25-90

EPP512.EXE 59670 11-30-90EPP1024.EXE 62032 11-20-90BPPGM.EXE 54914 08-15-90PGM48.EXE 48144 03-26-91PGM51.EXE 60366 04-08-91READMEl.DOC 6416 07-01-90PGMZE.EXE 49204 03-26-91PALPl.EXE 69924 10-17-90PALP3.EXE 48076 08-01-90PALP5.EXE 48098 10-19-90FPLPl.EXE 64766 12-24-90PALPQ.EXE 59820 08-03-90PALPZ.EXE 51744 08-01-90

* MFG: INTEL * TYPE: 8752BH

LOAD :

i

File name: ONDA.BINLoad address : 0Loading...Ok ! END ADR. : E31

Press any key to continueOr press <CR> to back to main menu

Command: Tab PgUp PgDn Up Down Esc Enter Ctrl-Driver

Para mayor seguridad compruébese que el contenido del buffer es satisfactorio. Paraesta comprobación se pulsa la (opción 7) y si algo no es correcto se puede modificar conla (opción 4). Claro está que para modificaciones grandes se deberá trabajar con el ar-chivo fuente, en este caso ONDA.ASM, y volver a recorrer todo el camino, es decir, en-samblar, enlazar, convertir el .HEX en .BIN y cargarlo finalmente en el bufir.

La (opción 4) permite múltiples operaciones, como se observa en el siguiente menú.

Page 237: LE002-Introduccion a Los Microcontroladores

lmpkmentación de la aplicación en los Microcontroladores 8052/8051 2 3 3

C:\EXPRO-óO>

EDITING COMMAND SUMMARY==========r===================-==E=================D [start],[end] <RETURN> : DUMPE START <RETURN> : EDITM start,end,destination <RETURN> : MOVE BLOCKF start,end,data <RETURN> : FILL BLOCKP start,end <RETURN> : PRINT BLOCKC start,end <RETURN> : CHECK SUMS start,end,ASCII data <RETURN> : ASCII SEARCH MAX.B start,end,BINARY data <RETURN> : BINARY SEARCH MAX.. filename [argul] [argu2]...<RETURN> : SHELL? <RETURN> : HELPQ <RETURN> : QUIT===============================================* The information listed below is for referente only :The absolute start address of BUFFER : 3Ell:OOOOThe Buffer size : 64 K BYTES

15 characters7 BYTES

Así, por ejemplo, con la opción DUMP se puede ver el contenido del bzlffer (comoen la opción 7), con la ventaja de poder delimitar la zona de memoria a visualizar. Estaes la disposición del programa en la memoria del buffer, que será una copia exacta a comose vería en la memoria EPROM del microcontrolador una vez grabada.

Esta es la zona de vectorizaciones...(Recuérdese, RESET (OOOOH), Timer 0 (OOOBH) y Timer I (OOlBH).

==Press <ESC> to terminate display

00000 4100 OO OO OO OO OO OO-OO OO OO 02 09 OO OO OO A...............00010 oooooooooooooooo-ooooooo2ocoooooo . . . . . . . . . . . . . . . .

El programa de inicialización...

cc

Press <ESC>toterminatedisplay

00200 75610075A88A75B8-0875800090OE0075 ua.u..u..u.....u00210 8912 75 8A38 75 8C38-75 8810D2 8312 08 OO :.u.~u.~u.......00220 C283120800411B00-0000000000000000 . . . . . A . . . . . . . . . .

La rutina de RETARDO...

cc

Press <ESC>toterminatedisplay

00800 7803 79207AFFDAFE-D9FAD8F622000000 x.y z ..*.... "...

Page 238: LE002-Introduccion a Los Microcontroladores

234 Introducción a los Microcontroladores

La interrupción Timer 0.. .

==Press <ESC>toterminatedisplay

00900 53 88DF74 OO 93 F5 8B-75 8DFFE5 6170 06D2 S..t....u...ap..00910 80C2816004D2 81C2-8043 884032000000 . ..".....C.@z...

La interrupción Timer I...

==Press <ESC>toterminatedisplay

OOCOO COEOE5DOCOEO5388-7FC280C281E582B4 . . . . . . S . . . . . . . . .OOClO 311190OE00E56170-0575610160 06 7561 l.....ap.ua.'.uaooc OO 70 OlA DOEO F5DO-DOEO 32 OO OO OO OO OO .p........ . . . . .2

La tabla de DATOS...==Press<ESC>toterminatedisplay

OOEOO FBF2E9DFD6CDC4BC-B4ACA49D96908984 . . . . . . . . . . . . . . . .OOElO 7F7A76 73 70 6E 6C6B-6A6A6B6C6E 70 73 76 .zvspnlkjjklnpsvOOE20 7A7F848990969DA4-ACB4BCC4CDD6DFE9 z...............OOE30 F2FBOOOOOO OO OO OO-OO OO OO OO OO OO OO OO . . . . . . . . . . . . . . . .

Como se puede observar, en la columna de la izquierda se encuentran las posicionesde memoria.

En este instante puede realizar la operación de GRABAR la memoria interna de pro-gramas del microcontrolador. Para llevarla a cabo, se pulsa la (opción P). También sepuede hacer con la (opción A), que realiza una revisión previa dé la memoria para ver sipreviamente estaba grabada (blank che&). El contador recuadrado en el ángulo superiorderecho de la pantalla indica los bytes programados (obsérvese cómo el tiempo que ne-cesita para «graban> es muy superior al necesario para «leer», como quedó reflejado enla teoría). Una vez programada la memoria, el equipo realiza, automáticamente, la ope-ración de verificación comparando lo que hay en el bufJèr con el contenido de la me-moria del microcontrolador. No obstante, siempre se podrá comprobar lo que hay en elbuffer (recuérdese que puede grabarlo como archivo en un disco) con el contenido de lamemoria EPROM utilizando la (opción V).

11.5. PROTECCION DEL PROGRAMA

Como se explicó en el Capítulo 1, existe un sistema complejo de protección que permitesalvaguardar el programa de la lectura del mismo por personas no autorizadas.

En el menú principal aparece al pulsar la (opción L) la programación de los lock bits(bits cerradura o cerrojo), que programados ambos impedirían la lectura y verifica-ción de la memoria de programas, de tal forma que, al leer la memoria (opción R), el

Page 239: LE002-Introduccion a Los Microcontroladores

Implementación de la aplicación en los Microcontroladores 8052/8051 235

bt@zr mostraría «todo unos» (FFH), como si la memoria no estuviera programada, perono permitiría grabarla, salvo que se borrase previamente con «luz ultravioleta».

Esto lo podemos comprobar en el siguiente menú.

SUNSHINE Device ProgrammerMODEL: EXPRO- (C)1991

*MFG: INTEL * TYPE: 8752BH

4. Edit buffer 7. Display buffer5. Change I/O base adr. of SAC-1OlA OO-OF:6. Display loaded file history r current Encryption code

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFlo-1F: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

T. Type select M. Manufacturer select2. Modify target soneB. Blank check D. DisplayP. Program A. Auto(B&P)R. Read V. VerifyC. Compare & display errorL. Program lock bit 'E. Program encryption codeQ. Quit_-___--_-----------------------Allocation buffer sise : 64K BytesStart address at 3Ell:OOOO

r program Lock bit:

Y : Al1 lock bits1 : lock bit 12 : lock bit 2

Select which number (Y/1/2/<CR>)?Y

Programming now...ok

Select which function ? L

La otra opción de protección (opción E), que podría sumarse a la anterior, es la pro-gramación de la «cadena de encriptaciórw que, sin programar, muestra en su 32 bytes elvalor FFH, como se muestra en el siguiente menú. En el recuadro inferior se puedenobservar las cuatro opciones y en la última tila la cadena que se ha utilizado para pro-teger el programa de aplicación ONDA.ASM.SUNSHINE Device ProgrammerMODEL: EXPRO- (C)1991MPU 8751 section V3.07----------- Main Menu ----_--__-1. DOS SHELL2. Load BIN file to buffer3. Save buffer to disk4. Edit buffer 7. Display buffer5. Change I/O base adr. of SAC-101A6. Display loaded file history

*MFG: INTEL * TYPE: 8752BHTARGETZONE

0000adr: 1FFF

check sum: 59A9Device start adr: 0000

r current Encryption codeOO-OF: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFlo-1F: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

program Encryption code:

1 : Edit Encryption code 3 : Load Encryption code2 : Program Encryption code 4 : Save Encryption code

Select which number (1/2/3/4<CR>)?

Select which function ? E

Page 240: LE002-Introduccion a Los Microcontroladores

236 Introducción a los Microcontroladores

Si se programara la cadena de encriptación y no estuviesen los lock bits programados,al efectuar la lectura del programa (opción R) se cargarían en el buffer códigos aleatoriosirreconocibles para el usuario, salvo que conociese la cadena de encriptación y la cargasepreviamente, con lo que obtendría el programa tal como se diseñó.

Se recuerda al lector revise el Capítulo 1 en donde se explican los conceptos en quese basa este sistema de protección.

En el siguiente menú se puede observar la operación de editar (opción 1) la cadenade encriptación donde se han introducido unos valores aleatorios. La siguiente opciónsería programarla (opción 2), por lo que el programa, al leerlo, aparecería totalmentecambiado, salvo que previamente cargara (opción 3) la cadena de encriptación.

SUNSHINE Device ProgranunerMODEL: EXPRO- (C)1991MPU 8751 section V3.07----------- Main Menu ----------1. DOS SHELL2. Load BIN file to buffer3. Save buffer to disk4. Edit buffer 7. Display buffer5. Change I/O base adr. of SAC-1OlA6. Display loaded file history

*MFG: INTEL * TYPE: 8752BH

p-E$;~'~~

r current Encryption codeOO-OF: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFlo-1F: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

program Encryption code:

1 : Edit Encryption code 3 : Load Encryption code2 : Program Encryption code 4 : Save Encryption code

Select which number (1/2/3/4<CR>)?l

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10123456789ABCDEF0123456789ABCDEF

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:232343434567896543212344544326789A5F3E456AE3E34127456 D65E3A234F

Select which function ? E

ll .6. EJECUCION DEL PROGRAMADESDE EL MICROCONTROLADOR

Hasta ahora los programas se escribían, ejecutaban y depuraban desde el sistema emu-lador; cuando los resultados sean los esperados, dicho programa debe grabarse en el mi-crocontrolador, tal como se ha indicado en este capítulo. Por tanto, sólo nos resta, y conesto finaliza el Capítulo ll, conectar el microcontrolador a la tarjeta de aplicación, comose indica en la Figura ll .6.

Para que la aplicación sea didáctica se ha dispuesto de una señal de reloj externa (véaseFigura 1.6) de manera que variando la frecuencia pueda sacar otras conclusiones.

Page 241: LE002-Introduccion a Los Microcontroladores

Implementación de la aplicación en los Microcontrolodores 8052/8051 237

t>Z C. Maquina

Seìlal externa

Figura ll .6.

Para conseguir el impulso de reset y así arrancar el sistema, puede usar el circuito dela Figura 8.6. Para un RESET automático, al aplicar tensión al circuito, utilizar el cir-cuito de la Figura 2.13.

1. Indicar y explicar someramente las ope-raciones secuenciadas para implementaruna aplicación en el microcontrolador.

2. iA qué se refieren las tres vectorizacionesde la Figura ll .5?

3. En el flujograma correspondiente a los fi-cheros de programa ABITIlOO.ASM,jcuál es la misión de la variable AUX?

4. Indicar exactamente dónde, cómo ycuándo se arrancan los Timen 0 y 1 e n l aaplicación ABIlOO.ASM.

5. iPara qué se utiliza el fichero HEX-BIN.EXE?

6. Si se encuentra con un programa encrip-tado en la EPROM del microcontrolador,iqué.pasos hay que dar para leerlo?

7. Se tiene el programa perfectamente car-gado en el microcontrolador y compro-bado su funcionamiento sobre el hard-ware de la aplicación con el «emuladom,se aplica la señal de arranque RESET alsistema y éste no funciona, la aplicaciónno se ejecuta. iQué secuencia de compro-baciones habría que realizar para encon-trar el fallo?

Page 242: LE002-Introduccion a Los Microcontroladores

238 Introducción a los Microcontroladores

1. La onda de la Figura ll .4 se obtuvo trasefectuar un hardcopy de la pantalla delmonitor, y esta onda resulta de visualizarlos valores obtenidos en la tabla de datosdel programa fuente (Apartado 11.2.4).Tratar de reproducir lo realizado mediantela confección de un programa uti l izando unlenguaje de al to nivel .

Nota: El procedimiento utilizado fue igualarel área del impulso de la Figura 11.3 con la elon-gación, Figura ll .4, de la onda en ese instante.

2. Completar la aplicación expuesta en estecapítulo realizando un lazo de realimenta-ción de la señal de corriente alterna pre-sente en la carga al microcontrolador. Sepuede proceder de la siguiente forma.

Una vez obtenida la muestra de la señaly rectificada se hace pasar por un conver-tidor A/D para digitalizar la señal y asípuede ser leída por el microcontrolador através del Puerto P2. El siguiente paso escrear el algoritmo para comparar la señalde salida con la ideal (grabada en laEPROM y a la que se ha hecho referenciaanteriormente) y tratar la diferencia (error)con una acción proporcional y acaso inte-gral para corregir la posible desviación dela señal de salida en la carga.

3. Se sugiere realizar aplicaciones múltiples enel campo del control y regulación de velo-cidad de motores, también de las tensionesde sal ida de dinamos y alternadoDres.

La aplicación de este capítulo muestracómo se puede realizar un sencil lo controldigital directo (DDC=Direct Digital Con-trol) por la modulación de la anchura delimpulso (PWM=Pulse Width Modulution),que permitirá variar la tensión 0 intensi-dad media que es la causa de la variaciónde las características de salida de muchosdispositivos. Si, como en el caso anterior,se cierra el «lazo» con un convertidor A/Dy se introduce la muestra de la salida por

un puerto, se puede utilizar el microcon-trolador para dar un curso de regulaciónprobando todo t ipo de algori tmos de accio-nes P (Proporcional), 1 (Integral) y D (De-rivat iva) , así como sus combinaciones.

4. Como ejemplos de aplicaciones que sepueden fácilmente implementar en elcampo del automatismo tenemos:

- Cruce de semáforos.- Reloj digital (la Figura ll .7 puede ser-

virle de ayuda).

r

> H0RA.S

Figura ll .7.

- Aparato de maniobra de ascensores.- Control de máquinas herramientas.- Pasos de peaje.- Regulación continua de nivel y caudal de

líquidos, control de temperaturas, etc.- Automatización de plantas de empaque-

tado y embotel lado.- Etcétera.

Una buena solución es adquir ir a lgún l i -bro de ejercicios prácticos de automatis-mos y más concretamente de autómatasprogramables en donde se encontraránejercicios propuestos y resueltos, que pue-den servir para preparar aplicaciones fácil-mente realizables con los microcontrola-dores.

Page 243: LE002-Introduccion a Los Microcontroladores

CAPITULO

Comunicaciones

12.1. INTRODUCCION

El puerto serie de los Microcontroladores 8052/805 1 trabaja en el modo full-duplex, loque significa que puede recibir y transmitir simultáneamente. Como receptor tiene unbuffer que le permite recibir un segundo byte, antes de que el byte previamente recibidohaya sido leído por el registro receptor. (Sin embargo, si el primer byte no ha sido leídoen el tiempo en que el segundo byte se completa, uno de los dos bytes se pierde.) A los«registros» receptor y transmisor de los puertos serie se accede por un ún&o registro quese denomina SBUF, estando situado en la posmem 99H del SFR (Special Function Re-gister). «Escribiendo» en el SBUF carga el byte a transmitir y «leyendo» del SBUF seaccede al byte recibido.

El puerto serie puede operar en cuatro modos seleccionados utilizando los bit 6 = SM1y bit 7 = SM0 del registro SCON (Apartado 12.3):

??Modo 0: Los datos en «serie» entran y salen a través de la línea RXD. TXD pre-*senta los impulsos de desplazamiento del reloj. La palabra de información a transmitiro recibir es de 8 bits, siendo el primero en salir o en llegar el «bit menos significativo(LSB = bO)». La velocidad de transmisión expresada en baudios (baudio = bits/seg) estádada por la relación l/ 12 de la frecuencia de reloj del microcontrolador.

??Modo 1: Es una comunicación más acorde con los estándares habituales. Utiliza10 bits que son transmitidos a través de TXD o recibidos a través de RXD.

Los bits utilizados tienen la siguiente función:- 1 bit de start (0) (señala el comienzo).- 8 bits de datos (LSB = primero).- 1 bit de stop (1).

La velocidad de transmisión puede ser ajustada por el usuario dentro de un ampliorango.

239

Page 244: LE002-Introduccion a Los Microcontroladores

2 4 0 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

??Modo 2: Transmite a través de TXD y recibe por RXD como en el caso anterior.Utiliza ll bits distribuidos de la siguiente forma:

- 1 bit de start (0).- 8 bits de datos (LSB = primero).- 1 bit de dato (9.” bit) (programable).- 1 bit de stop (1).El noveno bit, en la transmisión, puede ser «OH o «l» y es la imagen del bit TB8 en

el registro SCON. Así, el bit de paridad (P, en PSW) puede ser cargado en TB8 y asig-nado a este noveno bit en la transmisión. En la recepción este noveno bit se refleja en elbit RB8 del registro SCON, mientras el bit de stop es ignorado. La velocidad de trans-misión es programable bien a 1/32 o 1/64 de la frecuencia del oscilador.

??Modo 3: Como en el caso anterior, ll bits son transmitidos a través de TXD orecibidos por RXD, de la siguiente manera:

- 1 bit de start (0).- 8 bits de datos (LSB = primero).- 1 bit de dato (9.” bit).- 1 bit de stop (1).

Como se puede observar, el Modo 3 es igual al Modo 2 excepto en la velocidad detransmisión. En el Modo 3 la velocidad de transmisión puede ser ajustada por el usuariodentro de un amplio rango.

En 18s cuatro modos, la transmisión es iniciada mediante cualquier instrucciónque use el registro SBUF como destino. La recepción se inicia en MODO 0 por lacondición RI=0 y REN=l y en los otros modos Modo 1, 2 y 3, cuando se recibe elbit starf y REN=l.

12.2. COMUNICACIONES EN EL ENTORNO MULTIPROCESADOR

Los Modos 2 y 3 tienen una especial disponibilidad para las comunicaciones en el en-torno multiprocesador. En estos modos se reciben 9 bits de datos, siendo capturado elnoveno para el bit flag RB8 del registro SCON (que se estudia en el siguiente apartado)y finaliza con el bit de stop. El puerto puede ser programado de tal manera que, cuandoel bit de stop se recibe, la interrupción del puerto serie se activará, sólo si RB8 = 1. Estaopción es permitida activando el bit SM2 en el registro SCON. Veamos seguidamenteuna forma de utilizar esta opción en el entorno multiprocesador.

Cuando el procesador «maestro» quiere transmitir un bloque de datos a uno de los«esclavos», primero envía un byte de dirección que identifica el «esclavo». Un byte dedirección difiere de un byte de datos en que el «noveno bit» es «l» en el byte de direc-ción, y «OH en el byte de datos. Con SM2 = 1, ningún «esclavo» será interrumpido porel byte de datos. Un byte de dirección, sin embargo, interrumpirá a todos los «esclavos»,de manera que cada uno pueda examinar el byte recibido y ver si se refiere a su dirección

Page 245: LE002-Introduccion a Los Microcontroladores

C o m u n i c a c i o n e s 2 4 1

para entrar en comunicación con el «maestro». El «esclavo» direccionado borrará el bitSM2 y se preparara para recibir el byte de datos que le será enviado. Los procesadores«esclavos» que no han sido direccionados dejan activo su bit SM2 y continúan sus pro-cesos ignorando el byte de datos que es enviado por el «maestro».

SM2 no tiene ningún efecto en Modo 0, y en Modo 1 puede utilizarse para compro-bar la validez del bit de stop. En una recepción en Modo 1, si SM2= 1, la interrupción dela recepción no se verá activada a no ser que se reciba un bit de stop válido, es decir, anivel alto.

12.3. EL REGISTRO DE CONTROL DEL PUERTO SERIE (SCON)

El registro SCON (Serial Port Control Register) (Cuadro 12.1) es el registro de control yde estado del puerto serie, situado en el SFR. Este registro contiene:

- Modo de trabajo (Modo 0, I,2 y 3) y de selección de velocidad de comunicación.- Noveno bit de dato para transmitir y recibir (TB8 y [email protected] Gestión de interrupciones del puerto serie (TI y RI).

Cuadro 12.1

I SCON

b, b6 bs bd b3 b b, bo[ SM0 [ SMI 1 SM2 1 REN 11 TB8 1 RB8 1 TI\ 1 R I 7

BIT

bo

bl

bd

bi

L

NOMBRE Y COMENTARIO

clR I : Flag de interrupción de la recepción.Se activa por hardware al finalizar la recepción del 8P bit en el Modo 0 o hacia la mitad del intervalo de tiempo delbit de stop en los otros modos (excepto ver SM2).Debe ser desactivado por soflware.

7:T I Flag de interrupción en la transmisión.Se activa por hardware al final de la transmisión del 8.” bit en el Modo 0 o al comienzo del bit de stop en los otrosmodos. *Debe ser desactivado por software.

cl:RB8 En los Modos 2 y 3 es el 9P bit que se recibe.En Modo 1 , si SM2 = 0, RB8 es el bit de stop.En Modo 0 no se utiliza.

c3TB8 Corresponde al 9.’ bit de datos en los Modos 2 y 3 .Es programable por el usuario. Habitualmente es el bit de paridad.

SI RENIRENI’ I,$~RENÍOnola~&~~

I (por so tware permite la recepción

p-J):- En Modo 2 y 3 , Si SM2 = 1 entonces RI no se activará si el 9.” bit de datos (RB8) es igual acero.- En Modo 1, si SM2 = I entonces RI no se activará si el bit de stop no se ha recibido.- En Modo 0 , SM2 debe estar a cero.

Page 246: LE002-Introduccion a Los Microcontroladores

242 Introducción a los Microcontroladores

Cuadro 12.1 (continuación)

SCON

_ bi ba bs b4 h b b, boSM0 1 SM1 1 SM2 1 REN (( TB8 ( RB8 ( TI ( RI

BIT NOMBREYCOMENTARIO

bs-b, )\):SM0 SM 1 Espeafíca el modo según la tabla:

SM0 SM1 MODO DESCRIPCION0 0 0 Desplaza 8 bit0 1 1 8 bit-UART*1 0 2 9 bit-UART1 1 3 9 bit-UART

* UART = Universal Asynchronous Receiver and Transmiter,

VELOCIDADReloj/12Variable

Reloj/64 o reloj/32Variable

12.4. VELOCIDAD DE COMUNICACION

La velocidad en baudios de comunicación en Modo 0 se fija por la relación:

BAUDIOS en Modo 0 =frecuencia oscilador microcontrolador

12

Los baudios en Modo 2 dependen del valor del bit 7 (SMOD) del registro PCON (véaseCuadro C. 1 del Apéndice C) en el SFR. Si SMOD = 0 (valor por defecto después del RE-SET), los baudios son 1/64 de la frecuencia del oscilador-reloj del microcontrolador. SiSMOD = 1 la velocidad de comunicación es 1/32 de la frecuencia del oscilador-reloj delmicrocontrolador, es decir:

2 SMOD

BAUDIOS en Modo 2 = 64 . (frecuencia’oscilador)

En el 8051, los baudios en Modo 1 y 3 son determinados por la relación de «sobre-pasamiento» del Timer 1. En el 8052 la velocidad de comunicación puede ser obtenidautilizando el Timer 1 o el Timer 2 o con ambos (uno para transmi-r y el otro para re-cibir).

í2.4.1. El Timer 1 como generador de baudios

Cuando el Timer 1 es utilizado como generador de baudios, éstos son obtenidos enModo 1 y 3, por el valor de carga y «sobrepasamiento» del registro contador del Timery el valor de SMOD (véase Cuadro C. 1 del Apéndice C) como sigue:

Page 247: LE002-Introduccion a Los Microcontroladores

Comunicaciones 2 4 3

BAUDIOS en 2 SMOD

= . (relación de sobrepasamiento Timer 1)Modos 1 y 3 3 2

El Timer 1 puede ser configurado bien como «temporizadon> o como «contador» yen cualquiera de sus tres modos. Se aconseja, porque así se utiliza en la mayoría de lasaplicaciones, configurarlo como «temporizadon> en modo «autorrecarga» (TMOD e20H). En este caso los baudios vienen dados por la fórmula:

2 SMOD

BAUDIOS en Modos 1 y 3 = 32 . Frecuencia oscilador12 . (256 - (THl))

Se pueden lograr velocidades de comunicación muy bajas con el Timer 1, permi-tiendo la interrupción y configurando el Timer para el contaje con 16 bits (TMOD c-1 OH) y usando la interrupción del Timer para efectuar la recarga sobre el registro de con-taje.

La Tabla 12.1 lista algunas de las velocidades de comunicación comúnmente utili-zadas y cómo pueden ser obtenidas utilizando el Timer 1.

BAUDIOS

Tabla 12.1.

Timer 1FOSC S M O D W MODO VALOR DE

RECARGA

Modo 0 Max: 1 MHz 12 MHz X X X XModo 2 Max: 375 K 12 MHz 1 X X XModos 1,3: 62’5 K 12 MHz 1 0 2 FFH

19’2K 11’059 MHz 1 0 2 FDH s9’6K 11’059 MHz 0 0 2 FDH4’8 K 11’059 MHz 0 0 2 F A H2’4K 11’059 MHz 0 0 2 F4H1’2 K 11’059 MHz 0 0 2 E8H

137’5 K ll’986 MHz 0 0 2 1DH110K 6 MHz 0 0 2 72H1lOK 12 MHz 0 0 1 FEEBH

Así, por ejemplo, para obtener una velocidad de comunicación de 9.600 baudios conel Timer 1 en modo «autorrecarga» como temporizador. Es decir, con el Timer I en Mo-do 2 (Apartado 9.2.3). Si SMOD = 0, y TH 1 c FDH = 253, y aplicando la fórmula:

2 SMoDBAUDIOS en Modos 1 y 3 = 32 . Frecuencia oscilador

12. (256 - (THl))

1 11059. lo3Baudios = 32 . (256 _ 253) . l2 = 9599’83 = 9600

Page 248: LE002-Introduccion a Los Microcontroladores

2 4 4 Introducción a los Microcontroladores

Generalmente, lo que se suele necesitar es conocer el valor de carga del registro TH1en función de la velocidad en baudios y de la frecuencia del oscilador-reloj.

Esta es la fórmula que se debe aplicar:

THl = 256 _ Frecuencia oscilador / xxxVelocidad en baudios

Si SMOD = 0 -+xxx = 384SiSMOD= lbxxx= 192

Así, el registro TH1 debe ser cargado con:

11059 lo3.

TH1 =256- / 384 = - =9600

256 3 253 z FDH

12.4.2. El Timer 2 como generador de baudios

En el 8052 el Timer 2 es configurado como generador de baudios inicializando TCLKy/o RCLK en el registro T2CO.N tal como se indica en el Cuadro 12.2

Cuadro 12.2

b 7 TZCON

RCLK TCLK

b0

RCLK: Flug del oscilador-reloj receptor. Cuando RCLK = 1 utiliza el Timer 2 como relojen el proceso de recepción de los Modos 1 y 3. Si RCLK = 0 utiliza el Timer 1como reloj en la recepción.

TCLK: Flag del oscilador-reloj transmisor. Cuando TCLK = 1 utiliza el Timer 2 comoreloj en el proceso de transmisión en los Modos 2 y 3. Si TLCK = 0 utiliza elTimer 1 como reloj en la transmisión.

Se puede observar a la derecha de la Figura 12.1, que las velocidades en baudios parala transmisión y recepción pueden ser diferentes, según se active RCLK y/o TCLK y asípoder actuar simultáneamente con el Timer 1 y el Timer 2.

El modo «generadon> de baudios actúa de forma similar que el modo «autorrecarga»estudiado en el Capítulo 9. Al producirse el ciclo de «sobrepasamiento» en TH2, los re-gistros de contaje del Timer 2 son recargados con los valores de 16 bits de los registrosRCAP2H y RCAP2L que previamente fueron inicializados por software.

Los baudios en Modo I y 3 son determinados por la relación de sobrepasamiento delTimer 2. De una forma general se pueden expresar así:

BAUDIOS en Modos 1 y 3 =Relación de «sobrepasamiento» Timer 2

16

Page 249: LE002-Introduccion a Los Microcontroladores

C o m u n i c a c i o n e s 2 4 5

OVERFLQWTIMER 1

NOTA: La frecuencia del oscilador estadividida por 2, no por 12.

DETECTOR

r TRAN&ON

I I IRCAPZL RCAPZH

CLOCKRX

CLOCKTX

pin TZEXINTERRUPCION

TIMER 2

1 CONTROL

tI

EXENZL- NOTA: Puede habilitarse como interrupcion externa adicional.

Figura 12.1.

Concretanto, el Timer 2 puede ser configurado bien como «temporizadon> (tiqzer) ocomo «contadon> (cuunter). En la mayoría de las aplicaciones se configura como timer-(C/T2 = 0). La operación como timer en el modo «generador de baudios» es un pocodiferente de la estudiada como «temporizadon> en el Apartado 9.3.2. Normalmente como«temporizador común» el registro de contaje se incrementaba cada ciclo máquina, es de-cir, a 1/12 de la frecuencia del oscilador. Como «generador de baudios» se incrementacada período de estado, es decir, a 1/2 de la frecuencia del oscilador. En este caso losbaudios están dados por la fórmula:

Frecuencia osciladorBAUD1oS en Modos 1 ’ 3 = 32 . [65536 - (RCAP2H, RCAP2L)I

donde (RCAP2H, RCAP2L) es el contenido de dichos registros en formato de 16 bits,como enteros y sin signo.

Un estudio más detallado de la Figura 12.1 indica que para que actúe como «gene-rador de baudios» debe ser RCLK = TCLK = 1 en T2CON, como indica la figura. Elciclo de «sobrepasamiento» en TH2 no activa el flag TF2 ni produce interrupción, as-pecto este que podría darse en los timen del Capítulo 9. Por consiguiente, cuando se uti-lice el Timer 2 como «generador de baudios» no se debe desactivar la interrupción delTimer 2. Obsérvese además que, si EXEN se activa, una transición descendente en elpin T2EX activará elflag de EXF2, pero no causará recarga del Timer 2. Así pues, cuando

Page 250: LE002-Introduccion a Los Microcontroladores

246 Introducción a los Microcontroladores

el Timer 2 se utilice como «generador de baudios», T2EX puede ser empleado, si se de-sea, como un generador de interrupciones externas.

Se aconseja no leer ni escribir los registros TH2 y TL2 cuando el Timer 2 está tra-bajando (TR2=1) como «generador de baudios». Bajo estas condiciones el registro decontaje se incrementa cada período de «estado» y el resultado de una lectura o escriturapuede producir una pérdida de exactitud en la evaluación del tiempo. Los registros RCAPpueden ser leídos, pero no deben ser escritos, puesto que se podría producir solapa-miento en la «recarga» y originar errores de escritura y/o recarga. Si se desean hacer estasoperaciones, desconéctese el Timer 2 (desactivar TR2) antes de acceder al Timer 2 o alos registros RCAP. A continuación describiremos en detalle los cuatro modos de ope-ración.

12.5. COMUNICACIONES EN MODO 0

Este modo se establece desde los bits 6 y 7 (SMO-SMl) de SCON (Véase Cuadro 12.1).Como se ha dicho anteriormente, la entrada y salida de datos en serie se produce a

través del pin IO (RXD) del microcontrolador. El pin II (TXD) es la salida de los pulsosde desplazamiento (Shift Clock). Ocho bits de datos se transmiten o reciben comenzandopor el menos significativo (LSB). La velocidad es fija y corresponde a 1/12 de la frecuen-cia del oscilador del microcontrolador. En la Figura 12.2 se muestra un diagrama sim-plificado y funcional del puerto serie en Modo 0.

Para poder seguir mejor el proceso de comunicación en Modo 0, utilícense los cro-nogramas de la Figura 12.3 al tiempo que se lee el siguiente texto.

La transmisión es iniciada por cualquier instrucción que utiliza SBUF como registrode destino. La señal de «escritura en SBUF» en el estado S6P2, también carga un «l» enla posición novena del registro de desplazamiento de transmisión e indica al bloque con-trol TX que comience la transmisión. El intervalo de tiempo que transcurre desde «laescritura en SBUF» y la activación de la señal de control SEND es igua a un ciclo má-quina completo.

SEND autoriza la salida del dato contenido en el registro de desplazamiento de unaforma alternada a través delpin 10 (RXD = P3.0) y también autoriza la salida de la señalde reloj simétrica (Shift Clock) a través del pin II (TXD = P3.1).

La señal TXD (SHIFT CLOCK) está a nivel bajo durante los estados S3, S4 y S5 decada ciclo máquina, y a nivel alto durante los estados S6, Sl y S2. En la fase S6P2 decada ciclo máquina en el que SEND es activa, el contenido del registro de desplaza-miento transmisor se desplaza a la derecha una posición.

Por cada bit de dato que se desplaza al exterior por la derecha un bit «cero» ingresapor la izquierda. Cuando el bit más significativo (MSB) del byte de datos está en la po-sición de salida del registro de desplazamiento, entonces el « l» que fue inicialmente car-gado en la posición novena se encuentra a la izquierda del MSB y todas las posiciones ala izquierda de éste contienen «ceros». Esta condición previene al bloque de control TXpara que haga un último desplazamiento, desactive SEND y active la señal de interrup-ción TI. Estas acciones ocurren en la fase SlPl del décimo ciclo máquina después de«escribir en SBUF».

La recepción es iniciada por la condición REN=l y RI=O. En la fase S6P2 del si-

Page 251: LE002-Introduccion a Los Microcontroladores

Comunicaciones 247

BUS INTERNO DEL 8052/51I I

I -----.- CONTROL TXS6

AT.TF,RNATTVA--- -__ ------ __-.- _.____.CONTROL RX

START SHIFT1 1 1 1 1 1 1 0

RXD (P3.0)ENTRADA ALTERNATIVA

BUS INTERNO DEL 8052/51

Figura 12.2.

guiente ciclo máquina, la unidad de control RX escribe los bits ll ll ll 10 en el registrode desplazamiento receptor, y en la siguiente fase de reloj activa RECEIVE.

La señal de control RECEIVE autoriza la salida de la señal de reloj simétrica SHIFTCLOCK por la línea TXD. SHIFT CLOCK efectúa la transición en la fase S3Pl y S6Plde cada ciclo máquina. En la fase S6P2 de cada ciclo máquina en que la señal de controlRECEIVE es activa, el contenido del registro de desplazamiento receptor es desplazadoa la izquierda una posición. El bit que ingresa desde el exterior por la derecha es el bitde dato que ha sido muestreado en el pin IO (RXD=P3.0) en la fase S5P2 del mismociclo máquina.

Page 252: LE002-Introduccion a Los Microcontroladores

248 Introducción C I los Microcontroladores

SEND I I RSHIFT rl n n n n n n n N

RXD s a l i d a \ D0X Di x D2 X D3 X X D5 X D6 X /D4 D74

de datosi

NTI I

n Escribe en SCON (limpia RI)

RI1 Il R

RECEIVE I I c>

SHIFT n cRxD(p;,s) ;s5p2 ; ” 8,” ; ” ” ; R

TxD(SHIFT i

Figura 12.3.

Como los bits de datos entran por la derecha, los «unos» cargados inicialmente sondesplazados «afuera» por la izquierda. Cuando el «O» cargado inicialmente se encuentreen el extremo izquierdo del registro de desplazamiento, entonces el bloque de controlRX hace un último desplazamiento y carga SBUF, con el byte ingresado. En el estadoSlPl del décimo ciclo máquina después de la escritura en SCON, la señal de controlRECEIVE es borrada y el flas de interrupción RI es puesto a «l».

12.5.1. Resumen comunicaciones en Modo 0

- Longitud palabra dato: 8 bits. Primero el bit LSB.- Formato palabra dato:

bo bl b2 b3 b4 bs be b

x x x x x x x x

T tLSB MSB

Page 253: LE002-Introduccion a Los Microcontroladores

Comunicaciones 249

- Esquema simplilicado de la comunicación:

DATOSp3.0 '( 10)

8052/51

RECEPTOR

Figura 12.4.

- Velocidad de comunicación:

BAUDIOS = frecuencia oscilador12

- Transmisión Comienza: Escribiendo en SBUFTermina.. Activando j7ag TI

- RecepciónlComienza: Cuando REN = 1 y RI = 0Termina: Activando Jlag RI

?? Objetivos

- Programar el puerto serie como transmisor en Modo 0.- Transmitir por el puerto serie el byte que se introduce en paralelo por el Puerto 0.- Obtener la señal de sincronismo y visualizarla por el pin TXD.

?? Esquema y flujograma

Como se ha indicado en el apartado de objetivos, por la línea RXD se obtiene el byte dedatos que previamente se captura en paralelo por el Puerto 0, como se indica en la Figu-ra 12.5, la señal de sincronismo se obtiene en el pin TXD. El dato que se transmite en elejemplo es AAH.

Page 254: LE002-Introduccion a Los Microcontroladores

2 5 0 Introducción a los Microcontroladores

8052/5 1LJ

b0=0bl=lb2=0b3= 1b4=0b5=1b6=0b7= 1

DATO SERIE

SEÑAL DESINCRONISMO

Figura 12.5.

b7 b0

SM0 1 S M 1 1 S M 2 1REN 1 TB8 1 RB8 1 T I 1 R I

TRANSMISION = 0

RECEPCION = 1

SBUF <-- ACC

Page 255: LE002-Introduccion a Los Microcontroladores

C o m u n i c a c i o n e s 2 5 1

?? Listado del programa

>Z 0200,0216LOC OBJ0200 7598000203 C2AO0205 E5800207 F5990209 D2AOOZOB E598020D 60FC020F C2AO0211 1203000214 c2990216 80ED

DISASSEMBLYCOMPLETED

>2 0300,030cLOC OBJ0300 78010302 79030304 7A050306 DAFE0308 D9FA030A D8F603oc 22

DISASSEMBLYCOMPLETED

LINE LABEL SOURCE CODE0001 MOV SCON, #OO0002 CLR P2.00003 B0205 MOV A,PO0004 MOV SBUF,A0005 SETB P2.00006 B020B MOV A,SCON0007 JZ 020B0008 CLR P2.00009 LCALL 03000010 CLR .TI0011 SJMP 0205

LINE LABEL SOURCE0001 MOV0002 B0302 MOV0003 B0304 MOV0004 B0306 DJNZ0005 DJNZ0006 DJNZ0007 RET

CODERO,#OlR1,#03R2,#05R2,0306R1,0304RO,0302

En la línea 1 del listado anterior se programa el puerto serie en Modo 0 y como trans-misor.

En la línea 2 se inicializa a «cero» el pin 0 del Puerto 2 para que al comienzo de latransmisión se ponga a «uno» como indicador de comienzo de la transmisión (en el cro-nograma adjunto corresponde con la primera señal TBIT 0).

En la línea 3 se captura el dato situado en la entrada del Puerto 0.En la línea 4 se carga el registro SBUF con el dato y, además, esta instrucción da la

orden para que el registro de desplazamiento inicie el envío de datos al exterior por lalínea RXD (en el cronograma adjunto señal TBIT 1).

En la línea 5 se activa el pin P2.0 para indicar que la palabra de dato está a punto desalir por el pin RXD.

En las líneas 6 y 7 se pregunta si el octavo bit ha salido. Se interroga al bit SCON. 1;en este caso basta preguntar si el registro SCON es igual o distinto de «cero».

En la línea 8 se desactiva el bit visualizador de final de transmisión (TBIT 0 en elcronograma).

En la línea 9 se «llama» a una rutina de retardo para espaciar los envíos de infor-mación.

En la línea 10 se borra elJlag de interrupción; si no se hiciera, la transmisión que-daría bloqueada.

La línea ll lleva al contador de programas al principio para enviar un nuevo dato.

Page 256: LE002-Introduccion a Los Microcontroladores

252 Introducción a los Microcontroladores

0 Cronograma

El dato que se transmite corresponde a AAH, como se observa a continuación.

Uavefom Ikpl4.y , , ,

nñgnification b 161

-b XP U HP Dnj to Change Dirplay(tS<+Pl-&t-> t.0 Nove QrsarCHOM) to Chanye Siyngl(SP) to Chanye Maynlflcation ’

?? Objetivos

- Programar el puerto serie como receptor en Modo 0.- Recibir en el puerto serie el byte que se envía desde el exterior por el pin RXD.- Efectuar el tratamiento de la comunicación utilizando interrupciones.

?? Esquema del montaje

En la Figura 12.6 se observa cómo el dato se introduce utilizando un pulsador; la fre-cuencia de captura en el pin RXD es tan elevada que sólo se puede observar la presenciade «unos» o «ceros» en el Puerto 0 de salida.

6052/51L-J

b0

bkb3

b5b6b7

r

RXD

TXDL DATO SERIE

SEiAL DESINCRONISMO

Figura 12.6.

Page 257: LE002-Introduccion a Los Microcontroladores

Comunicaciones 253

En el pin TXD se tendrán ios impulsos de sincronismo que se corresponden con lospulsos de reloj del registro de desplazamiento.

?? Flujograma

Sb7 ’ SCON b0

SM0 1 S M 1 1 S M 2 1 REN 1 T B 8 1 R B 8 1 T I 1 R I

“1” REGE.PCION

R E C E P O . H E X

VECTORIZAR

INTERRUPCION RI

4

H A B I L I T A R

INTERRUPCION RI

INICIALIZAR SCON

?? Listado del programa

El programa se divide en los siguientes bloques:

4-1UARDAR REGISTRO

/

ACC <-- SBUF

R E P O N E R R E G I S T R O

6RETI

1. - Vectorización de la interrupción.

LOC OBJ LINE LABEL SOURCE CODE>Z 0023,0025

0023 020400DISASSEMBLYCOMPLETED

LJMP 0400

Page 258: LE002-Introduccion a Los Microcontroladores

254 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

2. - Habilitar interrupción del puerto serie.- Programar SCON como receptor.

>Z0200,020ALOC OBJ0200 75A8900203 7598100306 1203000209 80F5

DISASSEMBLYCOMPLETED

3. - Rutina de retardo.

>z 0300,030cLOC OBJ0300 78020302 79FF0304 7AFF0306 DAFE0308 D9FA030A D8F603oc 22

DISASSEMBLYCOMPLETED

4. - Rutina de interrupción.

LINE LABEL0001 B0200000200030004

LINE LABEL00010002 B03020003 B03040004 B0306000500060007

SOURCEMOVMOVLCALLSJMP

SOURCEMOVMOVMOVDJNZDJNZDJNZRET

CODEIE,#90SCON, # 1003000200

CODERO,+02Rl,#FFR2,#FFR2,0306R1,0304RO,0302

Realiza las siguientes tareas: 1) Sale del modo de recepción. 2) Salva registros en elstack. 3) Carga el contenido de SBUF‘en el ACC. 4) Visualiza el dato en paralelo en elPuerto PO. 5) Temporiza su visualización. 6) Repone los registros del stack.

>z 0400,041cLOC OBJ0400 7598000403 E80404 COEO0406 E90407 COEO0409 EA040A COEO04oc E599040E F5800410 1203000413 DOEO0415 FA0416 DOEO0418 F90419 DOEO041B F8041c 32

DISASSEMBLYCOMPLETED

LINE LABEL SOURCE0001 MOV0002 MOV0003 PUSH0004 MOV0005 PUSH0006 MOV0007 PUSH0008 M?V0009 MOV0010 LCALL0011 POP0012 MOV0013 POP0014 MOV0015 POP0016 MOV0017 RETI

CODESCON, #OOA,ROACCA,RlACCA,R2ACCA,SBUFPO,A0300ACCR2,AACCR1,AACCRO,A

Page 259: LE002-Introduccion a Los Microcontroladores
Page 260: LE002-Introduccion a Los Microcontroladores

256 Introducción a los Microcontroladores

- 1 bit de start (0).- 8 bits de datos (el primero, el LSB).- 1 bit de stop (1).

En recepción elJug RB8 del registro SCON es la imagen del bit de stop. En el 805 1los baudios vienen dados por la razón de sobrepasamiento del Timer 1. En el 8052, vie-nen dados bien por la razón de sobrepasamiento del Timer 1 o del Timer 2, o de ambos(uno para transmitir y el otro para recibir).

La Figura 12.7 muestra, de forma simplificada, un diagrama en bloques del puertoserie en Modo 1 y la Figura 12.8 presenta el cronograma de las operaciones secuenciadasen el tiempo de la transmisión y recepción.

n n n n nn ESCRIBE EN SBUF

SENDDATA SlP11

SHIFT n n n nTXD \ BSTAR / DC) 1 DI X D2 1 D3 X D4TI

BIT DE STOP

TRANSMISION

RX CLOCK t16 RESETn I n n n n n n n n n n

BIT DE\ START/ DB 1 Dl 1 DZ 1 D3 1 D4 1 D5 1 D6 f D7 /BIT DE STOP

RECEPCION BITS DE MUESTBBOnn~ llni nnfl h?fl r#n nnn Mn nnn nnoSHIFT n n n n n n n n n nRI I

Figura 12.8.

La transmisión se inicia con cualquier instrucción que utilice SBUF como registrodestino. La «escritura en SBUF» también carga un «l» en la posición del noveno bit delregistro de desplazamiento transmisor y alerta a la unidad de control TX que una peti-ción de transmisión ha sido solicitada. La transmisión comienza realmente en la fase S 1 P 1del siguiente ciclo máquina que resulta después del ciclo de sobrepasamiento del conta-dor del timer dividido por 16 (así pues, «el tiempo de bit» está sincronizado por el con-tador divisor por 16 y no por la señal de «escritura en SBUF»).

La primera operación de la unidad de control TX es activar la señal de control SENDque pone el bit de start en el pin TXD. Un tiempo de bit más tarde, la señal DATA seactiva. lo que autoriza la salida del «bit» del registro de desplazamiento transmisor a tra-vés del pin TXD. El primer pulso de desplazamiento ocurre un «tiempo de bit» más tardede la salida del primer bit de dato, como se puede ver en el cronograma.

Como los bits de datos son desplazados al exterior por la derecha, sus lugares sonreemplazados por ceros por la izquierda. Cuando el MSB del byte de datos está en laposición de salida del registro de desplazamiento, entonces el «l», que ha sido inicial-mente cargado en la novena posición, está a la izquierda del bit MSB y el resto de posi-ciones a su izquierda están cargadas con ceros. Estas condiciones alertan a la unidad de

Page 261: LE002-Introduccion a Los Microcontroladores

Comunicaciones 257

control TX para que realice un último desplazamiento y desactive la señal SEND y ac-tive elflag TI (petición de interrupción). Esto ocurre en el décimo ciclo de sobrepasa-miento del contador divisor por 16 después de la instrucción de «escritura en SBUF».

La recepción es iniciada al detectar la transición (flanco descendente) en el pin RXD.Por este motivo este pin es muestreado a razón de 16 veces independientemente de lavelocidad en baudios que haya sido establecida. Cuando una transición ha sido detec-tada, el contador divisor por 16 es inmediatamente puesto a «cero» y el dato 1FFH seescribe en el registro de desplazamiento. Poniendo a «cero» el contador divisor por 16,sincroniza los ciclos de sobrepasamiento con los tiempos de bit entrantes.

Los 16 estados del contador dividen cada (ctiempo de bit» en 16 intervalos. En los esta-dos 7, 8 y 9 de cada «tiempo de bit», el «bit detecton> muestrea el valor de RXD. Elvalor aceptado es el que ha sido leído en al menos dos de las tres muestras. Esto se hacepara rechazar el ruido eléctrico. Si el valor aceptado durante el primer «tiempo de bit»no es «cero», los circuitos receptor son reseteados y la unidad vuelve a alertarse para de-tectar otra transición de flanco descendente. Esto está previsto para rechazar falsos bitsde start. Si el bit de start resulta correcto, se desplaza dentro del registro de desplaza-miento y lo mismo haría con el resto de la cadena de bits.

Como los bits de datos ingresan en el registro de desplazamiento por la derecha, los«unos» son desplazados fuera por la izquierda. Cuando el bit de start llega a la posiciónnovena, la más extrema a la izquierda del registro de desplazamiento, alerta al bloque decontrol RX para hacer un último desplazamiento, carga SBUF y RB8, y activa la señalRI (interrupción). La señal para cargar SBUF y RB8, y para activar RI, se generará si lassiguientes condiciones son satisfechas en el momento en que el pulso final de desplazá-miento se genera:

- 1) RI=O,y- 2) bien SM2=0, o el bit de stop recibido es igual a «l».

Si cualquiera de estas dos condiciones no se cumplen, la cadena de bits se pierde irre-mediablemente. Si ambas condiciones se cumplen, el bit de stop se alojará en elflag RBI,los 8 bits se ubicarán en el registro SBUF, y RI se activará. En este intervalo de tiempo,tanto si las condiciones indicadas se cumplen como si no, la unidad vuelve a muestrearel pin RXD para ver si se produce un flanco descendente.

12.6.1. Resumen comunicaciones en Modo 1

- Longitud palaba dato: 10 bits. Primero el bit LSB.- Formato palabra dato:

START bo b, b2 b3 bq bs bg b, STOP

0 x x x x x x x x\ v ,

LSB DATO MSB

Page 262: LE002-Introduccion a Los Microcontroladores

258 Introducción a los Microcontroladores

- Esquema simplificado de la comunicación:

- Velocidad de comunicación:

?? Modo de carga y sobrepasamiento del Timer 1:2 SMOD

BAUDIOS = ~ .32

(sobrepasamiento)

??Timer 1 como temporizador con «autorrecarga»:

2 SMoDBAUDIOS = 32 +

frecuencia oscilador12. (256 - (THl))

??También utilizando el Timer 2 (véase Apartado 12.4.2).

- TransmisiónlComienza: Escribiendo el dato en SBUFTermina: Activando el flag TI

Comienza: Cuando REN = 1 y se detecta un flanco descendente (bit- Recepción start) en RXD

Termina: Activando el Jlag RI

12.7. COMUNICACIONES EN LOS MODOS 2 Y 3

En esta opción ll bits se transmiten a través de TXD, o se reciben a través de RXD, dela siguiente manera:

- 1 bit de start (0)- 8 bits de datos (el primero el LSB).- 1 bit noveno programable.- 1 bit de stop (1).

En la operación de transmisión el noveno bit de datos es la imagen del bit TB8 per-teneciente al registro SCON, pudiendo asignarle el valor «O» o «l». En recepción el no-veno bit de datos se refleja en el bit de flas RB8 del registro SCON.

La Figura 12.9 muestra el diagrama en bloques del puerto serie en el Modo 2. ElModo 3 presenta el mismo diagrama en bloques que el Modo 1 (Figura 12.7), siendo lasdiferencias mínimas, como se desprende de las explicaciones que siguen a continuación.

El cronograma representado en la Figura 12.10 muestra las operaciones secuenciadasen el tiempo para la transmisión y recepción en el Modo 2 y 3. Las diferencias, como seaclararán en las explicaciones que siguen, residen en la velocidad de comunicación que enel Modo 2 es fija, mientras que en el Modo 3 la velocidad de comunicación es variable.

Page 263: LE002-Introduccion a Los Microcontroladores

Comunicaciones 2 5 9

B U S I N T E R N O 8052/51

TB8

ESCRIBE

FASE 2 DEL RELOJ(% fo,,)

MODO 2

DETECTORTRANSICION

0 DETECTORDE BIT

4'R X D

jSBUF

.-J-J--

L E ESBUF

Y

NOTA: TCLK, RCLK y e l Tima- 2estan p r e s e n t e s s o l o e ne l M i c r o c o n t r o l a d o r 8 0 5 2

+TXD

BUS INTERNO 8052/51

Figura 12.9.

La velocidad de comunicación en Modo 2 se fija a 1/64 de la frecuencia oscilador siSMOD = 0 o a 1/32 de la frecuencia oscilador si SMOD = 1. [El bit SMOD se encuentraen la posición 7 del registro PCON (PCON.7).]

La velocidad de comunicación en Modo 3 es variable y configurable de forma similaral Modo 1, bien utilizando el Timer I o el Timer 2, en el caso de un 8052, dependiendode los bits TCLK y RCLK del registro T2CON.

(Revisar para más detalle sobre la velocidad de comunicación el Apartado 12.4.)

Page 264: LE002-Introduccion a Los Microcontroladores

2 6 0 Introducción a los Microcontroladores

CLOCKnTxn n n n l l n n n n n n

n ESCRIBE EN SBUF

, SEND IDATA %lPl , I

I

SHIFT n n n n n n n nBIT DETXD ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

G E N E R A D O R I JCLOCK RESET +16

I

n RX n n I n n n n n n n n n nRXi? \%g, DO x D1 1 D2 1 D3 f Dz, 1 D5 1 De 1 D7 f RBf,, BIT DE

DETECTOR DE BITTIEMPO DE MUESTREO Mn nfln e

STOPRECEPCION

SHIFT n n n n n n n n n nRI I

Figura 12.10.

Como en los otros modos, la transmisión se inicia por una instrucción que utilice elregistro SBUF como destino. La señal de escritura en SBUF, también carga TB8 en laposición del noveno bit del registro desplazamiento transmisor y alerta a la unidad decontrol TX para que proceda a la transmisión una vez sea solicitada. La transmisión co-mienza en la fase S 1 P 1 del ciclo de máquina siguiente que resulta a partir del sobrepa-samiento del contador del timer dividido por 16 (así pues, el «tiempo de bit» está sincro-nizado con el contador divisor por 16, no con la señal de «escritura en SBUF»)(Figura 12.10).

La unidad de control TX comienza su gestión con la activación de SEND que poneel bit de start en el pin TXD. Un «tiempo de bit» más tarde DATA se activa autorizandola salida de los bits del registro de desplazamiento de transmisión a través de TXD. Elprimer pulso de desplazamiento ocurre un «tiempo de bit» después de la salida del pri-mer bit de datos. También, en ese mismo instante, el registro de desplazamiento envíaun «l» (bit de stup), que ocupa la posición del noveno bit en el registro de desplaza-miento. Después, sólo «ceros» se almacenan en dicho registro. Así pues, como los bitsde datos son desplazados al exterior por la derecha, por la izquierda se introducen bits«ceros». Cuando el bit reflejado delJlag TB8 en el registro de desplazamiento está en laposición de salida, entonces el bit de stop se encuentra justo a la izquierda del TB8 ytodos los bits a la izquierda de éste son «ceros». Esta condición alerta a la unidad decontrol TX para que haga el último desplazamiento y entonces desactive SEND y activeel flag TI (interrupción en la transmisión). Esto sucede en el undécimo ciclo de sobre-pasamiento del contador-divisor por 16 después de la «escritura en SBUF».

La recepción se inicia al detectar en el pin RXD una transición descendente. Por estemotivo el pin RXD es muestreado a razón de 16 veces, independientemente de la velo-cidad en baudios establecida. Cuando una transición ha sido detectada, el contador-di-visor por 16 es inmediatamente puesto a «cero» y el dato 1FFH se escribe en el registrode desplazamiento.

En los estados 7, 8 y 9, correspondientes al intervalo de un «tiempo de bit», el «de-tector de bit» muestrea el valor de RXD. El valor aceptado es el que ha sido leído en al

Page 265: LE002-Introduccion a Los Microcontroladores

C o m u n i c a c i o n e s 261

menos dos de las tres muestras. Si el valor aceptado durante el primer «tiempo de bit»no es «cero», los circuitos receptores son puestos a «cero» y la unidad vuelve a alertarsepara detectar una nueva transición de flanco descendente. Si el bit de start resulta co-rrecto, éste es ingresado en el registro de desplazamiento, y lo mismo sucederá con elresto de la cadena.

Como los bits de datos ingresan en el registro de desplazamiento por la derecha, los«unos» son desplazados al exterior por la izquierda. Cuando el bit de start llega a la po-sición más extrema a la izquierda del registro de desplazamiento (que en los Modos 2 y3 es el noveno bit), alerta al bloque de control RX para hacer un último desplazamiento,carga SBUF Y RB8 y activa elflag RI (interrupción en el modo receptor). La señal paracargar SBUF y RB8, y para activar RI, se genera si las siguientes condiciones son satis-fechas en el momento en que el pulso final de desplazamiento se produce:

- 1 ) RI=Oy- 2) bien SM2 = 0; o el noveno bit recibido es igual a «l».

Si cualquiera de estas condiciones no se cumple, la cadena recibida se pierde y RI nose activa. Si ambas condiciones se cumplen, el noveno bit de datos se alojará en el jagRBI, y los primeros 8 bits de datos se alojarán dentro del registro SBUF. Un «tiempo debit» más tarde, se cumplan o no las condiciones indicadas más arriba, la unidad vuelvea comprobar la transición descendente en la entrada RXD.

Obsérvese que el valor del bit de stop recibido es irrelevante para SBUF, RB8 o RI.

12.7.1. Resumen comunicaciones Modo 2 y 3

- Longitud palabra dato: ll bits.- Formato palabra dato:

START b,, b, b2 b3 b4 bs b6 b, P R O G STOP

Bit

l

Transmisión: Asigna el bit TB8 de SCONprogramable

(paridad) Recepción: Refleja el bit RB8 de SCON

- Esquema simplificado de la comunicación:

Page 266: LE002-Introduccion a Los Microcontroladores

262 I n t r o d u c c i ó n a l o s M i c r o c o n t r o l a d o r e s

- Velocidad de comunicación:

Se puede utilizar el Timer 1 o el Timer 2.

?? Para el Modo 2:

2 SMOD

BAUDIOS = 64 . (frecuencia oscilador)

??Para el Modo 3 (velocidad variable):

2 SMoDBAUDIOS = 32 .Frecuencia oscilador

12 . (256 - (TH,))

- Transmisión Comienza: Escribiendo en SBUFTennina.. Activando el flug TI

- RecepciónComienza: Cuando REN = 1 y se detecta un flanco descendente (bit

start) en RXDTermina: Activando el flag RI

1 .

2 .

3,

4 .

5 .

6 .

Indicar la función que tienen las líneasTXD y RXD según esté configurado elpuerto serie en Modo 0, 1,2 o 3 .

Dibujar un «cronograma» del dato quese transmite con los bits de control enlos cuatro modos de operación del puertoserie.

7 .

8.

En las comunicaciones en el entornomultiprocesador, el «maestro» jcómo en-tra en comunicación con los «esclavos»?Explicar el proceso.

iCuándo se inicia la t ransmisión?

9.

Explicar el cometido del bit 3 de control,REN, en el registro SCON.

10 .Explicar qué timers actúan en el procesode t ransmisión y recepción s i RCLK=O yTCLK= 1 en el registro T2CON.

En las comunicaciones en Modo 0 ac-tuando el microcontrolador como trans-misor, icuándo se activa la señal de inte-rrupción TI? ¿Y la señal RI cuando elmicrocontrolador actúa como receptor?

En las comunicaciones en Modo 1 ac-tuando el microcontrolador como trans-misor, iqué señal de control se activa paraposicionar el bit de start en el pin de sa-lida TXD?

iQué diferencias se observan entre losModos 2 y 3? A la vista de las Figuras 12.7y 12.9, explicar el modo de selección dela velocidad de transmisión en el Modo 2.

iQué condiciones han de cumplirse paraque el dato recibido sea validado y no sepierda cuando el microcontrolador tra-baja en Modo 2 o 3?

Page 267: LE002-Introduccion a Los Microcontroladores

Comunicaciones 263

1. Realizar los Ejercicios 12.1 y 12.2 enModo 1 utilizando un Microcontrolador

1 8052 con velocidad de comunicación va-riable y con el Timer 1 o 2.

2. Realizar el ejercicio anterior configurandoel Timer 1 o 2 como «contadon> con unaseñal de contaje de muy baja frecuencia quepermita seguir el proceso. De esta manerase podrá ver el dato transmitido con unsimple LED y el dato, en el caso de trans-misión, se podrá enviar con un pulsador.

3. Realizar la comunicación en Modo 1, 2, y3 uti l izando un registro de desplazamientode 16 bits como indica la Figura 12.11, detal forma que los datos enviados por TXDsean recuperados, transcurrido un cierto

Figura 12.11.

t iempo, por RXD después de pasearse porel exterior (para hacerlo más vistoso se su-giere poner en las salidas paralelo del regis-tro de desplazamiento unos LED). Se puedeenviar un texto en caracteres ASCII gra-bado previamente en el espacio de memo-ria «fuente» y recogerlo en el espacio dememoria «destino». Téngase en cuenta queel programa de transmisión y el de recep-ción deberán alternarse «carácter a carác-ten> hasta el envío de un código de control

(carácter de control) que indique el final detransmisión-recepción. Ambos textos, al fi-nal del proceso, deberán coincidir; para ellose puede aplicar algún sistema de detec-ción de errores.

4. Se sugiere otra posibilidad para poder ob-servar y estudiar detenidamente las carac-teríst icas comentadas de la comunicación:utilizar un microcontrolador con el pro-grama grabado de transmisión y/o recep-ción que actúe como transmisor 0 receptor(puede ser el propio emulador) y otro mi-crocontrolador con el mismo programagrabado de transmisión y/o recepción queactúe como receptor 0 transmisor, comoindica la Figura 12.12.

Figura 12.12.

5. Se puede, también, realizar con el adapta-dor de comunicaciones asíncronos, COM 1o COM2 del PC una comunicación formalPC -> MICROCONTROLADOR y/o MI-CROCONTROLADOR -> PC. Esto im-plica que debe conocer las características delas comunicaciones o, en su defecto, infor-marse de el las en la abundante bibliografíay art ículos aparecidos en las revistas técni-cas especializadas sobre las comunicacio-nes en el entorno de los PC.

Materiales: (Cortesía de Novatronic, S. A.).-Tel. (94) 452 08 ll - Fax (94) 452 ll 67. Grabador de EpromsExpro- de Sunshine Device Programmer. Emulador Mice II-8052 de Microtek Internacional Inc. En-samblador, compilador y linkador de 2500 AD Software Inc.

Page 268: LE002-Introduccion a Los Microcontroladores

APENDICE

Guía de los microcontroladoresde INTEL

A.l. ASPECTOS GENERALES

Se destacan dos tipos de microcontroladores, de 8 y 16 bits:

??Dentro del primer tipo se encuentran dos generaciones:T - Primera generación de microcontroladores de 8 bits. Familia MCS-48.- Generación avanzada de microcontroladores de 8 bits. Familia MCS-51.

??El segundo tipo corresponde a los microcontroladores de 16 bits dedicados al con-trol de procesos que exijan una gran velocidad de computación. Esta es la FamiliaMCS-96.

A.2. FAMILIA MCS-48

Ha sido la precursora de las familias de microcontroladores de 8 bits de INTEL y portanto ha marcado la evolución futura del resto de las familias. Estos dispositivos estándisponibles en diversas versiones para ofrecer al usuario flexibilidad según el diseño. Ac-tualmente están fabricados con la tecnología avanzada HMOS II. La Tabla A. 1 resumelas características de esta familia y éstos son sus rasgos más importantes:

? Versión con memoria ROM para grandes series de producción. Modelos 8048AH /8049AH / 8050AH.

??Versión con EPROM para el desarrollo de prototipos y pequeñas series de fabri-cación. Modelos 8748AH / 8749AH.

??Versión que, como los anteriores, integra en el bloque de silicio la CPU, la me-moria RAM y la unidad de Entrada/Salida, pero no tiene memoria de programa interna,por lo que se utiliza con dispositivos de memoria externa. Modelos 8035AHL / 8039AHL /8040AHL.

Nota: Intel Corporation no asume ninguna responsabilidad por errores que pudieran producirse en la trans-cripción de datos, ni se compromete a actualizar la información de esta obra.

264

Page 269: LE002-Introduccion a Los Microcontroladores

Apéndice A. Guía de los microcontroladores de IYTEL 265

Tabla A.1

1 Dispositivos

1 ROM Version 1 8048AH 1 8049AH 1 8050AH II EPROM Version I 8748H I 8749H~~~ 7 _____ -- 1I CPU/RAM/I/O I 8035AHL I ~8039AHL 7 8049AHL_____ -1I Características _____ -1

Cycle Time

R A M M e m o r y (bytes)

Program Memory (bytes)

I/O Lines

1.36 ps 1.36 ps 1.36 ps

64 128 256

1KB 2KB 4KB

27 27 27

I SYNC Mode I Yes I Yes I Yes

Timer-Counter

A/D (analog/digital)

1 1 1

- - -

Interrupts 2 ! 2 2

Program Limit 4KB 4KB 4KB

Ext. Data Limit (bytes) 256 256 256

A.3. FAMILIA MCS-51

Dada la gran cantidad de fabricantes y modelos que presenta esta familia, se ha hechoun planteamiento resumido y general de los modelos fabricados por INTEL. Actual-mente el techo de las características de esta familia está en:

Memoria de programas = 32 Kbytes.Memoria RAM = 512 bytes.Velocidad de funcionamiento = 30 MHz.

La arquitectura de esta familia está optimizada para aplicaciones orientadas al con-trol y procesos industriales en «tiempo real» de pequeña y mediana envergadura. Paraadaptarse convenientemente a las aplicaciones específicas del usuario hay disponiblesvarias versiones, como se explica en el capítulo que hace referencia a este Apéndice y enel Apéndice C, que hace referencia a los tipos especiales para consumos críticos (modelosIDLE y POWER DOWN).

INTEL ofrece actualmente la arquitectura 805 1 en tres distintas modalidades:

? La primera es la clásica 8X52/51 y 8XC52/C51, esta última fabricada con transis-tores MOS complementarios de bajo consumo. A estos dispositivos va dirigido este libro.

Page 270: LE002-Introduccion a Los Microcontroladores

266 Introducción a los Microcontroladores

?? La segunda corresponde a productos estándar para aplicaciones específicas (ASSP),a la que pertenecen los tipos 8XC51FA / 8XC51FB / 8XC51FC, que tienen una arqui-tectura similar a la primera, pero con el bloque PCA (Programmable Counter Array),que le añade las siguientes características:

- Salida de alta velocidad.- Circuitos comparador/capfura.- Modulador de anchura de pulso.- Perro guardián (watch-dog).

?? La tercera contiene un núcleo de circuito integrado para aplicaciones específicas(ASIC) (Application Specific Integrated Circuits) que permite al usuario diseñar «a me-dida» el dispositivo adaptador de periféricos que necesite para su aplicación. Este pro-ducto se le conoce por la referencia UCS51. La Tabla A.2 resume los microcontrolado-res avanzados de 8 bits.

A.4. MICROCONTROLADORES DE 16 BITS. FAMILIA MCS-96

La familia MCS-96 está basada en la arquitectura del 8096 que ofrece un nivel de pres-taciones avanzadas con unas evolucionadas unidades de E/S y distintos periféricos inte-grados en la misma pieza de silicio junto con una potente CPU de 16 bits. Estos micro-controladores suplen, en sistemas de control complejo, las soluciones que-requierenmúltiples chips. Para desarrollar aplicaciones en este entorno, INTEL suministra sopor-tes como lenguajes de alto nivel, un ensamblador y hardware de emulación. Incluso en-tre las herramientas que ofrece el fabricante se encuentra el software TRANS 51-96, quetraslada el programa escrito en instrucciones de los microcontroladores de la familiaMCS-5 1 a instrucciones de la familia MCS-96. En la Figura A. 1 se muestra el diagramaen bloques de un genérico microcontrolador de esta familia.

Estas son las principales características de la familia MCS-96:

?? 232 registros archivo. Funcionalmente pueden considerarse como «acumulado-res».

??Arquitectura dirigida al proceso «registro a registro», evitando el «cuello de bote-lla» que producen las arquitecturas de un único registro «acumuladon>.

??Convertidor A/D de 10 bits con la inclusión del circuito de «Captura y Manteni-miento» (S/H: Sample and Hold).

??20 fuentes de interrupción.?? Salida de pulso modulado en anchura (Convertidor D/A).?? Tiempo de ejecución programable en EPROM.??Subsistema de E/S de alta velocidad.??Puerto serie de comunicación «full-duplex».?? «Perro guardián» (watch-dog) de 16 bits.??Protección de los programas en ROM o EPROM.??Bus conligurable dinámicamente para trabajar con 8 o 16 bits.

Page 271: LE002-Introduccion a Los Microcontroladores

Tabla A.2

8051AH 8031AH 8751H iSOC51BH iSOC31BH 1 87C51 t 8052AH i8032AH I8752BH 1 83C152 I83C51FA 1 X51FA I83C51FB I87C57FI

R O M 4KBE P R O M

8KB8KB 16KB

1’8128

6 4 K B

64 KB

R A M

XROM

XRAM

128

6 4 K B

64KB

2 5 6

6 4 K B6 4 K B

6 4 K B 6 4 K B

FREQ. 16 16 16

C Y C L E 1 1 1

2 2 2

UART UART UART

3 2 16 3 2

5 5 5

125 125 2 5 0

SERIAL U A R T UART U A R T UART UART UART

l I

U A R TCSMA/CI

S D L C * *

UART UART U A R T UART

3 2 32 3 2 3 2

1 1 1 1

3 0 3 0 4 0 4 0

- 75 5 5

- 5 15 1 5

3 2 16 3 2

I N T

kc Max@ 12 MH;

25 32

IDLE I,,(TYP mA@ 12 MHi

’ 6

IPD IrcUYP KA)

* Incluye el Programmable Counter Array (PCA) para aplicaciones que requieren:- Salidas de alta velocidad.- Modulador de anchura de pulso.- W a t c h - d o g .- Circuito de comparación/captura.

* * P r o t o c o l o s :CSMA/CD = Carrier-Sense Multi-Access with Collision Detection.SDLC = Synchronous Data Link Control.

Page 272: LE002-Introduccion a Los Microcontroladores

268 htroducción a los Microcontroladores

BAJO FRECUENCIA DEIREF ANGND

c 16// I /

BAUUIUS 1 AiTAVELOCIDAD

1 1 / 1 1 -;i P2 MULTIPLEXOR 11II II /\ /\ I I

‘---i-!-e-------111-11 $,j ----- jjyp

PUERTO 0 PUERTO 1 PUERTO 2 HSl HSOFUNCIONES ALTERNATIVAS

Figura A.l.

Con esta visión de conjunto el técnico puede hacerse una idea de las herramientasque tiene para afrontar con éxito cualquier problema de diseño que se le presente. Suhabilidad no sólo debe consistir en que el sistema funcione óptimamente, sino en buscarel microcontrolador que haga más rentable su trabajo.

Page 273: LE002-Introduccion a Los Microcontroladores

APENDICE

Concepto y aplicación de losindicadores de Carry y Overflow

B.l. EXPRESION DEL CARRY

En la mayoría de las ocasiones se ha utilizado el ACC para la toma de decisiones (bifur-cación del programa), en función de que este registro fuese igual o distinto de «cero»(recuérdese que no existe flag para esta bifurcación, sino que comprueba directamente elACC). Puede que en alguna circunstancia se necesite bifurcar en función de que el re-sultado sea positivo o negativo. Esta toma de decisión se puede hacer con las orientacio-nes que se dan en este apartado.

El CARRY se pone a «l» cuando se propaga el acarreo desde el bit 7, que es elbit de signo en las operaciones con signo.

?? Ejemplo 1

Obsérvese el programa:

0200 CLR C ; c=o0 2 0 1 A D D C A,B ; Suma el registro A con B.

Si A=F7H,

t -

> RESULTADO: ACC <- FFH Y

y B=08H

269

Page 274: LE002-Introduccion a Los Microcontroladores

270 Introducch a los Mcrocontroladores

Si A=F7H,

t -

> RESULTADO: ACC <- OOH y

y B=0’9H

También el CARRY se activa (1) en la operación sustracción (SUBB) si el bo-YYOW (préstamo) es solicitado por el bit7, y lo. desactiva (0) en los otros casos.

m Ejemplo 2

Obsérvese el programa:

0200 CLR C0 2 0 1 S U B B A,B

; c=o; A es el minuendo y B el sustraendo.

Si A=05H,

t -

> RESULTADO: ACC < - 0 2 H y

y B=03H

> RESULTADO: ACC < - F E H yE lC=l

Estas dos instrucciones representan unas herramientas interesantes para «bifurcan>con las instrucciones de «salto»:

J C <salto l> ; Salta si C=lJNC <salto2> ; Salta si C=O

No obstante, resulta más práctico utilizar la instrucción de «comparación»:

CJNE <destino>, <fuente>, <salto3>

El CARRY se activa (1) cuando el valor del entero sin signo del registro <des-tino> es menor que el entero sin signo del registro <fuente>.

Page 275: LE002-Introduccion a Los Microcontroladores

Apéndice B. Concepto y aplicación de los indicadores de Cm-t-y y Ouerjlow

?? Ejemplo 3

0200 CLR C

2 7 1

0201 CJNE A, B, SALTO 1.

Si A=05H,

t -

> RESULTADO:

y B=03H

Si A=03H,> RESULTADO:

y B=05H t -

Si A=05H,

t -

> RESULTADO:

y B=05H

dado que A > B.

C = 1 dado que A < B.

1 C = 0 1 dado que A = B.

Naturalmente que, según el Ejemplo 3, no se puede distinguir el caso 1 del caso 3, esdecir, siempre que el registro A sea igual o mayor que B el CARRY es «cero», pero puedeutilizar la instrucción resta (A - B = RESULTADO) y las instrucciones de salto JZ o JNZpara distinguir el caso 1 del 3.

B.2. EXPRESION DEL OVERFLOW

La serial de overflow (sobrepasamiento) se utiliza en las operaciones aritméticas comouna señal de alarma. Significa que se deben prever una o varias opciones que estudienlas causas del sobrepasamiento y se apliquen los elementos correctores oportunos al caso.

El overfl¿w existe cuando se produce acarreo en el bit 6 o bit 7, pero nunca en ambosa la vez. La tabla de verdad y el esquema aclaran lo dicho.

ACARREO b7 ACARREO b6 OVERFLOW

NO NO NOSI NO SI

NO SI S ISI SI NO

Como se puede comprobar, el resultado obedece a la función lógica EX-OR (véaseFigura B. 1).

Page 276: LE002-Introduccion a Los Microcontroladores

272 Introducción a los Microcontroladores

C

?

L-----

b 7 b 6 b 0

Figura B.l.,

Así pues, en el caso representado en la figura, existe overJlow porque hay acarreo enel b7 y no lo hay en el b6.

? OVERFLOW en la operación SUSTRACCION

Se produce overflow en las operaciones de sustracción con signo, cuando:

MinuendoSustraendo

Resultado

: POSITIVO: NEGATIVO -.. 0 cuando

Minuendo : NEGATIVOSustraendo : POSITIVO

: NEGATIVO Resultado : POSITIVO

W Ejemplo 4

0200 CLR C0 2 0 1 S U B B A,B

Si A=03H,

y B=SOH

Si A=80H,

t

>

y B=03H

OV=l1c = o

Page 277: LE002-Introduccion a Los Microcontroladores

Apéndice B. Concepto y aplicación de los indi 273

? OVERFLOW en la operación de MULTIPLICACION

Si el «producto» es mayor que 255 (FFH) el overflow se activa (OV=l). El carrysiempre es igual a «cero» (C=O).

?? Ejemplo 5

0200 ANL PSW, #7B ; Desactivación del curry y overflow.0201 MUL A, B ; Producto de ACC . B.

Si A=FóH,

t

> RESULTADO: ACC <- ECH

y B=02H

Si A=25H,

t

> RESULTADO: ACC <- 4AH* .

y B=02H

? OVERFLOW en la operación de DIVISION

SiendoA = Dividendo

B = Divisor ’el resultado aparecerá en este orden: En el registro

A = COCIENTE y en el B = RESTO.

Siempre C = 0 y OV = 0, salvo que el Divisor (B) sea igual a «cero», en este casose activa el overflow (OV = 1).

Page 278: LE002-Introduccion a Los Microcontroladores

APENDICE

Modos de trabajo especialespara consumos críticos

C.l. MICROCONTROLADORES SXCXX DE BAJOS CONSUMOS

En aplicaciones donde el consumo del microcontrolador represente una preocupaciónañadida para el diseñador se ha realizado una versión CHMOS que prevé dos modos deoperación de bajo consumo de potencia como característica estánda.r. De estos modossólo participan los dispositivos de las familias lógicas CHMOS, dado que, en la actuali-dad, los HMOS no contemplan estas características (véase Tabla A.2 en el Apéndice A).

C.2. CARACTERISTICAS DE LOS «MODOS» DE BAJO CONSUMO

Las versiones de los microcontroladores CHMOS tienen dos «modos» de consumo re-ducido:

- Modo IDLE (ralentizado).- Modo POWER DOWN (baja potencia).

La Figura C. 1 muestra los circuitos internos que configuran estos «modos» de actua-ción. La alimentación de potencia se aplica, como en todos los casos, al pin 40 (VCC)durante el tiempo que el microcontrolador se encuentra activo en este estado. En el modoIDLE el oscilador-reloj suministra señal para las interrupcionrpuerto serie y timers, ypuede ser bloqueada para la CPU, dependiendo de la señal IDL. En el modo POWERDOWN la señal que suministra el oscilador-reloj puede quedar bloqueada para la tota-lidad del sistema, dependiendo de la señal PD.

El Cuadro C. 1 muestra el registro de control PCON (Power Control Register), posi-cionado en la dirección de memoria 87H, que tiene como misión configurar los modosde trabajo de «bajo consumo» referidos, y de asignar parcialmente la velocidad de co-municación del puerto serie en los modos 1, 2 y 3 (PCON.7).

Los dispositivos microcontroladores CHMOS tienen habilitados los 4 bis de los mo-dos «bajo consumo» y el bit 7 asignado a las comunicaciones. Los dispositivos HMOStienen implementado solamente este último bit, pues no presentan los modos, «bajoconsumo». Los bits 4, 5 y 6 están reservados para aumentar en el futuro las caracterís-ticas de los productos 5 1.

274

Page 279: LE002-Introduccion a Los Microcontroladores

Apéndice C. Modos de trabajo especiales para consumos críticos 275

-PD

CLOCKGEN.

INTERRUPCIONES,) PUERTO SERIE Y

BLOQUES TIMERS

b CPU

Figura C.l.

Cuadro C.1.

PCON

BIT

b o

b

b b6 br b4 bs bz 6 bo 1SMOD 1 - 1 - 1 - 11 GFl ) GFO ) P D 1 IDL \

NOMBREYCOMENTARIO

?? : Bit Modo Idle.Si IDL = 1 entonces activa este modo de operación.

1-I : Bit Poner Down.Si PD = 1 entonces activa el Modo Power DOW

‘0GFO : Fkzg bit de propósito general.

6bd+b6

CI:GFI Fhg bit de propbsito general.

Reservados para futuras ampliaciones.

bi (:SMOD Bit duplicador de baudios.Si SMOD = 1 entonces duplica la frecuencia de reloj del Aher 1 cuando éste se utiliza como generador reloj debaudios en la comunicación serie en los Modos 1.2 v 3 .

- Si se activa simultáneamente PD e IDL el microcontrolador toma el Modo Power Down, que es preferencial sobre el Modo Idle.- Después de la operación Resti, PCON loma el siguiente valor: OXXXOOOO.- En los dispositivos HMOS, PCON contiene solamente el bit SMOD.

Page 280: LE002-Introduccion a Los Microcontroladores

276 Introducción a los Microcontroladores

C.3. MODO IDLE

La instrucción que active el bit IDL del registro PCON hace que ésta sea la última ins-trucción ejecutada, pues el microcontrolador queda inmerso (congelado) en este modo.En el modo IDLE la señal de reloj interna queda bloqueada para la CPU por la puertalógica (véase Figura C. l), dependiendo del estado de la señal IDL, pero no para las fun-ciones de lógica de interrupciones, puerto serie y timers. El estado de la CPU es preser-vado en su totalidad. El puntero de la pila, contador de programas, palabra de estado,acumulador y, el resto de los registros, mantienen sus valores durante el modo IDLE.Los pines de los puertos retienen los estados lógicos que tenían en el instante en que fueactivado el modo IDLE. ALE y PSEN mantienen un nivel lógico alto.

Hay dos maneras de finalizar el modo IDLE. ‘La activación de cualquier interrupciónautorizada hará que el bit IDL del registro PCON sea desactivado por hardware. La in-terrupción será servida y la próxima instrucción que se ejecute es la siguiente a la ins-trucción RETI, que será, secuencialmente, la siguiente a la instrucción que puso el mi-crocontrolador en este modo.

Los bits de flas GFO y GFl pueden ser utilizados para indicar si una interrupción haocurrido durante el funcionamiento normal o durante el modo IDLE. Por ejemplo, unainstrucción que active al modo IDLE puede también activar uno o ambos bits deflag.Cuando ha finalizado el modo IDLE por una interrupción, la rutina de servicio de lamisma puede examinar los bits de flag.

La otra manera de finalizar el modo IDLE es con un RESET por hardware. El resetse alcanza cuando se mantiene en el pin RST un nivel lógico alto al menos durante dosciclos máquina (24 períodos de reloj) mientras el oscilador está funcionando.

La señal en el pin RST borra el bit IDL directa y asíncronamente. En este momentola CPU reanuda la ejecución del programa desde donde fue parado, concretamente en lainstrucción siguiente que llamó el modo IDLE. Como se indicó en el apartado 2.7 conrelación a la operación RESET, dos o tres ciclos máquina de programa ejecutable pue-den tener lugar antes que el algoritmo del RESET interno tome el control. El hardwaredel chip inhibe el acceso a la memoria RAM interna durante este tiempo, pero no seinhibe el acceso a los pines de los puertos. Para evitar la posibilidad de que se produzcansalidas inesperadas en los pines de los puertos, la instrucción siguiente a la que llama elmodo IDLE no deberá ser de escritura en los puertos o en la memoria RAM externa.

C.4. MODO POWER DOWN

Una instrucción que active el bit PD del registro PCON origina que esta sea la últimainstrucción ejecutable antes de entrar en el modo POWER DOWN. Este modo se carac-teriza por la «parada» del oscilador-reloj del microcontrolador. Con el reloj parado (con-gelado), todas las funciones están detenidas, pero la información sobre la RAM internay registros SFR se mantienen. Los pines de los puertos de salida mantienen sus respec-tivos valores imagen de los que presentan sus respectivos registros del SFR. Las salidasALE y PSEN permanecerán a nivel bajo.

La única forma de salir del modo POWER DOWN es con RESET por hardware. El

Page 281: LE002-Introduccion a Los Microcontroladores

Apéndice C. Modos de trabajo especiales para consumos críticos 277

RESET redefine, como se estudió, toda la información de los registros SFR, pero no mo-difica la RAM interna.

En el modo POWER DOWN, la tensión de alimentación VCC puede ser reducidahasta 2 voltios. Se debe tener cuidado, sin embargo, en asegurar que esta tensión no seareducida antes de que el modo POWER DOWN sea llamado y que la VCC sea restau-rada a su nivel de operación normal antes que el modo POWER DOWN finalice. El RE-SET que termina con el modo POWER DOWN también libera al oscilador. El RESETno será activado hasta que la VCC sea restaurada a su nivel de operación normal y debemantenerse el tiempo suficiente para permitir al oscilador volver a arrancar y estabili-zarse (el valor típico es de 10 milisegundos).

Page 282: LE002-Introduccion a Los Microcontroladores

APENDICE

Característicasde microcontroladores de otrosfabricantes

IEME

8-Bit Single-Chip Mikrocontroller / 8-Bit Single-Chip Microcontrollers

SAB 8051A-N Q67120-C224SAB 8051 A-P Q67120-Cl86

PL-CC-44P - D I P - 4 0

mit 128 x8-bit RAM, 4K x 8-bit ROM,2 Tlmern, 3 2 EiA-Leitungen, NMOS, 12 MHzwith 128 x8-bit RAM, 4K x 8-bit ROM,2Timers. 3 2 110 Lines. NMOS. 12 MHz

SAB 8051A-16-NSAB 8051 A-l 6-P

Q67120-C348Q67120-C346

wie SAB 8051A, 16 MHzas SAB 8051A. 16 MHz

SAB 8051 A-l 2-P-T40185 Q6712OX233 P - D I P - 4 0 wie SAB 8051A,.16 MHz, - 40 +85 “Cas SAB 8051A, 16 MHz, - 40 + 85 “C

SAB 8051A-10.P-T401110 067120~C231 P - D I P - 4 0 wie SAB 8051A, 16 MHz, - 40 <.. +llO”Cas SAB8051A, 16 MHz,-40... +llO”C

Q SAB 8031A-N Q67120-C271 PL-CC-44 wie SAB 8051A, ROMlos??SAB 8031A-P 067120~Cl83 P - D I P - 4 0 as SAB 8051A. ROMless

El SAB 8031A-16-NQ SAB 8031A-16-P

Q67120-C349067120X347

PL-CC-44P - D I P - 4 0

wie SAB 8051A, ROMlos, 16 MHzas SAB 8051A. ROMless, 16 MHz

SAB 8031A-12-P-T40185 067120~C230 P - D I P - 4 0 wie SAB 8051A, ROMlos, - 40 + 85 “Cas SAB 8051A, ROMless - 40 + 85 “C

SAB 8031A-lo-P-T401110 067120X232 P - D I P - 4 0 wle SAB 8051A, ROMlos, 10 MHz.- 4 0 +11oocas SAB 8051A, ROMless, 10 MHz,- 40 + 110 “C

SAB 8052A-N Q67120-C263SAB 8052A-P Q67120-Cl95

SAB 8052A-N-T40185 Q67120-C368SAB 8052A-P-T40185 Q67120-C247

SMD = Surface Mounted Device

PL-CC-44P - D I P - 4 0

PL-CC-44P - D I P - 4 0

wie SAB 80528as SAB 80528

wie SAB 80528, - 40 . + 8.5 “Cas SAB 80528, - 40 . + 85 “C

278

Page 283: LE002-Introduccion a Los Microcontroladores

Apéndice D. Características de microcontroladores de otros fabricantes 279

TYP Eestellnummer Gehäuse BeschreibungTm Ordering Code Package Description

MikrocontrollerMicrocontrollers

8-Bit Single-Chip Mikrocontroller (Forts.)8-Bit Single-Chip Microcontrollers (cont’d)

SAB-8052A-P-T4011 OO

SAB 80525-NSAB 80520-P

SAB 80525-16-NSAB 80520-16-P

Q67120C248

Q67120-C424Q67120C420

Q67120-C426Q67120C422

P - D I P - 4 0

P L - C C - 4 4P - D I P - 4 0

PL-CC-44P - D I P - 4 0

wie SAB 80526, - 40 + 1.00 “Cas SAB 80.526, - 40 + 1 OO “C

wie SAB 8051A, mit 256 x E-bit RAM,8K x 8-bit ROM, 3 Timern, NMOS, 12 MHzas SAB 8051A. with 256x8-bit RAM,8Kx8-bit ROM, 3 Timers, NMOS, 12 MHz

wie SAB 80528, 16 MHzas SAB 80528. 16 MHz

SAB 8032A-NSAB 8032A-P

SAB 8032A-N-T40185SAB 8032A-P-T40185

SAEi 8032A-P-T4011 OO

H SAB 8032B-NQ SAB 8032B-P

Q6712OC264Q67120-Cl96

Q67120-C367Q67120-C235

Q67120-C239

Q67120-C42306712OC419

PL-CC-44P - D I P - 4 0

P L - C C - 4 4P - D I P - 4 0

P - D I P - 4 0

P L - C C - 4 4P - D I P - 4 0

wie SAB 8052A, ROMlosas SAB 8052A, ROMless

wie SAB 8052A. ROMlos, - 40 + 85 “Cas SAB 8052A, ROMless, - 40 + 85 “C

wie SAB 8052A, ROMlos, 16 MHz,- 40 . . + 100 “Cas SAE3 8052A: ROMless, 16 MHz,- 4 0 + 100 “C

wie SAB 80528, ROMlosas SAB 80528. ROMless

I SAB 8032B-16-NI SAB 80328-l 6-P I

Q67120-C425 PL-CC-44 wie SAB 80526, ROMlos, 16 MHzQ67120-C421 P - D I P - 4 0 as SAB 80528. ROMless, 16 MHz

SAB 80328-20-NSAB 80328-20-P

SAi3 80C52-NSAB 8OC52-P

SAB 80C52-N-T40185SAB 80C52-P-T40185

SAB 80C52-N-T4011 OOSAB 80C52-P-T400 OO

SAB 8OC52-16-NSAB 8OC52-16-P

SAB 8OC52-16-N-T40185SAB 80C52-16-P-T40185

SAB 80C52-20-NSAB 8OC52-20-P

??SAB 80C32-NI SAB 8OC32-P

SAB 80C32-N-T-40185SAB 80C32-P-T-40185

Q6712OC472Q67120-C471

Q67120-C396

P L - C C - 4 4P - D I P - 4 0

PL-CC-44

wie SAB 8052B,RQMlos, 20 MHzas SAB 80528, ROMless, 20 MHz

wie SAB 80528. CMOS) Q67120C379 P - D I P - 4 0 as SAB 8052B, CMOS

1 067120X564 ) PL-CC-44 ) wle SAB 80528, CMOS, - 40 + 85 “CQ67120-C521

06712OC559Q67120C558

P - D I P - 4 0

P L - C C - 4 4P - D I P - 4 0

as SAB 80528, CMOS, - 40 + 85 “C

wie SAB 80528, CMOS, - 40 + 100°Cas SAB 80526. CMOS, - 40 + 100 “C

Q67120-C503067120~C501

Q6712OC528Q67120-C563

Q67120-C710Q67120C708

Q67120-C39506712OC378

Q67120-C540Q6712OX520

PL-CC-44 wie SAB 80528, CMOS, 16 MHzP - D I P - 4 0 as SAB 80528, CMOS, 16 MHz

PL-CC-44 wie SAB 80528, CMOS, 16 MHz,P - D I P - 4 0 - 4 0 ..< +85”C

as SAB 80528, CMOS, 16 IbWz,-4o... +85”c

PL-CC-44 wie SAB 8OC52, 20 MHzP - D I P - 4 0 as SAB 8OC52, 20 MHz

PL-CC-44 wie SAB 80328, CMOS, ROMlosP - D I P - 4 0 as SAB 80328, CMOS, ROMless

PL-CC-44 wie SAB 80328, CMOS, ROMkxP - D I P - 4 0 - 40 ..< +85”c

as SAB 80328, CMOS, ROMIes-4O... +85’C

SMD = Surface Mounted Device

Page 284: LE002-Introduccion a Los Microcontroladores

2 8 0 Introducción a los Microcontroladores

TYQTYQe

Bestellnummer GehäuseOrdering Code Package

BeschreibungDescription

MikrocontrollerMicrocontrollers

8-Bit Single-Chip Mikrocontroller (Forts.)8-Bit Single-Chip Microcontrollers (cont’d)

SAB 80C32-N-T-401110SAB 80C32-P-T-40/110

SAB 8OC32-16-NSAB 8OC32-16-P

SAB 8OC32-16-P-T40185

SAB 80C32-20-NSAB 8OC32-20-P

SAB 80513-NSAB 80513-P

SAB 80513-16-NSAB 80513-l 6-P

SAB 80513-16-P-T3

SAB 8352-5-NSAB 8352-5-P

SAB 8352-5-l 6-NSAB 8352-5-l 6-P

SAB 8352-5-l 6-P-T3

SAB 80515-N

SAB 80515N-T40185

SAB 80515-N-T40/110

SMD = Sutface Mounted Del ViC e

Q67120C548Q6712OC547

Q6712OC502Q6712OC500

Q67120C527

Q67120-C709Q67120C711

Q67120-C384Q67120C383

Q67120-C443Q67120-C441

Q67120-C506

Q67120-C524Q67120-C526

Q67120-C533Q67120-C529

Q67120-C531

Q67120-C210

Q67120-C316

PL-CC-44P - D I P - 4 0

PL-CC-44P - D I P - 4 0

P - D I P - 4 0

PL-CC-44P - D I P - 4 0

PL-CC-44P - D I P - 4 0

PL-CC-44P - D I P - 4 0

P - D I P - 4 0

PL-CC-44P - D I P - 4 0

PL-CC-44P - D I P - 4 0

P - D I P - 4 0

PL-CC;68

P L - C C - 6 8

P L - C C - 6 8

wie SAB 80328, CMOS, ROMlos,- 4 0 +11oocas SAB 80328, CMOS, ROMless.-4o... +11ooc

wre SAB 8052B, CMOS, 16 MHzas SAB 80528. CMOS. 16 MHz

wie SAB 80528, CMOS, 16 MHz,- 4 0 +85”cas SAB 80528, CMOS, 16 MHz,-4O... +85’C

wie SAB 8OC32, 20 MHzas SAB 8OC32. 20 MHz

wie SAB 80528, mit 16K X 6-bit ROMas SAB 80528, with 16K x E-bit ROM

wie SAB 80528, í6 tiHz,mit 16K x E-bit ROMas SAB 80528, 16 MHz,with 16K X8-bit ROM

wie SAB 80528, 18 MH;,mit 16Kx8-bit ROM, - 40 +85 “Cas SAB 8052B, 16 MHz,with 16Kx8-bit ROM, - 40 +85 “C

wie SAB 80528, mlt 32K x8-bit ROMas SAB 80528. with 32K x 8-bit ROM

wte SAB 8052B, 16 MHz,mit 32K x8-bit ROMas SAB 80526, 1’6 MHz,with 32Kx 8-bit ROM

wle SAB 80528, 16 MHz,mit 32K x 8-bit ROM, - 40 + 85 “Cas SAB 80528, 16 MHz.with 32K X 8-bit ROM, - 40 . . . + 85 “C

mit 256 x B-bit RAM, 8K x b-bit ROM,3 Timern, 4-fach-CompareiCapture, Watch-dog-Timer, 48 EiA-Leitungen, E-bit A/D-Wandler mit 8 Eingángen, NMOS, 12 MHzwlth 256 X 8-bit RAM, 8K X B-bit ROM,3 Timers, 4-Channel CompareCapture,Watchdog Timer, 48 VO lines, 8-bit AiD-Converter with 8 Channels, NMOS, 12 MHz

wie SAB 80515, - 40 + 85 “Cas SAB 80515, - 40 + 85 “C

wieSAB80515,-40... +llO°Cas SAB 80515, - 40 + 110 “C

Page 285: LE002-Introduccion a Los Microcontroladores

TYPWe

Apéndice D. Características de microcontroladores de otros fabricantes 281

Bestellnummer Gehäuse BeschreibungOrderíng Code Package Description - - -

MikrocontrollerMicrocontrollers8-W Single-Chip Mikrocontroller (Forts.)8-Bit Single-Chip Microcontrollers ( cont’d)SAB 83515-4-N Q67120-C525 PL-CC-68 wie SAB 80515, mit 16K x8-bit ROM

as SAB 80515. with IGKXd-bit ROM

wle SAB 80515, mit 16K x d-bit ROM- 4 0 .._ +85”Cas SAB 80515, with 16K x 8-bit ROM-4O... +85”C

SAB 83515-4-N-T3 Q67120-C536 PL-CC-68

SAB 835154-N-T4 Q67120G39 PI-CC-68 wie SAB 80515, mit 16K X8-bit ROM- 40 + 110°Cas SAB 80515, with 16K x 8-bit ROM- 4 0 + 110°C

I SAB 80535-N Q6712OC241 P L - C C - 6 8 wie SAB 80515, ROMlosas SAB 80515, ROMless

H SAB 8053.5N-T40185 Q67120-C240

Q67120C313

Q6712OC297

P L - C C - 6 8

PL-CC-68

P L - C C - 6 8

wie SAB 80515, ROMlos, - 40 . . . + 85 “Cas SAB 80515, ROMless, - 40 . . . + 85 “C

wie SAB 80515, ROMlos, - 40 . . . + 110 “Cas SAB 80515, ROMless, - 40 .., + 110 “C

wie SAB 80515, CMOSas SAB 80515. CMOS

SAB 80535-N-T401110

SAB 80C515-N

SAB 80C515-N-T40185 Q67120-C388 P L - C C - 6 8 wie SAB 80515, CMOS, - 40 + 85 “Cas SAB 80515, CMOS, - 40 +85 “C

wie SAB 80515, CMOS, - 40 . . + 110°Cas SAB 80515, CMOS, - 40 + 110 “C

wie SAB 80515, CMOS, 16 MHzas SAB 80515, CMOS, 16 MHz

wie SAB 80515,CMOS, 16 Mtiz,- 4 0 +85’Cas SAB 80515, CMOS, 16 MHz- 40 ,.. + 85 “C

SAB 80C515-N-T401110

SAB 80%15-16-N

SAB80C515.16.N-T40185

Q67120-C391

Q67120-C492

Q67120-C561

P L - C C - 6 8

PL-CC-68

P L - C C - 6 8

wie SAB 83C515A-5, ROMlosas SAB 83C515A-5. ROMless

SAB 8OC515A-N 06712OC581 P L - C C - 6 8

SAB 83C515A-5-N Q67120C580 P L - C C 6 8 abwärtskompatibel zu SAB 8OC515, mit lo-bitAiD-Wandler. 1 K X 8-bit zusätzlichem RAM,32K x 8-bit ROM, Hardware Powerdownbackward compatible to SAB 8OC515, wlth1 O-bit AID-Converter, 1 K x8-bit additionalRAM, 32K x 8-bit ROM, HardwarePowerdown

SAB 83C515Hr3J 06712OC732 C L - C C - 6 8 wie SAB 8OC515, mlt 8K x8-bit EPROManstelle des maskenprogrammierten ROMsas SAB 8OC515, with 8K x8-bit EPROMinstead of maskoroarammable ROM

wie SAB 8OC515, mit 16K X8-bit EPROManstelle des maskenprogràmmierten ROMsas SAB 8OC515, with 16Kxbbit EPROMinstead of maskprogrammable ROM

SAB 83C515H-4J Q67120-C733 C L - C C - 6 8

SMD = Surface Mounted Device

Page 286: LE002-Introduccion a Los Microcontroladores

282 Introducción a los Microcontroladores

TYP Bestellnummer GehäuseTyPe Ordering Code Package

Mikrocontrol lerMicrocontrollers

BeschreibungDescription

8-Bit Single-Chip Mikrocontroller (Forts.)8-Bit Single-Chip Microcontrollers (cont’d)

wie SAB 80515, CMOSas SAB 80515. CMOS

Q67120-C508

Q67120-C510

Q67120-C538

P L - C C - 6 8

P L - C C - 6 8

I SAB 80C535-N

I SAB 80C535-N-T40185

SAB 80C535-N-T40illO

wie SAB 80515, CMOS, - 40 + 85 “Cas SAB 80515, CMOS, - 40 +85 “C

wie SAB 80515, CMOS. - 40 + 110 “Cas SAB 80515, CMOS <- 40 + 110 “C

wie SAB 80515, CMOS, 16 Mi+ôs SAB 80515, CMOS, 16 MHz

wle SAB 80515,CMOS, 16 MHz,- 4 0 +85’C

P L - C C - 6 8

H SAB 80C535-16-N Q67120-C509 P L - C C - 6 8

P L - C C - 6 8

as SAB 80515, CMOS, 16 MHz- 40 +85 “C

mit 256 x8-bit RAM, 8K X 8-bit ROM, Com-pare-/Capture-Einheit, zusätzliche Compare-Ausgänge, Watchdog-Timer, OszillatorWatchdog, 56 EiA-Leitungen, 8-bit AID-Wandler (12 Eingänge), Multiplik.-iDiv.-Einheit, CMOS, 12 MHzwith 256 x8-bit RAM, 8K x 8-bit ROM, Com-pareCapture Unit, additional Compare Out-puts, Watchdog Timer, Oscillator Watchdog,56 110 Lines, 8-bit A’D-Converter (12 chan-nels), MultiplyiDivide Unit, CMOS, 12 MHz

wie SAB 8OC517, - 40 + 85 “Cas SAB 8OC517, - 40 + 85 “C

w i e SAB 8OC517, - 4 0 +llO”Cas SAB 8OC517, - 40 _.. + 110 “C

wie SAB 8OC517as SAB 8OC517

wie SAB 8OC517. - 40 ._. +85’C

SAB 8OC535 16.N-T40185 Q67120-C562

SAB 8OC517-N Q67120-C397 PL-CC-84

P L - C C - 8 4

PL-CC-84

P-QFP-1 OO

Q67120-C483

Q67120-C721

SAB 8OC517-N-T40185

SAB 8OC517-N-T401110

Q67120-C734SAB 8OC517-S

SAB 8OC517-S-T40185 Q67120-C739

Q67120-C740

P-QFP-1 OO

P-QFP-1 OO

a s SAB 8OC517, - 40 + 85 “C

wieSAB80C517,-40... +llO”Ca s SAB 8OC517, - 4 0 +llO”C

wie SAB 8OC517, 16 MHzas SAB 8OC517, 16 MHz

wie SAB 8OC517, 16 MHz, - 40 + 85 “Cas SAB 8OC517, 16 MHz, - 40 + 85 “C

wie SAB 8OC517, 16 MHz, - 40 + 110°CasSAB80C517. 16MHz.-40 +llO”C

SAB 8OC517-S-T401110

P L - C C - 8 4

PL-CC-84

PL-CC-84

06712OC723

Q67120-C724

SAB 8OC517-16-N

SAB 80C517-16-N-T40185

Q67120C726SAB 8OC517-16-N-T401110

SAB 8OC517-16-S wie SAB 8OC517, 16 MHzas SAB 8OC517, 16 MHz

wie SAB 8OC517, 16 MHz, - 40 +85”Cas SAB 8OC517, 16 MHz, - 40 . . . + 85 “C

wie SAB 8OC517, 16 MHz, - 40 . . . + 110 “CasSAB80C517, 16MHz,-40... +llO”C

06712OC735

Q67120-C743

P-QFP-1 OO

P-QFP-1 OOSAB 8OC517-16-S-T40185

P-QFP-1 OOQ67120-C744

:e

SAB 80C517-16-S-T40/110

SMD = Surface Mounted De

Page 287: LE002-Introduccion a Los Microcontroladores

Apéndice D. Características de microcontroladores de otros fabricantes 283

TYPTvPe

Bestellnummer GehäuseOrderinq Code Packase

BeschreibungDescriotion

MikrocontrollerMicrocontrollers8-Bit Single-Chip Mikrocontroller (Forts.)8-Bit Single-Chip Microcontrollers (cont’d)

SAB 80C517A-N

SAB 8OC517A-5-N

SAB 83C517H-3J

??SAB 80C537-N

SAB 80C537-N-T40185

SAB 80C537-N-T401110

SAB 8OC537-S

SAB 80C537-S-T40185

SAB 80C537-S-T401110

SÁB 8OC537-16-N

SAB 8OC537-16-N-T40185

SAB 8OC537-16-S

SAB 8OC537-16-S-T40185

SAB 8OC537-16-S-T401110

Q67120-C583 P L - C C - 8 4

Q67120-C452

Q67120-C737

Q67120-C717

Q67120-C722

Q67120-C725

P-QFP-1 OO

PL-CC-84

PL-CC-84

Q67120C738

Q67120-C745

P-QFP-1 OO

P-QFP-1 OO

Q67120-C746 P-QFP-1 OO

wie SAB 8OC517, ROMlos, zusfitzlich2KBXRAM (on-chip-RAM), neue senelleSchnittstelle, neuer programmterbarer Baud-raten-Generator, 3 Unterbrechungs-Vektoren,Hardware Poder Down Mode, 18 MHzas SAB 8OC517, ROMless, additional1 KB XRAM (on-chip-RAM), new SenalInterface, new programmable BaudrateGenerator, 3 Interrupt Vectors, HardwarePower Down Mode, 18 MHz

wie SAB 80C517A, 32 KB ROMas SAB 80C517A. 32 KB ROM

wie SAB 8OC517, mit 8K X 8 bit EEPROManstelle des maskenprogrammierten ROMsas SAB EOC 7, with 8K X 8 bit EEPROMinstead of maskoroarammable ROM

wie SAB 8OC517, ROMlosas SAB 8OC517, ROMless

wie SAB 8OC517, ROMlos. - 40 + 85 “Cas SAB 8OC517, ROMless, - 40 + 85 “C

wie SAB 8OC517, ROMlos, - 40 + 110°Cas SAB 8OC517, ROMless, - 40 + 110 “C

wke SAB 8OC517, ROMlosas SAB 8OC517. ROMless

wie SAB 8OC517, ROMlos, - 40 + 85 “Cas SAB 8OC517, ROMless. - 40 + 85 “C

wie SAB 8OC517, ROMlos, - 40 + 110 “Cas SAB 8OC517, ROMless, - 40 + 110 “C

wle SAB 8OC517, ROMlos, 16 MHzas SAB 8OC517, ROMless, 16 MHz

wle SAB 8OC517, ROMlos, 16 MHz,- 4 0 +85’Cas SAB 8OC517. ROMless, 16 MHz,- 40 .__ +85 “C

wie SAB 8OC517, ROMlos, 16 MHzas SAB 8OC517. ROMless. 16 MHz

wie SAB 8OC517, ROMlos, 16 MHz- 40 +85 “Cas SAB 8OC517, ROMless, 16 MHz-4O... ~85°C

wie SAB 8OC517, ROMlos. 16 MHz- 4 0 +11oocas SAB 8OC517, ROMless, 16 MHz-4o... +llo”c

SMD = Surface Mounted Device

Page 288: LE002-Introduccion a Los Microcontroladores

284 Introducción Q los Microcontroladores

0M MOTOROLA

Table 1-3. M6801 Family Selector Gide

DEVICE

6801 HMOS 4068701 HMOS 40El6803 HMOS 4068OlU4 HMOS 4068701 U4 HMOS 406803114 HMOS 40

Definitions:P = PlasticS = Cerdip

110 = InputiOutputSCI = Serial Commt

128128128192192192

2048

-4096--

1terface

-2048--

4096-

1 6161 6161616

PQ64K64K64K64K64K64K L

Yes P,SYes SYes PSllYes P.SYes SYes P

RAM = Random Access MemoryROM = Read Only Memory

EPROM = Eraseable Programmable ROM

Table l-4. M6804 Family Selector Guide

DEVICE

6804P2 HMOS 28 30 1016 20 8 P,FN68704P2 HMOS 28 30 - 1020 20 8 S6804Jl HMOS 20 30 512 - 1 2 8 P6804J2 HMOS 20 30 1000 - 12 8 P68HC04P4 H C M O S 28 172 3700 - 20 8 P68HC04JZ H C M O S 20 30 1000 - 1 2 8 P68HCO4J3 H C M O S 20 122 1672 - 1 2 8 P68HC704P4 H C M O S 28 172 - 3700 20 8 S

Definitions:P = PlasticS = Cerdip

FN = Plastic Leaded Chip Carrier110 = Input/Output

RAM = Random Access MemoryROM = Read Only Memory

EPROM = Eraseable Programmable ROM

Page 289: LE002-Introduccion a Los Microcontroladores

Apéndice D. Características de microcontroladores de otros fabricantes 285

Table 1-5. M6605 Family Selector Guide

28282828

4014440144

4040282828

40/4440144

4040

-6464

11211264

11211211264

10410464

112112112

11101804--

20483776--

14802720-

20483776-

--

18041804--

37763776

-3752-

-

-

37763776

L

-202020203232323221212132323232

/c888aa8888aa8a88

DEVICE IHMOSHMOSHMOSHMOSHMOSHMOSHMOSHMOSHMOSHMOSHMOSHMOSHMOSHMOSHMOS l

---------YesYesYes-

--

P,S,FNP,S,FN

SS

P,S,FNP,S,FN

SS

P.S,FNP,S,FN

SP,S,FNP,S,FN

SS

6805P26805P668705P368705P56805R2 ,6805R368705R368705R56805S268058368705S36805112680511368705U368705U5

ROM = Read Only MemoryEEPROM = Eraseable Programmable ROM

SPI = Serial Peripheral InterfaceAID = AnaloglDigital Converter

P = PlasticS = Cerdip

FN = Plastic Leaded Chip Carrier110 = Inputl0utput

RAM = Random Access Memory

Table 1-6. M6605 HCMOSICMOS Family Selector Guide

/ / /

416041605952209620964160770062084K

41608K

41608K---0

i 0892106

1616161616161616

8/16161616161616168a8

-176176176176176176176176128176176176176304176176112

64112

-32323232323232323232323232323232162032

--------------8K----

-2056-

256---------

-62084160---

/ .Q1Yes---

YesYesYesYes-

YesYesYesYesY6-S-

Yes---

DEVICE

6aHC05A668HC05B468HC056668HC05C26aHC05C368HC05C46aHC05CS6aHC05L668HC05M468HCL05C468HCL05C868HSC05C468HSC05C86aHC705C86aHCa05B668HCa06C4146805E2146805F214680562

HCMOS 40/44

---t-

HCMOS 4a/52HCMOS 40152H C M O S 4 0HCMOS 40HCMOS 40144HCMOS 40144HCMOS 68HCMOS 62HCMOS 40144HCMOS 40144HCMOS 40144HCMOS 40/44HCMOS 40144HCMOS 48152HCMOS 40144CMOS 40CMOS 28CMOS 40

P,FNP,FNP,FN

PP

P,FNP,FN

FNFN

PSNP,FNP,FNP,FNP,FNP,FNP.FN‘,S,FN‘,S,FN‘.S.FN

YesYesYeS-

YSYesYes--

YesYesYesYeSYSYesYes---

-YesYes-----

Yes----------

SPI = Serial Peripheral InterfaceRAM = Random Access MemoryROM = Read Only Memory

EPROM = Eraseable Programmable ROMEEPROM = Electrical Eraseable ROM

P = PlasticS = Cerdip

FN = Plastic Leaded Chip Carrier110 = Inputi,Output

AID = AnalogiDigital ConverterSCI = Serial Communications Interface

Page 290: LE002-Introduccion a Los Microcontroladores

286 Introducción a los Microcontroladores

Table 1-7. M68HCll Family Selector Guide

H C M O SH C M O S 4 8 1 5 24 8 1 5 2 256256 -- -- 3838H C M O SH C M O S 4 8 1 5 24 8 1 5 2 256256 -- 512512 3838H C M O SH C M O S 4 8 1 5 24 8 1 5 2 256256 81928192 512512 3838H C M O SH C M O S 4 0 1 4 44 0 1 4 4 1 9 21 9 2 40964096 -- 3030H C M O SH C M O S 5252 512512 00 512512 3838HCMOSHCMOS 5252 512512 12K12K 512512 3838H C M O SH C M O S -- -- -- -- --H C M O SH C M O S 4815248152 256256 -- 2K2K 3838

DEVICE

Definitions:P = Plastic

FN = Plastic Leaded Chip Carrier110 = Input/0utput

A/D = Analog/Digital ConverterSCI = Serial Communication InterfaceSPI = Serial Peripheral Interface

RAM = Random Access MemoryR O M = Read Only M e m o r y

EPROM = Eraseable Programmable ROMEEPROM = Electrical Eraseable ROM

/ / / / /

YesYesYesNo

YesYes

Yes Yes P,FNYes VeS P,FNYes Yes P,FNYes Yes P,FNYes Yes FNYes Yes FN

-Yes

LY:s 1 v, / P,FN /

Table 1-8. One-Time Programmable ROM (OTPROM) Devices

68HC711A8’

68HC711 E9”

NOTES:

1 8192 1 256 38 1 6 AID, SCI, SPI Yes 52-FN

12K 512 38 1 6 A/D, SCI, SPI Yes 48-DIP.52.FN

1. Use MC68HC705C8 for window emulation.2. Definitions:

FN = Plastic Quad (PLCC)D W = Small Outline (Wide-Body SOIC)DIP = Dual-In-Line Package

RAM = Random Access Memory110 = Input/Output

AID = AnalogiDigitalSCI = Serial Communications InterfaceSPI = Serial Peripheral Interface

COP = Computer Operating Properly3. ??Available in 1989.

Page 291: LE002-Introduccion a Los Microcontroladores

Apéndice D. Características de microcontroladores de otros fabricantes 287

BI NationalSemiconductor

The 8-Bit COP800 Family:Optimized for Value

National’s COP800 family provides oost-effective solutionsf o r feature-rich. 6-bil m i c r o c o n t r o l l e r applications.

Key Features?? High-performance E-bit microcontroller?? Full E-bit architecture and implementation? ? 1 PS i n s t r u c t i o n - c y c l e t i m e? ? H i g h code efficiency w i t h s i n g l e - b y t e , multiple-funtiion

i n s t r u c t i o n s. UART? ? A/D c o n v e r t e r? ? Watchdogiclock m o n i t o r? ? On-chip R O M f r o m 1 k b y t e?? On-chip RAM to 192 bytes? ? E E P R O M??M2CMO.S~ fabrication?? MICROWIRE/PLUSM serial interface?? ROMless versions available?? Wide operating voltage range: + 2.5V to + 6V

??Military temp range available: -55°C to + 125’C?? MIL-STDS83C versions available??20. to 44-pin packages

The COPEO0 combines a powerful single-byte, multiple-function i n s t r u c t i o n s e t with a m e m o r y - m a p p e d core archi-tecture similar to the HPCTM.And like the HPC, the COPEO0 family supports a wide vari-ely of ROM, RAM, 110 and peripheral functions.The COPEO0 has an instruction-cycle time of only 1 p, andbecause over 70% of its instruction set is composed of sin-gle-cycle, single-byte instructions, the COPEO0 can deliverexceptional performance for an E-bit engine.A n d since it’s fabricated in N a t i o n a l ’ s a d v a n c e d MZCMOSprocess, the COPSOO has Iow current drain, low heat dissi-pation, and a wide operadng voltage range.

Key Applications?? Automotive systems?? Process controlm Roboticsw T e l e c o m m u n i c a t i o n s?? AC-motor control?? DC-motor control?? Keyboard controllers?? Modems?? RS232C controllersT h e COPEO0 f a m i l y o f f e r s h i g h p e r f o r m a n c e in a low-cost,easy-to-design-in p a c k a g e .

COP888CF Block Diagram

pC 6 BIT COREMOMflED H A R V A R D

ARCHITECTURE

m-l

16 BIT ”nm

Tl P L U S

::

IUEGAL

r

I Ll

C O N DMTECT

C P URECISTER

I l/O PORT9

TLIXXIW73-3

Page 292: LE002-Introduccion a Los Microcontroladores

288 Introducción a los Microcontroladores

COP800 Family of Microcontrollers

Commerclal IndustrlalTemp Version Temp Verslon0°C to + 70°C -40% to + 85°C

IMeI

MilitaryTemp Verilon ROM-WC to + 125°C (Bytes

l-W

RAMBytes :

COP82OCCOP821CCOP822C

COP8640C O P 8 6 4 1C O P 8 6 4 2COP8620C O P 8 6 2 1C O P 8 6 2 2

COP872OC

:OP62OC 1 . O k:OP621C 1 .Ok:OP622C 1 .Ok

2.0k2.0k2.0k1 .Ok1 . O k

6 46 46 4

6 46 46 46 46 46 4

6 4

I

iiiPina-2 42 01 6-2 42 01 62 42 01 6-2 4

-ierlaI/O-YesYesYes

YesYesYesYesYesYes-Yes

COP8721C 6 4 2 0 Yes

COP8722C 1 .Ok Ef 6 4 1 6 Yes

l-

COP84OC COP64OC 2.0kCOP841C COP641 c 2.0kCOP842C COP642C 2.0k

COP884CF COP684CF 4.0k

COP884CG COP684CG 4.0k

COP884CL COP684CL 4.0k

COP888CF COP688CF 4.0k

Development SupportDEVELOPYENT SYSTEMThe Microcomputer On Line Emulator Development Systemis a low cost development system and emulator for all mi-c r o c o n t r o l l e r p r o d u c t s . T h e s e include COPSM microcon-trollers and the HPC family of products. The COP800 Devel-o p m e n t S y s t e m consists o f a B R A I N B o a r d , P e r s o n a l i t yBoard and optional host software.T h e p u r p o s e o f t h e D e v e l o p m e n t S y s t e m is t o provide t h euser with a loo1 to write and assemble code. emulate codef o r t h e t a r g e t m i c r o c o n t r o l l e r a n d a s s i s t in b o t h s o f t w a r eand hardware debugging of the system.

1 2 81 2 81 2 8

1 2 8

- -2 4 Yes2 0 Yes1 6 Yes- -2 1 Yes

1 9 2 2 3 Yes

1 2 8

1 2 8

2 3-313

Yes

1 9 2

1 2 8

5f3

3/3-

Yes

Yes

Yes-

Features

TlmerInterrupt Stack Bass

Counten

3 S o u r c e s InRAM 13 S o u r c e s In RAM 13 S o u r c e s In RAM 1

3 S o u r c e s In RAM 13 S o u r c e s In RAM 13 S o u r c e s In RAM 13 S o u r c e s In RAM 13 S o u r c e s In RAM 13 S o u r c e s In RAM 1

3 S o u r c e s In RAM 1

3 S o u r c e s I n R A M 1

3 S o u r c e s In’RAM 1

3 S o u r c e s In RAM 13 S o u r c e s In RAM 13 S o u r c e s In RAM 1

10 S o u r c e s In RAM 2

12 S o u r c e s In RAM 3

10 S o u r c e s In RAM 2

10 S o u r c e s In RAM 2

14 S o u r c e s In RAM 3

10 Sources In RAM 2

ISI20Plns) Other

2 82 42 0

2 8 64x82 4 E E P R O M2 0 in R A M2 8 64x82 4 E E P R O M2 0 in R A M

2 8 64x8E E P R O Min R A M

2 4 64x8EEPROMin R A M

2 0 64x8E E P R O Min R A M

2 82 42 0

2 8 PPWM&A I D

2 8 3PWM&U A R T

2 8 PPWM

It is a self contained computer with its own firmware whichprovides f o r all s y s t e m o p e r a t i o n , e m u l a t i o n c o n t r o l , com-munication, PROM programming and diagnostic operations.It contains three serial porls to optionally connect to a termi-nal, a host system, a printer or a modem, or to connect too t h e r D e v e l o p m e n t S y s t e m s in a multi-Development Sys-t e m e n v i r o n m e n t .T h e D e v e l o p m e n t S y s t e m c a n b e used in e i t h e r a s t a n da l o n e m o d e o r in c o n j u n c t i o n w i t h a s e l e c t e d h o s t s y s t e musing PC-DOS communicating via a RS-232 port.

Page 293: LE002-Introduccion a Los Microcontroladores

Indice analítico

Acarreo (Carry), 269.ACC o A, Regis t ro , 25.Acceso a memoria datos, 2 1.Acceso a memoria programas, 17.ADD A, <byte>, Instrucción, 34, 39, 60, 92.ADDC A, <byte>, Instrucción, 39,60,269.ALE, Señal (pin ALE/PROG), 6, 17, 133.Alternativa Estructura. Modelo de programa-

ción, 9 1.ANL A, <byte>, Instrucción, 42, 6 1, 99 .ANL C, bit (/bit), Instrucción, 49, 50,64, 101.Area de direccionamiento DIRECTO, 23.Area de direccionamiento INDIRECTO, 22,

23 .Area de direccionamiento SFR, 23, 25.Arranque TIMERs por Hardware, 160.Arranque TIMERs por Software, 157, 159.ASIC (Application Specific Integrated Cir-

cuits), XVIIAurorrecarga, TIMERs, 163, 176, 178.A/Dx, Señal (bus de direcciones y datos), 4,

131, 134.

Banco de Registros, 23.Basic, Intérprete, XVII.Bit a bit, Sub-area direccionable, 24.Borrado, EPROMs, 14.Buffer, Port de entrada, 6, 130.B, Regis t ro , 26.

CALL addr, Instrucción, 52, 54, 64, 121.Captura, Modo de, 169, 173, 180.

Carry (Acarreo), 269.Cerrojo, Bits (Lock Bits), 13, 235.Ciclo de escritura, Memoria externa de datos,

135.Ciclo de instrucción, 36.Ciclo de lectura, Memoria externa de datos,

133.Ciclo de lectura, Memoria externa de.progra-

mas, 133.Ciclo máquina, 19.CJNE A, <byte>, rel, Instrucción, 56, 57, 65.CJNE <byte>, #data, rel, Instrucción, 56, 58,

108.CLR A, Instrucción, 41, 62.CLR bit, Instrucción, 49, 64.CLR C, Instrucción, 49, 64, 103.Comprobación de bits , Modelo de Programa-

ción, 99.Comprobación de bytes, Modelo de Progra-

mación, 103.Comunicaciones en MODO 0, 246.Comunicaciones en MODO 1, 255.Comunicaciones en MODO 2 y 3, 258.Comunicaciones, Modos de, 239.Consul ta (Pol l ing) , 183.Contadores, TIMERs, 150.Contaje, Operación de, 164, 167, 173.Conversión fichero .HEX a .BIN, 230.CPL A, Instrucción, 4 1,62.CPL C, Instrucción, 49, 5 1, 64.CPL bit, Instrucción, 49, 64.

DA A, Instrucción, 39,40, 6 1 .

289

Page 294: LE002-Introduccion a Los Microcontroladores

290 Zndice

DEC A, Instrucción, 39, 6 1.DEC <byte>, Instrucción, 32, 39, 97.Diálogo (handshaking), Protoloco de, 183.Direccionamiento Directo, 33.Direccionamiento Implícito, 35.Direccionamiento Indexado, 35.Direccionamiento Indirecto, 34.Direccionamiento por Registro, 34.Direccionamiento, Modos de, 33.Direccionar memoria, 19.DIV AB, Instrucción, 39, 61, 273.DJNZ <byte>, rel, Instrucción, 56, 65, 95.DPL y DPH, Registros, 27.Driver, Puerto de salida, 6, 130.Dúplex, Modo de comunicación, 239.

EA, Señal (pin EAJVPP), 6,69, 133.Editado, Operación de, 78.Ejecución, Operación de, 77, 84, 236.Emulador, 66.Encriptación, Cadena, 13, 236.Enlazado (link), Operación de, 82.Ensamblador directo, 7 1.Ensamblado, Operación de, 79.Escritura, Puertos de Entrada/Salida, 135.

Familia microcomputadora, XV.Flags, Información de estado, 26.

Generador de baudios, 242.Grabar memorias, Operación de, 10, 23 1,

HEXBIN.EXE, Fichero, 230.

Idle, Modo de bajo consumo, 276.IE, Registro, 25, 186.INC A, Instrucción, 39,60.INC DPTR, Instrucción, 39, 61, 117.INC <byte>, Instrucción, 39,61.Instrucciones Aritméticas, 39, 60.Instrucciones Booleanas, 48, 64.Instrucciones de Salto Condicional , 55,64.Instrucciones de Salto Incondicional , 5 1, 64 .Instr. Transfer. de Datos sobre RAM externa,

44, 62.Instr. Transfer. de Datos sobre RAM interna,

42, 62.

Instrucciones de Tratamiento de Tablas, 46,63.

Instrucciones Lógicas, 40, 6 1.Instrucciones MOVC, 46.Instrucciones MOVX, 44.Instrucciones, Tipos, 36.Interrupciones internas (TIMER 0 y l), 207.Interrupciones internas (TIMER 2), 2 12 .Interrupciones, Prioridad de las, 190.Interrupciones, Tabla de vectorización de, 18,

187.Interrupción, Borrado de los f lags, 189.Interrupción, Ciclo de, 188.Interrupción, Retorno de, 52, 190.Interrupción, 18 3.INTO, INT 1, Señales, 18, 19 1.IP, Registro, 28, 190.Iterativa, Modelo de Programación, 94.

JB y JBC bit, rel, Instrucciones, 49, 64.JC rel, Instrucción, 49, 64.JMP addr, Instrucción, 52, 64, 97.JMP @A+DPTR, Instrucción, 52, 53,65.JNB bit, rel, Instrucción, 49, 51, 64, 203.JNC rel, Instrucción, 49, 64, 178.JZ y JNZ rel, Instrucciones, 56, 65, 92.

Latch, Puertos de Entrada/Salida, 6, 133.Lectura, Puertos de Entrada/Salida, 139.

Macroensamblador, 77.Mapa de memoria, 224.Memoria combinada, 16.Memoria de datos, 2 1.Memoria de programas, 17.Memoria externa, 16, 21, 133.Memoria interna, 16, 17, 2 1.Memoria mixta, 17.Memoria segregada, 16.Memoria, Dirección de, 2 1.Microcomputador Monopasti l la , XV.Microcontrolador, XVI.Microcontrolador 8052/805 1, Característ icas,

2 .Microcontroladores de bajo consumo, 274.Microcontroladores, Características, XVI.Microcontrolador, Patillaje, 4.Microcontrolador, Puertos (PORTs), 5 .

Page 295: LE002-Introduccion a Los Microcontroladores

lndice 2 9 1

Microprocesador. El Microcontrolador como,130.

Modelo de programación, 9 1.Modo operación de los TIMERs, 152 .Modo 0, Timers, 146.Modo 1, Timers, 156.Modo 2, Timers, 163.Modo 3, Timers, 166.MOV A, <src>, Instrucción, 42, 62, 92.MOVC A, @A+DPTR, Instrucción, 46, 63,

117.MOV bit , C y MOV C, bi t , Instrucción, 49,64.MOV DPTR, #data 16, Instrucción, 42, 63,

117.MOV <dest>, A, Instrucción, 42, 63, 92.MOV <dest>, <src>, Instrucción, 42, 63, 95.MOVC QA+PC, Instrucción, 46, 63.Movimiento de tablas, Estruc. de programa-

ción, 113.MOVX A, @DPTR, Instrucción, 44,63, 114.MOVX A, @Ri, Instrucción, 44,63.MOVX @DPTR, A, Instrucción, 44,63, 114.MOVX @Ri, A, Instrucción, 44, 63.MUL AB, Instrucción, 39, 61, 273.Multiprocesador, Estructura, XVI, 240.

NOP, Instrucción, 52, 65, 92.

Operación RESET, 29, 237.ORL i’i, *<byte>, Instrucción, 41, 61.OR!. C, bit, Instrucción, 49, 64.CRL C,/bít, Instrucción, 49, 64.QRt .>yte>, A, Instrucción, 4 1, 6 1.ORL <byte>, #data, Instrucción, 41, 61,229.Oscilador, Reloj externo, 9.Oscilador, Reloj interno, 8.Overflow, 27 1.

Paso a paso, Ejecución, 75.PCON, Registro, 25, 275.Pila, Gestión de la, 125.POP <dest>, Instrucción, 42, 63, 126.Power Down (modo bajo consumo), 276.Procesador booleano, XVII, 48.Programación, EPROM, 10, 23 1.Programación, Tiempo, 9.PROG, Señal (pin ALE/PROG), 6, 10.

Protección, programa ROM/EPROM, 13,234.

PSEN, Señal, 6, 16, 133.PSW, Regis t ro , 26.Puerto serie, 239.Puertos (ports) , 5 .PUSH <src>, Instrucción, 42, 63, 126.PWM. Modulación por anchura de pulso,

XVII, 222.PO-Pl-P2-P3, Puertos o Por&, 27.

Quick-pulse, Algori tmo de programación, 9.

RD, Señal, 8, 16, 133.Registro ACC (A), 25.Regis t ro B, 26.Registro DPL y DPH, 27.Registro IE, 28, 187.Registro IP, 28, 190.Registro PCON, 28, 275.Regis t ro PSW, 26.Registro PO, PI, P2, P3, 27.Registro RCAP2H-RCAP2L, 27, 170.Registro SBUF, 27, 239.Registro SCON, 28, 24 1.Regis t ro SP, 26 .Registro TCON, 28, 153.Registro THO-TLO, 27, 15 1.Registro THl-TLl, 27, 151.Registro TH2-TL2, 27, 170.Registro TMOD, 28, 152.Registro T2CON, 28, 168.Regis t ros SFR, 25 .Registros, Bancos de, 23.RESET automático, Señal , 3 1.RESET (RST), Señal, 29.Retardo (Timers), 150.Retardo, Modelo de programación, ll 1.RETI, Instrucción, 52, 55, 64.RET, Instrucción, 52, 55, 120.RL A, Instrucción, 41, 53, 62, 125.RLC A, Instrucción, 4 1, 62,2 16 .Rotaciones, 125.RR A, Instrucción, 41, 62.RRC A, Instrucción, 41,62, 1.96.Ruptura, Puntos, 73.RXD, Señal, 8,239.

Page 296: LE002-Introduccion a Los Microcontroladores

‘292 Indice

SBUF, Registro, 27, 239.,SCON, Registro, 28, 241.Secuencia de búsqueda, 19.SETB bit, Instrucción, 49, 64, 103.SETB C, Instrucción, 49, 64, 10 1.SFR (Special Function Register), 25.Simulador, 66.Sistema de desarrollo de aplicaciones, 66.Sistema integrado, XVI.Sistema microcomputador, XV.SP, Regis t ro , 26.Sub-área direccionable «bit a bit», 24.Sub-area «scratch pad», 24.SUBB A, <byte>, Instrucción, 39,60, 92, 270.Subrutinas, Tratamiento de, 120.SWAP A, Instrucción, 41, 62, 143.

Tablas, Movimiento de, 113.Tablas, Tratamiento de, 116.TCON, Registro, 28, 153.Temporizadores (Timers), 150.THO-TL0 y TH 1 -TL1 , Registros, 27, 15 1.TH2-TL2, Registros, 27, 170.TMOD, Registro, 28, 152.TXD, Senal, 8, 235, 246.

TO y Tl, Senales Time& 8, 150.T2CON, Registro, 28, 168.T2EX, Señal, 7, 170.T2, Señal del TIMER2, 7, 168.

:: . 7

USD (Universal Symbolic Debugger) , 69.

VCC (pin’VCC), 3.Verificación, EPROM, 12, 233.VPP (pin EAIVPP), 6, 9.VSS (pin VSS), 3.

WR, Señal (pin WR), 8, 16, 19, 133.Watchdog, XVII.

XCH A, <byte>, Instrucción, 42, 43, 63.XCHD A, @Ri, Instrucción, 42, 43, 63.XRL A, <byte>, Instrucción, 41, 62.XRL <byte>, A, Instrucción, 41, 62, 138.XRL <byte>, #data, Instrucción, 41,62, 105.XTALl (pin XTALl).XTAL2 (pin XTAL2),

8. . ..’