Professional Documents
Culture Documents
Introduccin El artculo presente tiene como objetivo describir el diseo de un sistema digital basado en el microprocesador de 8 bits 8085 de Intel. Este sera el ltimo de los microprocesadores de 8 bits de propsito general desarrollado por la firma Intel Corporation y consiste de una versin mejorada de su microprocesador 8080. Se seleccion el microprocesador 8085 por las ventajas que ste ofrece entre los microprocesadores de 8 bits, entre las cuales se pueden nombrar su generador interno de reloj, su controlador interno del sistema, su bajo costo y su amplio repertorio de chips de soporte que lo hacen atractivo en aplicaciones de control. El sistema descrito consiste, adems del microprocesador, de una memoria RAM de 2 Kbytes, una memoria EPROM de 8 Kbytes en la cual residir el programa, 3 puertos de entrada/salida programables y un convertidor analgico/digital el cual es utilizado para obtener el valor de la temperatura de un lquido contenido en un recipiente. El sistema digital diseado es apropiado para ser implementado como proyecto de curso de un semestre de duracin por estudiantes relacionados con el tema de microprocesadores. El microprocesador La distribucin de terminales del circuito integrado del microprocesador 8085 se muestra en la figura 1. Como se puede observar en la figura, este microprocesador opera con una sola fuente de alimentacin de + 5 voltios conectada entre los terminales 20 y 40. Las lneas TRAP, RST 7.5, RST 6.5, RST 5.5 e INTR (Interrupt Request) son entradas de interrupcin por donde los dispositivos perifricos pueden solicitar atencin del microprocesador . Presentan distintos niveles de prioridad, siendo TRAP la lnea ms prioritaria e INTR la de menor prioridad. A una solicitud de interrupcin por la lnea INTR, el microprocesador contesta con un pulso negativo INTA (Interrupt Acknowledge) si acepta la interrupcin. Durante el pulso INTA, el dispositivo perifrico deber colocar en el bus de datos del microprocesador el vector de interrupcin el cual consiste de un cdigo de 8 bits que tiene la informacin de la direccin de memoria donde est ubicada la subrutina de servicio del dispositivo.
D DE EP PA AR RT TA AM ME EN NT TO OD DE EL LA AB BO OR RA AT TO OR RIIO OS S G U I A S D E L A B O R A T O R I O D E S I S T E M A D I G I T A L B A S A D O E N M I C R O P R O C E S A D O GUIAS DE LABORATORIO DE SISTEMA DIGITAL BASADO EN MICROPROCESADOR R
El cdigo de este vector de interrupcin o RSTn es igual a 11NNN111, donde n es un nmero de 3 bits igual a NNN. Introduciendo este cdigo con el pulso INTA el microprocesador guarda la direccin de memoria de retorno en la pila y salta a la direccin 8 * n. Se debe destacar que el microprocesador genera automticamente en su interior los distintos vectores de interrupcin a solicitudes efectuadas por las otras entradas de interrupcin, por lo que se producir una bifurcacin de forma automtica a las direcciones de memoria donde debern estar ubicadas las subrutinas de atencin correspondientes o un salto a las mismas como se muestra en la tabla 1.
X1 X2 RESET OUT SOD SID TRAP RST 7.5 RST 6.5 RST 5.5 INTR INTA AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
Vcc (+5v.) HOLD HLDA (CLK) OUT RESET IN READY IO/M S1 RD WR ALE S0 A15 A14 A13 A12 A11 A10 A9 A8
8085
MICROPROCESADOR
La lnea RST 7.5 tiene una caracterstica distinta a las otras. El flip-flop de solicitud de interrupcin asociado al dispositivo se encuentra internamente en el microprocesador, lo que hace que esta lnea sea sensible al flanco de subida de un pulso aplicado a la misma por el hardware del dispositivo. En cualquier otra lnea (INTR, RST 6.5 Y RST 5.5) debe permanecer un nivel de 1 fijo hasta que la interrupcin sea reconocida por el microprocesador. El flip-flop interno de solicitud de interrupcin asociado a la lnea RST 7.5 se resetea con una de las siguientes acciones: 1. Reseteando al microprocesador, esto es, colocando un 0 en la entrada (Reset In). 2. Mediante el software con una instruccin SIM (Set Interrupt Mask) con el bit 4 del acumulador en 1. 3. Automticamente con un reconocimiento del microprocesador a una solicitud de interrupcin por la lnea RST 7.5. La lnea TRAP es sensible tanto a un flanco como a un nivel aplicado. Esta entrada debe ir a 1 y permanecer en 1 hasta que sea reconocida la solicitud de interrupcin. Una nueva interrupcin no ser reconocida hasta que esta lnea vaya a 0 y despus nuevamente a 1. Las lneas de interrupcin excepto TRAP pueden ser enmascaradas o inhabilitadas mediante una instruccin DI (Disable Interrupt) lo cual coloca al flip-flop interno INTE en el estado 0. Este flip-flop es el responsable de habilitar o inhabilitar las lneas de interrupcin excepto TRAP que es una lnea no-enmascarable. Con la instruccin EI (Enable Interrupt) se coloca al flip-flop INTE en 1 habilitando todas las lneas de interrupcin. Cuando el microprocesador reconoce una interrupcin, automticamente coloca INTE=0 inhabilitando todas las lneas enmascarables, por lo que en el software habr que ejecutar la instruccin EI para permitir futuras interrupciones por estas lneas. Si INTE=1, las lneas RST 7.5, RST 6.5 y RST 5.5 pueden ser inhabilitadas individualmente colocando un cdigo apropiado en un registro interno del microprocesador denominado registro de mscaras como se muestra en la figura 2.
7 6 5
X
SOD SOE
Las funciones de los distintos bits colocados en el registro de mscaras se describen a continuacin.
Bits 0, 1 y 2. Un 1 colocado en estos bits del registro inhabilita la lnea respectiva. Un 0 la habilita. Bit 3 MSE (Mask Set Enable). La instruccin SIM mueve el contenido del acumulador al registro de mscaras. El bit 3 debe estar en 1 cuando se ejecute la instruccin SIM para poder alterar los bits 0, 1 y 2 anteriores. Bit 4 R7.5. Un 1 colocado en el bit 4 resetea el flip-flop interno de solicitud de interrupcin asociado a la lnea RST 7.5. Bit 7 SOD = Serial Output Data. El terminal 4 del microprocesador por el cual se transmiten datos en forma serial es una rplica de este bit del registro de mscaras el cual puede ser colocado en un determinado nivel lgico mediante la instruccin SIM. Con esta instruccin, el bit 7 del acumulador es colocado en el bit 7 del registro de mscaras si el bit 6 (SOE= Serial Output Enable) es colocado en 1. La instruccin RIM (Read Interrupt Mask) almacena en el acumulador del microprocesador el estado de las mscaras de interrupcin, las interrupciones pendientes y el nivel del terminal 5 SID (Serial Input Data) utilizado para recibir datos en forma serial. De esta forma el estado de las interrupciones puede ser monitoreado bajo el control del programa. Cuando las interrupciones estn inhabilitadas pero pendientes, el programa puede de forma selectiva habilitar una lnea en particular para atender una solicitud de interrupcin en cuestin. El contenido del acumulador despus de una instruccin RIM se muestra en la figura 3.
Mscaras de interrupcin SID I 7.5 I 6.5 I 5.5 IE M7.5 M6.5 M5.5
Terminales 1 y 2. (X1) y (X2). Estos terminales son utilizados para fijar la frecuencia interna de los pulsos de reloj. En estos terminales se puede colocar un cristal de cuarzo o una resistencia cuando la estabilidad de la frecuencia del reloj no es un factor determinante. En el sistema digital descrito se utiliza una resistencia de 10 Kohmios que fija la frecuencia de los pulsos de reloj 1.5 MHz. Terminal 36 (Reset In).
D DE EP PA AR RT TA AM ME EN NT TO OD DE EL LA AB BO OR RA AT TO OR RIIO OS S G U I A S D E L A B O R A T O R I O D E S I S T E M A D I G I T A L B A S A D O E N M I C R O P R O C E S A D O GUIAS DE LABORATORIO DE SISTEMA DIGITAL BASADO EN MICROPROCESADOR R
Colocando esta entrada en 0 se resetea el microprocesador provocando las siguientes acciones. 1. Se limpia el contador de programa, por lo que el microprocesador comenzar ejecutando la instruccin que se encuentre en la direccin 0000H cuando (Reset In) regrese a 1. 2. Las lneas de datos y direcciones, as como las lneas de control se colocan en el estado de alta impedancia mientras (Reset In) = 0. 3. Coloca al flip-flop INTE en 0 inhabilitando las interrupciones. Igualmente se resetea el flip-flop interno de solicitud de interrupcin asociado con la lnea RST 7.5 y se colocan en 1 las mscaras de interrupcin. Mientras (Reset In) = 0, el microprocesador se encuentra en el estado de Reset en el cual la lnea de salida Reset Out, terminal 3, se activa con un 1. Se utiliza generalmente como seal general de reset del sistema y est sincronizada con los pulsos de reloj del microprocesador los cuales pueden ser obtenidos del terminal 37 identificado como CLK OUT. La seal HOLD, terminal 39, le indica al microprocesador que un dispositivo externo solicita tener acceso directo a memoria (DMA : Direct Memory Access). Cuando el microprocesador acepta o reconoce la solicitud, responde colocando en 1 la seal HLDA (Hold Acknowledge), terminal 38. Esto ltimo le indica al dispositivo que el microprocesador libera los buses de datos y direcciones, las seales de RD, WR e IO/M colocando todas estas lneas en el estado de alta impedancia. Esto permite al dispositivo externo tomar el control de los buses del sistema para efectuar una transferencia de datos directamente con la memoria sin la intervencin del microprocesador. Las seales de RD y WR son pulsos negativos generados por el microprocesador por los terminales 32 y 31 respectivamente cuando va a efectuar una operacin de lectura o escritura en la memoria o en un puerto de entrada/salida. Las seales S1, S0 e IO/M son seales de estado del microprocesador obtenidas en los terminales 33, 29 y 34 respectivamente que identifican el ciclo de mquina en curso en el microprocesador, esto es, si se trata de un ciclo de bsqueda, de un ciclo de lectura de memoria, de un ciclo de escritura de memoria, etc. De estas, la ms utilizada es IO/M que indica si la operacin de lectura o escritura se realiza en memoria o en un puerto de entrada/salida. IO/M = 0 indica que la operacin se realiza en la memoria e IO/M= 1 indica que la operacin se efecta en un puerto. De la misma forma, S1S0=00 indica que el microprocesador se encuentra detenido en el estado de ALTO, 01 que se encuentra realizando una operacin de lectura, 10 una operacin de escritura y 11 que se encuentra en el ciclo de mquina de bsqueda en el cual lee de la memoria el cdigo de operacin de una instruccin.
La duracin de un estado en el microprocesador se identifica con un perodo de los pulsos de reloj. Todos los ciclos de mquina tienen 3 estados, excepto el ciclo de bsqueda que puede tener 4 6 estados dependiendo de la instruccin. Todo un ciclo de instruccin consta de uno o ms ciclos de mquina, entendindose que se produce un nuevo ciclo de mquina cada vez que el microprocesador hace referencia a memoria o a un dispositivo de entrada/salida. As por ejemplo, la instruccin STA 2382H (Store Accumulator) que almacena el contenido del acumulador en la direccin de memoria especificada consta de 4 ciclos de mquina. Un primer ciclo de bsqueda donde se lee de la memoria el cdigo de operacin de la instruccin el cual le indica al microprocesador las actividades que debe realizar a continuacin, 2 ciclos de lectura de memoria (Memory Read) en los cuales se lee la direccin de 16 bits especificada por la instruccin y un ltimo ciclo de escritura de memoria (Memory Write) en donde el microprocesador saca por el bus de direcciones la direccin leda anteriormente para almacenar en esta localizacin de memoria el contenido del acumulador que est sacando por el bus de datos. La seal de READY (terminal 35) es utilizada por un dispositivo de entrada/salida o la memoria para poder solicitar al microprocesador uno o ms estados de espera intercalados entre los estados T2 y T3 de un ciclo de mquina. As por ejemplo, durante un ciclo de lectura de memoria en el estado T1 al comienzo del ciclo de mquina el microprocesador coloca la direccin de la localizacin de memoria que va a leer en el bus de direcciones y en el estado T3 almacena internamente el contenido del bus de datos. Si el tiempo de acceso de la memoria es tal que no le da tiempo a la misma a colocar el dato en el bus de datos tendr que solicitar espera intercalando estados del mismo nombre entre los estados T2 y T3 mientras la seal READY=0. El microprocesador consta de un bus de datos de 8 bits y un bus de direcciones de 16 bits, pudiendo direccionar por tanto 216 = 64 Kbytes de memoria. A8 a A15 (terminales 21-28) constituyen los bits de mayor orden de la direccin y los bits AD0 a AD7 (terminales 12-19) son lneas compartidas por el bus de datos y los 8 bits de menor orden de la direccin. Esto es, las lneas AD0-AD7 constituyen un bus multiplexado. Al comienzo de un ciclo de mquina estas lneas son unidireccionales y contienen los 8 bits de menor orden A0-A7 de la direccin de memoria o de un puerto de entrada/salida seleccionado. Posteriormente en el ciclo de mquina estas lneas son bidireccionales y se convierten en el bus de datos del sistema. El pulso ALE (Address Latch Enable) es generado por el microprocesador por el terminal 30 al comienzo de un ciclo de mquina para indicar que la parte baja de una direccin se encuentra en las lneas AD0-AD7 como se ilustra en la figura 4.
Reloj
A8-A15
AD0-AD7 ALE
dato
En esta figura se han representado las seales que ocurren durante un ciclo de lectura de memoria. Al comienzo del estado T1 del ciclo de mquina el microprocesador coloca el byte de mayor orden de la direccin en las lneas A8-A15 y permanece constante hasta el final del estado T3 y el byte de menor orden de la direccin lo coloca en las lneas AD0-AD7. Este byte sin embargo permanece en estas lneas solamente hasta el comienzo del estado T2 en cuyo momento las lneas AD0-AD7 se convierten en lneas de datos. Observe que el pulso ALE es generado mientras la parte baja de la direccin se encuentra en las lneas AD0-AD7. Durante el estado T2 el pulso de lectura RD va a 0 habilitando la salida de memoria y colocando sta con su demora inevitable su dato en las lneas AD0-AD7. Con el flanco positivo del reloj en el estado T3 el microprocesador almacena internamente el dato que le llega por estas lneas. Durante todo el ciclo, la seal IO/M = 0 indicando que la operacin de lectura se efecta en la memoria. De acuerdo con la descripcin anterior se hace necesario demultiplexar o retener la parte baja de la direccin como se muestra en la figura 5.
X1
10 Kohmios
X2
20 picofaradios
+5V. R Reset
8085
ALE C
Latch oc 74LS373
+
C
RESET IN
AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
R : 47 Kohmios C : 10 microfaradios
En esta figura se ha utilizado el latch de 8 bits con salidas de 3 estados 74LS373 para retener el byte de menor orden de la direccin. Las salidas se encuentran permanentemente habilitadas al estar conectada su entrada OC (Output Control) a tierra 0 voltios. El pulso ALE del microprocesador alimenta la entrada C del latch, por tanto, cuando ALE se hace 1 las salidas del latch toman los valores de sus entradas y cuando ALE regresa a 0 estos valores son retenidos en el latch. La red RC de 47 Kohmios y 10 microfaradios es utilizada para resetear al microprocesador en el instante inicial que se conecte la energa elctrica. El diodo es de seal de silicio para proteger la entrada (Reset In) de cualquier posible oscilacin. El switch de Reset se utiliza para resetear al microprocesador manualmente. Entre los terminales X1 y X2 se ha conectado una resistencia de 10 Kohmios para fijar la frecuencia de los pulsos de reloj a un valor aproximado de 1.5 MHz. Interface con memoria. Se debe proveer al sistema digital de una memoria EPROM de 8 Kbytes y una memoria RAM de 2 Kbytes. Para cumplir con estos requerimientos se utilizar el circuito integrado de una EPROM de 8 Kbytes 27C64. Las direcciones de la EPROM deben comenzar en la direccin 0000H.
D DE EP PA AR RT TA AM ME EN NT TO OD DE EL LA AB BO OR RA AT TO OR RIIO OS S G U I A S D E L A B O R A T O R I O D E S I S T E M A D I G I T A L B A S A D O E N M I C R O P R O C E S A D O GUIAS DE LABORATORIO DE SISTEMA DIGITAL BASADO EN MICROPROCESADOR R
Como la EPROM tiene 13 lneas de direccin, las localizaciones de la misma se podrn acceder con las direcciones que van de 0000H hasta 1FFFH. Para la RAM se utiliza el circuito integrado TMS4016. La RAM debe comenzar a continuacin de la EPROM. Como la RAM tiene 11 lneas de direccin, las direcciones en la misma irn desde 2000H hasta 27FFH como se muestra en la figura 6.
A15
.......
A0
EPROM 0001 1111 1111 1111 0010 0000 0000 0000 0010 0111 1111 1111
bit 13 bit 14
2 Kbytes 64 Kbytes
RAM
Direcciones
Memoria EPROM CE: entrada de seleccin OE: habilitacin de salida A0-A12: lneas de direccin DQ0-DQ7: salida de datos
RST 6.5 WR RD IO/M TRAP ALE RST 5.5 RST 7.5 INTR HOLD A15 INTA A14 HLDA A13 S1 A12 S0 A11 SID A10 SOD A9 A8 AD0 AD1 AD2 AD3 AD4 Ready AD5 AD6 AD7
CLK OUT
on/off
+5v.
microprocesador
74LS373
C OC
A0
CE OE A12 .....A0 Vcc EPROM 27C64 Vpp .....DQ0 PGM DQ7 +5v. alimentacin
Figura 7. Memoria
Convertidor analgico/digital El convertidor analgico/digital seleccionado consiste del circuito integrado ADC0801 o similar el cual tiene una resolucin de 8 bits. Tiene salida de 3 estados por lo que se puede acoplar directamente al bus de datos del microprocesador como un puerto de entrada. Tiene un generador de reloj interno para el proceso de conversin, aunque se puede utilizar con el reloj del microprocesador aplicado a su terminal CLK IN si la frecuencia estuviese comprendida entre 100 y 1460 KHz. Utiliza una simple fuente de alimentacin de + 5 voltios. Este convertidor responde a un voltaje diferencial analgico [Vin(+) Vin(-)] aplicado en sus entradas. La distribucin de terminales se muestra en la figura 8.
CS RD WR CLK IN INTR
1 2 3 4 5 6 7 8 9 10
20 19 18
Vcc CLK R DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7
A/D
17 16 15 14 13 12 11
VIN(+) VIN(-)
A GND VREF/2 D GND
ADC0801
Inicie conversin
CS WR INTR
CS RD Dato
3er estado 3er estado
(b)
Lectura del dato. Para leer el dato digital convertido se hacen 0 CS y RD. El convertidor responde quitando la solicitud de interrupcin (INTR va a 1) y coloca el dato digital con su demora intrnseca en sus lneas DB7-DB0 como se muestra en la figura 9b. Voltaje de Referencia.
D DE EP PA AR RT TA AM ME EN NT TO OD DE EL LA AB BO OR RA AT TO OR RIIO OS S G U I A S D E L A B O R A T O R I O D E S I S T E M A D I G I T A L B A S A D O E N M I C R O P R O C E S A D O GUIAS DE LABORATORIO DE SISTEMA DIGITAL BASADO EN MICROPROCESADOR R
El voltaje de referencia del Conv. A/D determina el rango dinmico de la seal diferencial de entrada VIN = VIN(+) VIN(-). VREF = Vcc si no se aplica ningn voltaje al terminal marcado como VREF/2. Si se aplica un voltaje externo a este terminal, por ejemplo 2 voltios, entonces VREF = 4 voltios y ste ser el rango de variacin de VIN. En esta situacin, los escalones en VIN (variacin en VIN en que no cambia la salida digital) ser igual a 4/28 = 15.625 milivoltios como se muestra en la figura 10. Se cumple que VIN = escaln x (valor digital). Por ejemplo, si la salida digital es 00000101 = 5dec, entonces VIN = 5 x 15.625 mV = 78.125 mV, correspondiendo este valor al centro del escaln.
salida digital
11111111
escaln 15.625 mV
46.875 mV
15.625 mV
78.125 mV
31.25 mV
62.5 mV
3.984 v
......
CLK R
A/D
R
CLK IN
CLK Frec =
1
1.1RC
Sensor de temperatura El sensor de temperatura seleccionado consiste del circuito integrado LM335 el cual tiene un coeficiente de temperatura de 10 mV/ C. A la temperatura ambiente de 25 C tiene un voltaje 2.98 voltios segn especificacin del fabricante. Su distribucin de terminales se muestra en la figura 12. Por lo anterior a 0C su voltaje ser 2980mV 10x25= 2.73v y a 100C el voltaje en el sensor ser igual a 2730mV + 10 x 100 = 3.73v.
V+
NC NC NC 1 2 3 4 8 7 6 5 ajuste
V+
+
NC NC R R
salida 10 mv/C
salida
2.98v a 25C
10 mv/C
10K
LM335
circuito bsico
sensor calibrado
Por otro lado, como el sensor produce un voltaje de 2.73 voltios a 0C, se colocar este valor en VIN(-). As cuando la temperatura sea de 0C, VIN(+) (salida del sensor) = 2.73v y VIN = VIN(+) VIN(-) = 0 voltios produciendo el convertidor analgico/digital una salida igual a 00000000. El circuito para efectuar lo anteriormente expuesto se muestra en la figura 13.
alimentacin de +5 v. 10 microfaradios + tantalio 1 3 2 LM4050-4.1 seleccin 10K 150 = 20 ppm/C picofaradios T +5v. 1.2K DB0 RD A/D DB1 CS DB2 DB3 CLK R DB4 DB5 CLK IN DB6 DB7 D GND A GND VIN(+) VREF/2 sensor de temperatura 2.73v 0.01 microfaradios 9.1K / 5% 1K VIN(-) R2 3.9K / 5% 3.3K / 5% 7.5K 5% 1.28v 1K R1 WR
Vcc INTR
330 ohmios
al bus de datos
VR
LM335
10 mV/C
Los pequeos potencimetros R1 y R2 se utilizan para ajustar los voltajes en VREF/2 y VIN(-) en 1.28 y 2.73v respectivamente. El potencimetro R2 ajusta la salida del conv. A/D a 00hex cuando la temperatura sea de 0C y R1 a que tenga una resolucin (escaln) de 10 mV. R1 vara el voltaje entre 1.14 y 1.43v y R2 entre 2.66 y 2.95v aproximadamente. El LM4050-4.1 es un diodo de precisin de referencia utilizado para obtener un voltaje estabilizado de 4.1 voltios con un coeficiente de temperatura muy pequeo. Este voltaje solamente vara con la temperatura a razn de 20 ppm (partes por milln) por cada C. El capacitor de 10 microfaradios conectado a la alimentacin de +5v. del A/D debe ser de tantalio para eliminar los impulsos de ruido que puedan venir por la lnea de alimentacin de +5v. y estar fsicamente conectado lo ms prximo posible al terminal de Vcc del convertidor analgico/digital.
El cable de conexin del sensor de temperatura debe ser trenzado para evitar ruido inducido y conectado a tierra lo ms cerca posible del terminal marcado como AGND (analog ground : tierra analgica) del A/D. El sensor de temperatura LM335 debe ir encerrado en un tubo metlico o de vidrio para construir la sonda que se introduce en el lquido. Debe estar embebido en grasa de silicona para garantizar una buena transferencia de calor y el extremo abierto del tubo debe ir sellado con sellante de silicona de alta temperatura para evitar la entrada de lquido. Puertos Programables Se plantea como requerimiento la implementacin del sistema digital con tres puertos programables, por lo que se utiliza la interface perifrica programable 82C55 de la compaa Intel Corporation. Este circuito integrado goza de gran aceptacin al ser utilizadas sus funciones en la implementacin de computadores personales recientes basados en el Pentium II y empleado para implementar una interface con el teclado y el puerto paralelo de la impresora en muchos computadores personales. En la figura 14a se muestra la distribucin de terminales del 82C55, as como las direcciones internas para seleccionar los distintos registros del mismo. Consta de 3 puertos A, B y C de entrada/salida los cuales son programados como grupos como se muestra en la figura 14b. Es programado por medio de 2 bytes de comando, donde el bit 7 selecciona el byte de comando A o el B. El byte de comando A programa la funcin de los grupos A y B mientras que el byte de comando B coloca en 1 0 en forma individual bits del puerto C del 82C55. Los grupos pueden ser programados en tres modos diferentes. El grupo B puede ser programado en el modo 0 1 y el grupo A en los modos 0, 1 2. Ambos grupos pueden ser programados como entrada o como salida. Modo 0. La operacin en el modo 0 ocasiona que las lneas del grupo funcionen como lneas de entradas con buffer de 3 estados o como lneas de salida con registro. Constituye el modo bsico de operacin. Modo 1. En el modo 1 de operacin, se efecta una transferencia controlada por pulsos por los puertos A o B, mientras que el puerto C proporciona las seales de dilogo o handshaking requeridas para estos puertos. Ya est configurado el puerto como entrada o salida, el dato es almacenado en el mismo como en un registro.
byte de comando A
34 33 32 31 30 29 28 27 5 36 9 8 15 6
D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1
RESET
PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10
Bus de datos
7 Puerto A 1
Grupo B
Puerto C : PC3-PC0 1=entrada 0=salida Puerto B 1=entrada 0 = salida Modo 0=Modo 0 1=Modo 1
CS
82C55
Vcc: 26 GND : 7
Puerto B
Grupo A Puerto C
Puerto C : PC7-PC4 1=entrada 0 = salida Puerto A 1=entrada 0 = salida Modo 00 = modo 0 01 = modo 1 1X = modo 2
A1 A0 0 0 0 1 1 0 1 1
7 0
byte de comando B 6 5 4 3 2 1 X X X
seleccin de 1 bit
(a)
(b)
Figura 14. Interface perifrica programable (a) distribucin de terminales y (b) bytes de comando
Modo 2. El modo 2 de operacin slo es permitido para el grupo A. El puerto A se convierte en bidireccional pudindose efectuar una transmisin y recepcin de datos a travs de las mismas lneas. Puerto de entrada en modo 1. En este modo de operacin, el puerto funciona como un registro con almacenamiento del dato. Esto permite que el dato permanezca en el puerto hasta que el microprocesador se encuentre listo para leerlo. La figura 15 muestra las seales en este modo de operacin, en donde las lneas PC3, PC4 y PC5 del puerto C no manejan datos,
D DE EP PA AR RT TA AM ME EN NT TO OD DE EL LA AB BO OR RA AT TO OR RIIO OS S G U I A S D E L A B O R A T O R I O D E S I S T E M A D I G I T A L B A S A D O E N M I C R O P R O C E S A D O GUIAS DE LABORATORIO DE SISTEMA DIGITAL BASADO EN MICROPROCESADOR R
sino seales de dilogo del puerto A. En la figura 15 se ha supuesto que el puerto A est programado como entrada y el puerto B como salida. El significado de estas seales es el siguiente. 1. STBA: Entrada de pulso que almacena el dato en el puerto A. 2. IBFA (Input Buffer Full) : Salida que indica que el puerto A contiene un dato 3. INTRA : (Interrupt Request) : Salida de solicitud de interrupcin del puerto A. Un 1 en esta salida puede ser utilizado para interrumpir al microprocesador. Esta solicitud de interrupcin puede ser in/habilitada con el flip-flop INTEA interno al 82C55. Este flip-flop puede ser colocado en 1 0 con el bit PC4 mediante el byte de comando B para el caso del puerto A programado como entrada.
STBA
puerto A
IBFA
RD PA0-PA7 dato dato almacenado en el puerto WR OBFB BufferB lleno dato ledo por el microprocesador
RD WR
al dispositivo
82C55
PB0-PB7
dato enviado al puerto
El dispositivo coloca un dato en sus lneas de salida y lo almacena en el puerto A al generar un pulso STBA si el buffer del puerto A est vaco. Este pulso activa las seales IBFA (buffer de entrada lleno) e INTRA (solicitud de interrupcin). Una vez que el microprocesador reconoce por medio del software (IBFA) o hardware (INTRA) que un dato est almacenado en el puerto A, lo lee enviando un pulso de lectura RD. Al leerse el dato del puerto A por el microprocesador, se resttituyen las seales IBFA e INTRA a
D DE EP PA AR RT TA AM ME EN NT TO OD DE EL LA AB BO OR RA AT TO OR RIIO OS S G U I A S D E L A B O R A T O R I O D E S I S T E M A D I G I T A L B A S A D O E N M I C R O P R O C E S A D O GUIAS DE LABORATORIO DE SISTEMA DIGITAL BASADO EN MICROPROCESADOR R
sus estados inactivos hasta que el siguiente dato sea escrito de nuevo en el puerto A por el dispositivo. Puerto de salida en modo 1. En este modo de operacin, el puerto funciona como un registro que almacena el dato enviado por el microprocesador por el bus de datos con el pulso WR. El significado de las seales asociadas al puerto B operando como salida en el modo 1 se describe a continuacin. 1. OBFB: (Output Buffer Full: Buffer lleno). Esta salida se coloca en 0 para indicar que hay un dato escrito o almacenado en el puerto. Regresa a 1 para indicar que el dato fue ledo del puerto por un dispositivo externo. 2. ACKB: (Acknowledge: Reconocimiento). Esta seal es una respuesta del dispositivo externo que indica que ha recibido el dato del puerto. Ocasiona que OBFB regrese a 1 para indicar que el puerto est vaco. Tambin ocasiona que INTRB regrese a 1 para solicitar una nueva interrupcin. 3. INTRB : (Interrupt request: solicitud de interrupcin). Seal utilizada normalmente para interrumpir al microprocesador. Puede ser inhabilitada colocando un 0 en INTEB. Esto ltimo puede ser efectuado colocando un 0 en el bit PC2 con el byte de comando B siempre que el puerto B sea programado como salida. Los bits del puerto C no utilizados por seales de dilogo quedan como lneas de entrada/salida de propsito general. En el ejemplo de la figura 15 seran los bits PC6 y PC7, los cuales quedan programados o como entrada o salida en dependencia de cmo se haya programado el puerto C del grupo A con el byte de comando A. Lectura del puerto C. Modo 1. En el modo 1 el puerto C genera o acepta seales de dilogo con el dispositivo perifrico como se ha visto. La lectura del contenido del puerto C permite al programador monitorear y comprobar el estado de cada dispositivo perifrico y en concordancia tomar la decisin requerida. En la figura 16a se muestra un resumen de las seales de dilogo en el modo 1 y en b se muestran los distintos bits cuando se efecta una lectura del puerto C. Seales en el modo 2. Solamente el grupo A se puede programar en el modo 2, convirtindose el puerto A en bidireccional. Esto permite la transmisin y recepcin de datos a travs de las mismas ocho lneas. Las seales de dilogo en este modo de operacin se muestran en la figura 17.
Modo 1 entrada salida PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 INTRB IBFB STBB INTRA STBA IBFA E/S E/S INTRB E/S OBFB ACKB INTRA E/S E/S OBFA ACKA OBFA INTEA D7 D6 E/S D7 D6
D1 IBFB
D0 INTRB
Grupo B
D1 OBFB
D0 INTRB
INTEB
Grupo A
Grupo B
(a)
(b)
Figura 16. Bits del puerto C, (a) resumen modo 1 y (b) lectura del puerto C
OBFA INTRA
82C55
PC4 PC5 PC0-PC2 STBA IBFA E/S 3
INTR= INTE2.IBF.STB.RD + INTE1.OBF.ACK.WR dato del perifrico al 82C55 dato del 82C55 al perifrico dato del 82C55 al microprocesador
Observacin: cualquier secuencia donde WR ocurra antes que ACK, y STB ocurra antes que RD es permitida INTE1: INTE asociado con OBF: controlado por la accin de set o reset de PC6 INTE2: INTE asociado con IBF: controlado por la accin de set o reset de PC4
La entrada de RESET del 82C55 ocasiona que todos los puertos sean inicializados como puertos de entrada en el modo 0. Interface del 82C55 y el Conv A/D a los buses. En la figura 18 se ilustra la conexin del 82C55 y el convertidor A/D al sistema de buses del microprocesador 8085. Se han utilizado los bits A3 y A2 para seleccionar a estos 2 circuitos integrados. Observe que el decodificador queda habilitado con IO/M= 1. De acuerdo con la conexin efectuada las direcciones de los distintos puertos, el registro de comando del 82C55 y el Conv A/D sern como se muestra en la tabla 3.
A3 A2 A1 A0
74LS04
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
bus de datos
RD WR
Y3 Y2 Y1 Y0 VIN (+)
A/D ADC0801
INTR
PA7.....PA0 PC7.....PC0PB7.....PB0
CS Reset D7 D6 D5 D4 D3 D2 D1 D0
82C55
A1 A0 RD WR
Puerto A
Puerto C
Puerto B
Tabla 3. Direcciones de los dispositivos En la figura 18 se pueden observar los siguientes aspectos: 1. A3A2 = 00 selecciona el convertidor y 01 selecciona el 82C55 2. Con A3A2 = 01, los bits A1A0 seleccionan los distintos elementos del 82C55
3. La seal IO/M = 1, habilita el decodificador, por lo que tanto el convertidor como los elementos del 82C55 se pueden acceder con las instrucciones IN o OUT del microprocesador 4. El convertidor solicita interrupcin por la lnea RST 6.5 del microprocesador. 5. Todos los puertos son inicialmente colocados como entradas en el modo 0 al ser reseteado el 82C55 con la seal Reset Out proveniente del microprocesador. Dispositivos perifricos. Adems del convertidor A/D, el sistema digital debe constar de un display de dos dgitos para colocar el valor de la temperatura leda , una alarma luminosa cuando la temperatura sobrepase un valor preestablecido y un teclado de 4 switches para fijar este valor. Por tanto, la conexin de estos elementos se ilustra en la figura 19. Todos los puertos deben estar configurados en el modo 0. El display est conectado a travs de decodificadores BCD/7 segmentos al puerto B el cual debe ser programado como un puerto de salida donde se almacenar el valor de la temperatura leda. La entrada RBI de las decenas est conectada a tierra para que el cero no se ilumine. El teclado de 4 switches tiene como misin establecer un valor de temperatura sobre el cual debe activarse la alarma. Este valor debe ser colocado en binario, as si se coloca el 0011, la alarma debe iluminarse si la temperatura es mayor de 30C, etc. Un switch cerrado coloca un 0 y abierto un 1. Los switches estn conectados a las lneas PA4-PA7 del puerto A el cual debe ser programado como entrada. El bit PC0 del puerto C es utilizado como seal para hacer iluminar la alarma. As, cuando este bit sea 1 hace conducir al diodo emisor de luz infraroja del aislador ptico cerrando al TRIAC NTE5641 e iluminndose la lmpara. Por tanto, el puerto C debe ser programado como un puerto de salida. El opto-aislador tiene como misin aislar elctricamente las seales dbiles de la alta corriente alterna de 60 HZ que circula por la lmpara de 40 vatios cuando sta se encuentre iluminada y de las lneas de alimentacin de 110 voltios. La resistencia de 33 ohmios en serie con el condensador de 0.01 microfaradios tiene como objetivo minimizar la interferencia de radiofrecuencias cuando se conmuta una alta corriente con el TRIAC NTE5641 como la de la lmpara.
PA4 PA5 PA6 PA7 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 display
+5v.
DC B A LT RBO 74LS47A RBI c d e f g LT D C B A RBO 74LS47A RBI c d e f g 220 a b ohmios 4.7K
a b a b c d e f g
+5v.
4.7K
a b c d e f g
+5V
110v 60 Hz
La lectura del dato se har en la rutina de servicio. Igualmente se hace una conversin de binario a BCD para llevar en este formato el dato al puerto B y alimentar los decodificadores BCD/7 segmentos. De forma similar se analiza el cdigo colocado en los switches para la toma de la decisin de iluminar la alarma. En la tabla 4 se muestra el programa. Programa para leer la temperatura de un lquido,actualizar alarma, visualizar la temperatura en un display y leer una temperatura establecida mediante switches CONV EQU 00H ; Direccin del convertidor PTOA EQU 04H ;Direccin del puerto A PTOB EQU 05H ;Direccin del puerto B PTOC EQU 06H ;Direccin del puerto C COMAN EQU 07H ;Direccin reg de comando 82C55 ORG 0000H 0000 C3 40 00 JMP INICIO ORG 0034H ;Direccin del salto por interrupcin 0034 C3 55 00 JMP SERV ORG 0040H ;Direccin de comienzo 0040 3E 90 INICIO : MVI A,90H ;Programa los puertos y se lleva 0042 D3 07 OUT COMAN ;al registro de comando del 82C55 0044 3E 00 MVI A,00H ;Para desactivar la alarma y 0046 D3 06 OUT PTOC ;se lleva al puerto C PC0=0 0048 31 FF 20 OTRA : LXI SP,20FFH ;Inicializa puntero de la pila en RAM 004B 3E 0D MVI A,0DH ;Para habilitar la lnea RST 6.5 y 004D 30 SIM ;se lleva al registro de mscaras 004E D3 00 OUT CONV ;Inicie conversin 0050 FB EI ;Habilita interrupcin 0051 00 LAZO : NOP ;Se queda esperando hasta que el 0052 C3 51 00 JMP LAZO ;convertidor A/D interrumpa ;Lectura del dato del convertidor analgico/digital cuando interrumpe al microprocesador 0055 DB 00 SERV: IN CONV ;Se lee el dato del convertidor 0057 CD 63 00 CALL DMRA ;Tiempo para prxima lectura 005A CD 73 00 CALL BIBCD ;Transforma dato binario en BCD 005D CD 91 00 CALL DSPLY ;Actualiza display y alarma 0060 C3 48 00 JMP OTRA ;Realizar siguiente lectura ;Subrutina de demora para producir un intervalo de tiempo adecuado entre lecturas 0063 F5 DMRA: PUSH PSW ;Guarda el dato en la pila 0064 3E FF MVI A,FFH 0066 06 FF EXT: MVI B,FFH ;Lazo exterior 0068 05 INT: DCR B ;Lazo interior 0069 00 NOP 006A C2 68 00 JNZ INT
D DE EP PA AR RT TA AM ME EN NT TO OD DE EL LA AB BO OR RA AT TO OR RIIO OS S G U I A S D E L A B O R A T O R I O D E S I S T E M A D I G I T A L B A S A D O E N M I C R O P R O C E S A D O GUIAS DE LABORATORIO DE SISTEMA DIGITAL BASADO EN MICROPROCESADOR R
006D 3D DCR A 006E C2 66 00 JNZ EXT 0071 F1 POP PSW ;Restituye el dato en el acumulador 0072 C9 RET ;Retorna ;Subrutina para efectuar la conversin de binario a BCD del dato del convertidor 0073 06 00 BIBCD: MVI B,00H ;Limpia registro B 0075 48 MOV C,B ;Limpia registro C 0076 D6 0A DIEZ: SUI 0AH ;Resta 10 dec al dato 0078 DA 7F 00 JC SUMA ;Si acarreo se hallaron las decenas 007B 04 INR B ;En B quedan las decenas 007C C3 76 00 JMP DIEZ 007F C6 0A SUMA: ADI 0AH ;La ltima resta no es vlida 0081 D6 01 UNO: SUI 01H ;Para colocar unidades en el reg C 0083 DA 8A 00 JC ACOM ;Si acarreo se hallaron las unidades 0086 0C INR C 0087 C3 81 00 JMP UNO 008A 78 ACOM: MOV A,B ;Las decenas al acumulador 008B 07 RLC ;Se reubica o acomoda en su sitio 008C 07 RLC 008D 07 RLC 008E 07 RLC 008F B1 ORA C ;Se colocan las unidades en A 0090 C9 RET ;A qued con el dato en BCD ;Subrutina para actualizar el display y activar alarma de acuerdo a la posicin de los Sw. 0091 D3 05 DSPLY: OUT PTOB ;Dato al display 0093 47 MOV B,A ;Se guarda el dato en el reg B 0094 DB 04 IN PTOA ;se lee la posicin de los switches 0096 E6 F0 ANI F0H ;Cero a los bits de menor orden 0098 B8 CMP B ;Compara switches con el dato 0099 DA A3 00 JC SET ;Si acarreo activar alarma 009C 3E 00 MVI A,00H ;Para desactivar la alarma 009E D3 06 OUT PTOC ;Se coloca PC0 en 0 00A0 C3 A7 00 JMP FIN 00A3 3E FF SET: MVI A,FFH 00A5 D3 06 OUT PTOC ;Se coloca PC0 en 1 00A7 C9 FIN: RET END Tabla 4. Programa Consideraciones finales El sistema digital descrito puede ser fcilmente utilizado en otras muchas aplicaciones pus constituye un pequeo microcomputador con puertos programables y 10 Kbytes de memoria, 8 Kbytes de EPROM y 2 Kbytes de RAM. El programa ilustrado en la tabla 4
D DE EP PA AR RT TA AM ME EN NT TO OD DE EL LA AB BO OR RA AT TO OR RIIO OS S G U I A S D E L A B O R A T O R I O D E S I S T E M A D I G I T A L B A S A D O E N M I C R O P R O C E S A D O GUIAS DE LABORATORIO DE SISTEMA DIGITAL BASADO EN MICROPROCESADOR R
puede ser grabado en la EPROM con el programador universal del laboratorio de la universidad. Si el estudiante encuentra alguna dificultad en conseguir en el mercado de Cali el diodo de precisin LM4050, ste puede reemplazarse por un pequeo diodo zener de 3.9 voltios, vatio, (por ejemplo, el NTE5007A) aunque no se obtenga la misma exactitud en la medicin. Igualmente el ADC0801 puede ser reemplazado por el ADC0804, el cual tiene las mismas caractersticas diferencindose solamente en la precisin. El diseo anteriormente descrito ya ha sido montado y debidamente comprobado su funcionamiento con resultados completamente satisfactorios, por lo que no contiene el ms mnimo error, tanto en el hardware como en el software desarrollado. Bibliografa 1.- www.intel.com 2.- www.national.com 3.- www.ti.com 4.- Barry B. Brey, Los Microprocesadores Intel, 5 ed, Prentice-Hall, 2001 5.- Intel, Microsystem Components Handbook , Volmenes 1 y 2, 1985