You are on page 1of 48

Transferencia de datos al exterior Descripcin fsica del PPI 8155 Descripcin funcional del PPI 8155 Interconexin del

8155 con el 8085 Ejemplos de E/S con el PPI 8155 Ejercicios

Un paseo por Lanzarote

microprocesadores microprocesador electronica instrucciones set direcciones datos bus 8085 intel foto macro olympus zuiko potencia direccionamiento decodificador salto bucle logicas aritmeticas condicionales programa ensamblador

http://micros.myblog.es/ http://issuu.com/microprocesadores/ 2010 Celestino Bentez Vzquez


Todos los contenidos e imgenes publicados en la revista microprocesadores tienen los derechos reservados quedando prohibida la reproduccin total o parcial de esta publicacin sin el consentimiento expreso de su autor.

8. TRANSFERENCIA DE DATOS AL EXTERIOR.


Ya hemos hablado en el tema anterior sobre la necesidad de disponer en nuestro sistema de un medio de comunicacin con el exterior, es decir disponer en nuestra tarjeta de un componente que nos permita intercambiar informacin. Se ha visto tambin cmo se realizan distintas operaciones de entrada/salida con un componente especializado en dichas funciones. En este tema se tratar sobre otro de los componentes de la casa INTEL, especficamente diseados para este tipo de comunicaciones y que es de funcionamiento bastante similar al tratado en el tema anterior, aunque con sus caractersticas propias. Se trata en este caso del PPI 8155, un dispositivo diseado para trabajar con microprocesadores INTEL, que dispone de tres puertos de comunicaciones entrada/salida y una memoria RAM interna. Todos los puntos que trataremos a continuacin tendrn como referencia el diagrama de bloques representado en la FIG.8A. Como podemos apreciar la fuente de alimentacin genera todas las tensiones necesarias para alimentar tanto al sistema bsico como al PPI 8155 que pretendemos acoplar y a los distintos elementos que constituirn los elementos a gobernar. El PPI 8155 ser controlado directamente por nuestro sistema bsico, mediante un conjunto de lneas bidireccionales y las cargas sern manejadas por los puertos de entrada/salida del perifrico programable.

FUENTE DE ALIMENTACION

SISTEMA BASICO DEL 8085

C1

PPI 8155

C2

C3 FIG.8A

En los puntos que siguen, se realizar: Una descripcin fsica de dicho componente, mediante la cual se dar a conocer la misin de todos sus terminales. Un estudio sobre su constitucin interna, especificando los bloques en los que se divide y la funcin de cada uno de ellos. La descripcin del mtodo de programacin y sus modos de trabajo. Un anlisis sobre la forma de conectarlo al microprocesador 8085A. Un conjunto de ejemplos prcticos de aplicacin que nos permitirn iniciarnos en la programacin del 8155 y el manejo tanto de sus puertos de entrada/salida como de sus 256 octetos de memoria RAM interna.

8.1 DESCRIPCIN FSICA DEL PPI 8155.


El 8155 es un perifrico programable de interface de la familia INTEL diseado para acoplarse directamente al bus de datos del microprocesador 8085. Se presenta en un encapsulado (dual in line) de 40 patillas, y emplea una alimentacin nica de +5V filtrados y estabilizados. Las caractersticas elctricas bsicas pueden encontrarse en la bibliografa proporcionada por el fabricante, as como los diagramas de tiempos de ciclos de lectura y escritura. Debemos destacar adems, que existe otro componente de entrada/salida denominado 8156, cuya constitucin es prcticamente similar a la del 8155. La nica diferencia funcional entre ambos componentes, consiste en la activacin de la seal de seleccin de chip. Mientras en el 8155 se activa con nivel lgico BAJO, en el 8156 se activa con nivel lgico ALTO. Por consiguiente, todo lo que se expone seguidamente, es vlido para ambos componentes.
PC3 PC4 TIMER IN RESET PC5 TIMER OUT IO/M CS RD WR ALE AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 GND 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 PC2 PC1 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

8155

FIG.81A

Disponen de 22 terminales para comunicacin de entrada/salida, 8 lneas que constituyen el bus de datos/direcciones, una lnea de entrada de reloj y una lnea de salida de un temporizador programable, as como diversas lneas para las necesarias seales de control de los dispositivos. En la FIG.81A puede verse su configuracin fsica, y a continuacin se proporciona una descripcin detallada de la misin de cada una de las patillas. Patillas PA0 a PA7. Terminales correspondientes a 8 lneas de entrada/salida del puerto A. Constituyen un byte de datos (octeto) de entrada/salida, siendo PA0 el bit de ms bajo orden y PA7 el bit de ms alto orden. Patillas PB0 a PB7. Terminales correspondientes a 8 lneas de entrada/salida del puerto B. Constituyen un byte de datos (octeto) de entrada/salida, siendo PB0 el bit de ms bajo orden y PB7 el bit de ms alto orden. Patillas PC0 a PC5. Terminales correspondientes a 6 lneas de entrada/salida del puerto C. Constituyen un byte de datos de entrada/salida, siendo PC0 el bit de ms bajo orden y PC5 el bit de ms alto orden. Como podemos apreciar, este puerto solamente transmite palabras de 6 bits, por lo que cuando saquemos un dato del acumulador hacia el exterior a travs del puerto C, saldrn los 6 bits de menor peso, perdindose los bits de orden 6 y 7 del acumulador. Un proceso similar ocurre cuando se realice una operacin de lectura a travs de este puerto.

Patilla Vcc. Terminal de alimentacin (+5V). Debe ser una tensin perfectamente filtrada y estabilizada. Es conveniente colocar entre este terminal y masa un condensador de desacoplo. Patilla GND. Potencial de referencia o masa de alimentacin. Patilla TIMER IN. Entrada del contador programable interno. Es la entrada de reloj (clock) que servir como frecuencia base para el funcionamiento del timer interno. Patilla TIMER OUT. Salida del contador programable interno. Patilla RESET. Es la entrada de control mediante la cual podemos reinicializar el dispositivo. Es activa a nivel ALTO. (Al provocar un RESET, las tres puertas quedan programadas como entradas). Patilla IO/M. Se trata de una seal de control que nos permite diferenciar entre un acceso a un puerto de entrada/salida (con 1) o a una direccin de memoria RAM (con 0). Patilla CS. Es una entrada de control que permite la seleccin de chip. Es activa con nivel lgico BAJO para el 8155. (Es activa con nivel lgico ALTO para el 8156). Patilla RD. Es una seal de control del 8155 (8156) que ser conectada directamente a la seal RD del microprocesador 8085A. Es activa a nivel lgico BAJO y en ese momento produce la lectura de un puerto o de una direccin de memoria RAM del 8155. Cuando efectuemos una operacin de lectura sobre el 8155, estaremos transfiriendo al acumulador del microprocesador, el contenido del Registro de Estado o la informacin presente en alguno de los puertos de entrada/salida o algn dato de la memoria RAM del 8155 Patilla WR. Es una seal de control del 8155 (8156) que ser conectada directamente a la seal WR del microprocesador 8085A. Es activa a nivel lgico BAJO y en ese momento produce la escritura en un puerto o en una direccin de memoria RAM del 8155. Cuando efectuemos una operacin de escritura sobre el 8155, estaremos transfiriendo informacin desde el acumulador del microprocesador, a la memoria RAM del 8155 o a un puerto de entrada/salida o al Registro de Estado del 8155..

Patilla ALE. Es una entrada de control que debe ser conectada directamente a la seal ALE del microprocesador 8085A. Mediante un impulso en esta patilla, el 8155 diferencia o discrimina la direccin del dato, ya que ambos llegan por el mismo bus (el mismo conjunto de lneas). En otras palabras separa direcciones de datos. Patillas AD0 a AD7. Conjunto de 8 lneas que forman el bus multiplexado de datos y direcciones. A travs de este bus pasamos los datos entre el microprocesador y el PPI 8155. El flujo de informacin es en ambos sentidos.

8.2 DESCRIPCIN FUNCIONAL DEL PPI 8155.


La constitucin interna del 8155 puede dividirse en una serie de bloques que nos permitan una ms fcil asimilacin de los conceptos bsicos que nos posibiliten comprender su funcionamiento de una forma rpida. Esta serie de bloques funcionales, que pueden apreciarse en la FIG.82A, son bsicamente: Un bloque de entrada/salida compuesto por tres registros tampones o puertos de E/S, que permiten intercambiar datos con el exterior en paralelo. Dispone de dos puertos de 8 bits (puerto A y puerto B) y un puerto de 6 bits (puerto C). Estos puertos son accesibles cuando la pastilla est seleccionada (CS=0) y cuando IO/M = 1. Pueden ser programados como entradas, como salidas o segn procedimiento de intercambio. (Ms adelante veremos su modo de programacin). Un bloque de memoria RAM organizada en 256 palabras de 8 bits (octetos) que ser seleccionada cuando IO/M=0 y CS=0. Una unidad de contador o timer integrado de 14 bits programable segn cuatro modos distintos de trabajo. Un bloque de control de estado y mando que sincroniza todas las operaciones que puede realizar el 8155 mediante la programacin adecuada por software.

PUERTA A RESET IO/M CS AD0-AD7 PUERTA B DATOS DIRECCIONES RAM PUERTA C CONTROL DE MANDO Y ESTADO

PA0 PA7

PB0 PB7

REGISTRO DIRECCIONES ALE

PC0 PC5

RD WR TIMER IN CONTADOR TEMPORIZADOR PROGRAMABLE TIMER OUT

FIG.82A

La utilizacin de las puertas se hace directamente a partir del microprocesador, utilizando la instruccin OUT addr, o la instruccin STA addr o cualquier otra de almacenamiento, siempre que "addr" seleccione el registro del puerto adecuado. Para efectuar la seleccin del puerto A, B o C adecuado en cada momento, la parte baja del bus de direcciones del microprocesador, debe presentar los siguientes valores: Puerto A XXXX X001 Puerto BXXXX X010 Puerto CXXXX X011 (Los bits marcados con X, son valores indiferentes): Si tenemos en cuenta que el puerto C solamente dispone de 6 bits, podremos concluir que sern extrados del acumulador los 6 bits menos significativos. Cada puerto del 8155 puede ser programado como entrada, para transferir datos desde el exterior hacia el microprocesador, o como salida, para enviar datos desde el microprocesador hacia el exterior del sistema. Como podemos apreciar, no existe la posibilidad de programar los bits de cada puerto de forma individual como entrada o salida, sino que sern todos entradas o todos salidas (para cada puerto). Para programar los puertos del 8155 como entrada o como salida con o sin procedimiento de intercambio, es necesario especificar en qu modo se pretende utilizar. Esto se logra mediante la programacin de un registro especializado denominado "Registro de Mando de Estado (C/E)". Este registro posee 8 bits y en virtud de los unos o ceros que coloquemos en l, los puertos quedarn programados de una forma u otra. Para introducir una determinada combinacin en este registro debemos direccionarlo, siendo su cdigo de acceso:

Registro Estado XXXX X000 Por tanto, antes de empezar a trabajar con l, debemos indicarle el modo de trabajo que vamos a emplear. El formato de instruccin de dicho registro es:

TM2

TM1

IEB

IEA

PC2

PC1

PB

PA

A continuacin se describe la funcin de cada bit: Bit 0 (PA): Este bit programa el puerto A. Si PA=1 el puerto se utiliza como salida y si PA=0 el puerto se utiliza como entrada. Bit 1 (PB): Este bit programa el puerto B. Si PB=1 el puerto se utiliza como salida y si PB=0 entonces se utiliza como entrada. Bits 2 y 3 (PC1 y PC2): Estos dos bits programan el puerto C atendiendo a las combinaciones que se resumirn en la tabla siguiente: PC2 0 0 1 1 PC1 0 1 0 1 MODO DE PUERTA C MOD1 MOD3 MOD4 MOD2

La funcin de cada pin de la puerta C en cada uno de estos cuatro modos de trabajo enunciados es como se muestra en la siguiente tabla: Pin PC0 PC1 PC2 PC3 PC4 PC5 MOD1 entrada entrada entrada entrada entrada entrada MOD2 salida salida salida salida salida salida MOD3 A INTR A BF A STB salida salida salida MOD4 A INTR A BF A STB B INTR B BF B STB

siendo: INTR : Bit de mando cuya funcin es de requerimiento de interrupcin. Nivel BAJO si est como entrada y nivel ALTO si est como salida. BF : Bit de mando cuya funcin es ser indicador de buffer completo, es decir, indica si el dato a recibir est presente ya en el puerto para ser leido o si el dato ha sido sacado hacia el exterior por el puerto. Nivel ALTO tanto en entrada como en salida. STB : Bit de mando cuya funcin es de entrada de control tanto en modo entrada como en modo salida.

Bit 4 (IEA): Si tenemos IEA=0 estamos ante una interrupcin no autorizada para el puerto A. Si tenemos IEA=1, estamos ante una interrupcin autorizada para el puerto A. Bit 5 (IEB): Si tenemos IEB=0, estamos ante una interrupcin no autorizada para el puerto B. Si tenemos IEB=1, estamos ante una interrupcin autorizada para el puerto B. Bits 6 y 7 (TM1 y TM2): Estos dos bits permiten la programacin de un contador interno de 14 bits del 8155 (TIMER). Este contador posee cuatro modos o posibilidades de programacin. Si colocamos

el valor 00 el contador no efecta ninguna operacin. Para cargar el valor de los 14 bits de este contador se dispone de dos registros a los cuales se accede con las direcciones: Timer Low Timer High XXXX X100 XXXX X101

Su modo de operacin puede ser programado en cualquier momento que se desee. Como base de tiempos puede emplearse cualquier seal de nivel TTL conectndola a la entrada de tiempos (TIMER IN). La salida del contador se obtiene en TIMER OUT. Como se sabe, el control del Timer es conformado en el Comando de Estado (C/E) segn los bits TM1 y TM2 durante su programacin de acuerdo a la siguiente tabla: TM2 TM1 0 0 0 1 1 0 1 1 MODO DEL CONTADOR No afecta al contador o timer Alto a la cuenta del timer Para la cuenta despus de TC Inicia la operacin timer

Una vez programado C/E, el modo de operacin es definido como sigue mediante la escritura de dos palabras de 8 bits en Timer Low y Timer High:

Timer Low : T7 T6 T5 T4 T3 T2 T1 T0 Timer High: M2 M1 T13 T12 T11 T10 T9 T8


Los dos bits de ms alto orden (M2 y M1) se utilizan para definir el modo definitivo de operacin segn la tabla siguiente:

M2 0 0 1 1

M1 0 1 0 1

OPERACION ALTO al inicio y BAJO en la 2 mitad de la cuenta Onda cuadrada. Periodo = Duracin de la cuenta. Pulso simple de TC Pulso simple de TC con autorrecarga.

El microcircuito 8155, para comunicarse con el exterior precisa tambin conocer el estado del registro C/E, para lo cual deber procederse a la lectura del mismo. Los 8 bits ledos son de hecho diferentes de los 8 bits definidos precedentemente, siendo por tanto C/E un registro doble. El formato de instruccin es como sigue:

XX TIMER

INTE B

B BF

INTR B

INTE A

A BF

INTR A

Para cada puerta se accede a los bits siguientes: Bit 7 (X): Bit de estado indiferente. Bit 6 (TIMER): Define una interrupcin del timer. Con un nivel ALTO bloquea el contador y despus de ledo el registro resetea o inicia una nueva cuenta. Bit5 (INTE B): Determina si el puerto B tiene una interrupcin autorizada. Est autorizada con un nivel lgico ALTO. Bit 4 (B BF): Este bit nos indica si el puerto B tiene el buffer de entrada o salida completo. Nos indica si el dato a recibir est presente ya en el puerto para ser ledo, o bien si el dato ha sido sacado hacia el exterior por el puerto B. Bit 3 (INTR B): Es el bit de requerimiento de interrupcin del puerto B. Est activo con nivel lgico ALTO.

Bit 2 (INTE A): Idem al bit 5, pero referido al puerto A. Bit 1 (A BF): Idem al bit 4, pero aplicado al puerto A. Bit 0 (INTR A): Idem al bit 3, pero aplicado al puerto A.

Adems de los tres puertos de entrada/salida y el Timer interno, sabemos que el 8155 (8156) posee una capacidad de memoria RAM interna de 256 octetos (256X8 bits). A esta memoria podemos acceder en el momento que deseemos, sin ms condicin que la de seleccionar correctamente el dispositivo mediante su pin de seleccin CS y tener adecuadamente conectada la seal IO/M a la correspondiente del microprocesador. El acceso se conseguir con una instruccin como STA, para escribir un dato por ejemplo.

8.3 INTERCONEXIN DEL 8155 CON EL 8085.


Es claro, por todo lo estudiado hasta el momento, que el PPI 8155 es un perifrico programable cuya estructura permite su utilizacin directa con el microprocesador 8085. El 8155 dispone de ciertas caractersticas que hacen posible su conexin al microprocesador de dos formas claramente diferenciadas que veremos a continuacin: POSIBILIDAD 1 Dada la estructura del 8155, no tendremos ms que: Unir las patillas AD0, AD1, AD2, AD3, AD4, AD5, AD6 y AD7 a las patillas correspondientes del bus de datos/direcciones del microprocesador. Unir la patilla de RESET del 8155 a la patilla RESET OUT del microprocesador, colocando un condensador a masa de 15 pF. Conectar los terminales de masa (GND) y alimentacin (Vcc) a la masa y alimentacin del microprocesador (+5V). Es conveniente colocar un condensador a masa de 100 nF en el terminal de alimentacin. Conectar las seales ALE, RD y WR del 8155 directamente a las patillas ALE, RD y WR del microprocesador. La patilla TIMER IN del 8155 se conectar a la salida CLK OUT del microprocesador. La patilla CS (seleccin de chip) ser controlada mediante una de las salidas libres del decodificador de direcciones. En este caso elegiremos la salida CS4. El terminal IO/M del 8155 se conecta directamente a la seal de control IO/M de idntica denominacin del microprocesador. Finalmente dispondremos de 22 lneas para comunicarse con el exterior que forman los tres puertos de entrada/salida del 8155 y de una lnea de salida de un contador o temporizador denominada TIMER OUT.

De esta forma tendremos perfectamente acoplado este nuevo componente a nuestro sistema. En la FIG.83A puede verse el esquema de esta conexin. No nos queda ahora ms que estudiar la forma de acceso al mismo, o lo que es igual, encontrar las direcciones de sus registros internos y puertos de entrada/salida. Para ello debemos darnos cuenta que para efectuar la seleccin del dispositivo hay que hacer activa la salida CS4 del decodificador de direcciones, es decir, hay que colocar en la parte alta del bus de direcciones (A15, A14, A13 y A12) el valor binario 1100, por lo que dicha combinacin es obligatoria. Por tener conectada la seal IO/M del

microprocesador, para acceder a los puertos de E/S ser necesario emplear las instrucciones OUT PORT e IN PORT para sacar o leer datos del exterior y como sabemos por el tema 4, (al emplear estas instrucciones el microprocesador entiende que deseamos tener acceso a una entrada/salida y automticamente coloca un 1 lgico en la seal IO/M) el operando PORT representa el puerto seleccionado. Tendremos por tanto que situar en los bits de direccin ms bajos (A0, A1 y A2) los cdigos correspondientes a los puertos A, B, C y el cdigo correspondiente del registro de estado, segn el elemento al que deseemos tener acceso. Ambas instrucciones (OUT e IN) tienen el mismo efecto sobre el bus de direcciones, duplican el valor asignado a PORT en dicho bus. Por ejemplo con la instruccin OUT B1H, sacaramos hacia el exterior el contenido del acumulador, y en el bus de direcciones tendramos el valor B1B1H. De modo similar con la instruccin IN B3H, cargaramos un dato del exterior en el acumulador y tendramos en el bus de direcciones el valor B3B3H.
+5V

100 nF 40 20

PUERTO C

PC0 PC1 PC2 PC3 PC4 PC5 AD0 AD1 AD2 AD3 AD4 AD5 AD6

37 38 39 1 2 5 12 13 14 15 16 17 18 19 11 10 9 7 8 3

21 22 23 24 27 25 26 28 29 30

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

PUERTO A

BUS 8085

AD7 ALE ALE WR WR RD RD IO/M IO/M CS CS4 CLK TIMER IN OUT

D0 D1 D2 D3 D4 D5 D6 D7

8155

31 32 33 34 35 36

PUERTO B

6 4

TIMER OUT RESET 15pF

RESET OUT

FIG.83A

Por tanto en nuestro caso, para acceder a los puertos y registro de estado del 8155 tendramos que colocar como valor de PORT: Puerto A Puerto B Puerto C Timer Low Timer High Registro de estado PORT = C1H PORT = C2H PORT = C3H PORT = C4H PORT = C5H PORT = C0H

Cuando deseemos trabajar con la memoria interna del 8155, no podremos utilizar la instrucciones especiales OUT e IN, sino que habr que emplear instrucciones normales como LDA o bien STA, segn sea el caso, seguidas de la direccin de memoria a la que deseemos acceder, que en el caso que estamos tratando, sern los 256 octetos comprendidos entre las direcciones siguientes: RAM 8155 C000H hasta C0FFH

POSIBILIDAD 2. La segunda posibilidad de conectar este integrado, es en todo similar a la anterior, la nica diferencia radica en que la seal IO/M del 8155 no se conecta a la equivalente IO/M del microprocesador, sino que se controla mediante una lnea del bus de direcciones. Nosotros elegiremos este mtodo y conectaremos a dicha seal la lnea de direcciones A10 (podramos haber elegido otra). Para acceder a los puertos de entrada/salida o al registro de estado no podremos utilizar ahora las instrucciones OUT e IN puesto que no usamos la salida IO/M del microprocesador. En este caso, tanto para los puertos y registro de estado, como para las direcciones de RAM interna, se utilizarn instrucciones como STA o bien LDA seguidas de la direccin correspondiente. Al igual que en el caso anterior, para seleccionar el chip debemos colocar en la parte alta del bus de direcciones (A15, A14, A13, A12) el dato binario 1100. Adems hay que colocar en la parte baja (A0, A1, A2) el cdigo correspondiente al elemento que deseemos utilizar. Y finalmente, tendremos que colocar la lnea de direcciones A10 a nivel lgico 1 para acceder a los puertos y registro de estado y a nivel lgico 0 para tener acceso a las posiciones de memoria RAM interna. Por tanto las direcciones a considerar en nuestro caso sern: Puerto A Puerto B Puerto C Timer Low Timer High Registro de estado C/E RAM 8155 C401H C402H C403H C404H C405H C400H C000H hasta C0FFH

En la FIG.83B puede verse la representacin esquemtica de esta conexin, que ser la que finalmente utilizaremos en nuestro sistema.
+5V 100 nF 40 20

PUERTO C

PC0 PC1 PC2 PC3 PC4 PC5 AD0 AD1 AD2 AD3 AD4 AD5 AD6

37 38 39 1 2 5 12 13 14 15 16 17 18 19 11 10 9 7 8 3

21 22 23 24 27 25 26 28 29 30

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PUERTO B PUERTO A

BUS 8085

AD7 ALE ALE WR WR RD RD A10 IO/M CS CS4 CLK TIMER IN OUT

D0 D1 D2 D3 D4 D5 D6 D7

8155

31 32 33 34 35 36

6 4

TIMER OUT RESET 15pF

RESET OUT

FIG.83B

8.4 EJEMPLOS DE E/S CON EL PPI 8155.


A continuacin se desarrollaran una serie de ejemplos prcticos que nos permitan tener una idea clara de la forma de operar del PPI 8155. Como veremos se tratar de comenzar con las operaciones ms simples para, poco a poco, aumentar su nivel de complejidad. EJEMPLO 1. Realizar el control de 8 lmparas de 100 w, conectadas a tensin alterna de 220 V. Con este ejercicio se pretende desarrollar un control (sin especificar el proceso de encendido y apagado) sobre 8 elementos de carga (lmparas) que manejaremos mediante el puerto A (tambin lo podramos hacer con el puerto B).

Como es lgico, debemos pensar en realizar el diseo del equipo necesario para controlar las lmparas a 220 V de c.a. Es decir, hay que disponer del hardware adecuado de potencia, que nos posibilite manejar las cargas finales. Una vez lo tengamos dispuesto, lo conectaremos al 8155 y se proceder a desarrollar el programa de control. En primer lugar, como elemento final de control en potencia, se emplear el triac TXAL228, que manejar directamente el encendido y apagado de las lmparas. Este triac, que se presenta en encapsulado TO 220 AB plstico, soporta una tensin entre nodos de 400 V y un pico de corriente mxima de 90 A durante 20 ms como mximo. La corriente mxima a la que debe ser sometido el terminal de puerta est alrededor de los 50 mA y la temperatura que aguanta la juntura estar prxima a los 100 C Al tratarse de una carga resistiva y de relativamente baja

potencia, no necesitaremos circuitos de control y proteccin aadidos. Por supuesto, el triac ir montado sobre un disipador de calor que le permita refrigerar su estado trmico interno. El terminal de control del triac ser gobernado mediante un acoplador ptico denominado MOC3041, que se presenta en un encapsulado dual in line con 6 terminales de conexin o patillas. Su distribucin y esquema equivalente podemos verlo en la FIG.84A. Como podemos apreciar las patillas 3 y 5 son inactivas, ya que no tienen conexin y por tanto carecen de funcin alguna. Los terminales 1 y 2 son el nodo y ctodo del foto-diodo emisor interno, mientras que los terminales 6 y 4, son los terminales accesibles del receptor, en este caso constituido por un triac fotosensible. Cuando se hace pasar una corriente por el emisor, ste emite una seal que incide sobre el receptor, haciendo que pase al estado de conduccin. Si el emisor est en reposo, el receptor se comporta como un circuito abierto. La misin fundamental del optoacoplador es separar la tensin alterna de 220 V que se emplea para las lmparas, de la tensin de alimentacin de las tarjetas que constituyen el equipo. Adems reducen al mnimo las interferencias por ruidos elctricos que se puedan producir en los procesos de conmutacin de los triacs.
1 K1 A1 SC C2 SC C1 6

MOC3041

FIG.84A

La FIG.84B, nos muestra la forma de conectar el acoplador ptico al triac (elemento de potencia). Como podemos apreciar, entre los terminales de salida del triac se sita una red RC cuya misin es proteger al semiconductor de potencia, de las posibles sobrecargas que se puedan producir por las corrientes inductivas de la carga. Sin embargo debemos recordar que en nuestro caso, sern mnimas, debido a que la carga es fundamentalmente resistiva. En esta figura podemos adems observar cmo estn perfectamente separadas las partes de alta tensin de las de baja tensin. El terminal de control ser llevado directamente a una lnea de salida del puerto A del 8155. Cuando en esta lnea de control se presente un uno lgico o nivel ALTO, se establecer una circulacin de corriente a travs del diodo fotoemisor , que provocar la excitacin del receptor (triac fotosensible) que se har conductor permitiendo el paso de la corriente y provocando con ello la excitacin del triac de potencia, que a su vez, permitir el paso de corriente, haciendo que se encienda la lmpara que lleve conectada como carga. (Debemos recordar que el triac se desactiva automticamente cada vez que la corriente pasa por cero, es decir, en cada semiciclo, por lo que es necesario redisparar el triac en cada semionda o bien mantenerlo con la seal de control activada durante el tiempo que consideremos oportuno).

R2 56 +5V MOC3041

LAMPARA 220V

TXAL228

R4 100 C1 01uF 250V

R1 220

R3 1K2

CONTROL ULN2803

FIG.84B

Finalmente, si deseamos controlar ocho unidades u ocho lmparas, deberemos contar con ocho bloques como el anterior, obteniendo de este modo el esquema definitivo de la FIG.84C. En ella puede verse cmo todas las lneas de control son gobernadas por las lneas del puerto A del 8155, de tal forma que la lnea PA0 controla la lmpara L0, PA1 controla L1, PA2 controla L2, etc. Por tanto, segn este esquema final, si deseamos encender una lmpara cualquiera, por ejemplo L3, tendremos que sacar por la lnea PA3 del 8155 un uno lgico, es decir, un nivel ALTO. Si deseamos tener iluminadas las lmparas L1, L3 y L5, tendremos que sacar los correspondientes unos lgicos por las lneas PA1, PA3 y PA5 (por el resto de las lneas del puerto A sacaremos niveles BAJOS). Finalmente, insistir en la necesidad de dotar a los triacs de refrigeradores que permitan evacuar de la forma ms apropiada y rpida las prdidas de potencia producidas por calor durante su funcionamiento. Dichos refrigeradores sern construidos de aluminio, material de muy baja resistencia trmica. El contacto entre el disipador y el propio triac debe ser lo ms perfecto posible, por lo que, para mejorarlo, puede emplearse una pasta de unin especialmente fabricada para este propsito. Al trabajar directamente con la alimentacin de red, es muy importante fijarse en que no queden cables descubiertos de modo que puedan producirse contactos no deseados. Las partes metlicas de los chasis deben conectarse slidamente a tierra. Debe tenerse sumo cuidado en el manejo de estos circuitos de potencia ya que al margen de los posibles accidentes personales nunca deseados, pueden producirse daos irreparables en los circuitos de nuestro sistema de control.
2 56 MOC3041 +5V TXAL228 1 1K2 01uF

100

BLOQUE A ULN2803 220 2 A 2 A 2 A 2 A 2 A 2 A 2 A 2 A L0 220V

PA0

1 E0

S0 18

PA1

2 E1

S1 17

220

L1

220V

PA2

3 E2

S2 16

220

L2

220V

PA3

4 E3

S3 15

220

L3

220V

PA4

5 E4

S4 14

220

L4

220V

PA5

6 E5

S5 13

220

L5

220V

PA6

7 E6

S6 12

220

L6

220V

PA7

8 E7 9

S7 11 10 +5V

220

L7

220V

FIG.84C

Finalizado el proceso de diseo del hardware de control, pasamos a realizar el diseo del software que nos permitir, mediante nuestro sistema basado en el microprocesador 8085 y apoyndonos en el PPI 8155, manejar el encendido y apagado de las ocho lmparas. En el enunciado no se nos indica el proceso o secuencia de control de las lmparas, por tanto podr ser aquella que nosotros deseemos. Iniciaremos el diseo del programa de control, con el siguiente pseudocdigo:

NOMBRE: LAMPARA FUNCION: Controla 8 lmparas PRECONDICIONES: Ninguna POSTCONDICIONES: Ninguna Iniciar el sistema Apagar lmparas B=10 MIENTRAS B>0 Activar solo lmparas pares Temporizar Activar solo lmparas impares Temporizar B=B-1 FIN DE MIENTRAS B=20 MIENTRAS B>0 Apagar todas las lmparas Temporizar Activar todas las lmparas Temporizar B=B-1 FIN DE MIENTRAS B=8 MIENTRAS B>0 Encendido secuencial B=B-1 FIN DE MIENTRAS FIN del programa

Como podemos ver, nuestro programa consistir bsicamente en la realizacin de tres procesos claramente diferenciados o separados en tres bucles. El primero consiste en realizar un encendido y apagado alternativo de las lmparas, de forma que en un instante dado estn encendidas L0, L2, L4 y L6, mientras el resto permanecen apagadas. Un tiempo ms tarde (tiempo determinado por una subrutina de temporizacin) estarn encendidas L1, L3, L5 y L7, permaneciendo apagadas el resto durante el mismo intervalo de tiempo. Este proceso se repetir un nmero determinado de veces que viene impuesto por el valor que se de al contador B (en este caso B=10). El segundo proceso o bucle consiste en el encendido y apagado de todas las lmparas de forma simultnea. Proceso que ser realizado un nmero de veces determinado por el nuevo valor dado al contador B (en este caso B=20). El tiempo que las lmparas deben permanecer encendidas y apagadas, viene marcado por la subrutina de temporizacin. Finalmente, el tercer bucle, pretende realizar el encendido secuencial de las ocho lmparas, es decir, partiendo del estado inicial en que todas las lmparas estn apagadas, se iluminar en primer lugar L0, a continuacin se iluminarn L0 y L1, luego L0, L1 y L2, y as sucesivamente hasta tener encendidas todas las lmparas. El ritmo de encendido vendr marcado por la subrutina de temporizacin. Este proceso se repetir el nmero de veces que nos marque el valor asignado al contador B (en este caso B=8).

Se proceder ahora a expresar con ms detalle todos los pasos mostrados en el pseudocdigo anterior mediante un refinado del mismo.

NOMBRE: LAMPARA FUNCION: Controla 8 lmparas PRECONDICIONES: Ninguna POSTCONDICIONES: Ninguna Prohibir Interrupciones Punterizar la Pila Programar PPI 8155 Apagar lmparas B=10 MIENTRAS B>0 Sacar al puerto A el dato 55H Temporizar Sacar al puerto A el dato AAH Temporizar B=B-1 FIN DE MIENTRAS B=20 MIENTRAS B>0 Sacar al puerto A el dato 00H Temporizar Sacar al puerto A el dato FFH Temporizar B=B-1 FIN DE MIENTRAS B=8 MIENTRAS B>0 Dato=0 C=8 MIENTRAS C>0 Poner CARRY=1 Rotar Dato con CARRY a la izquierda Sacar Dato al puerto A Temporizar C=C-1 FIN DE MIENTRAS B=B-1 FIN DE MIENTRAS FIN del programa

El tercer bucle ha sido construido con otro bucle interno. Es este ltimo, el que nos permite llevar a cabo el encendido secuencial, mientras que el bucle exterior nos sirve para realizar el encendido secuencial un determinado nmero de veces marcado por el contador B. El desarrollo del bucle interno es similar al bucle mostrado en el ejercicio 2 del tema anterior. A continuacin, en la FIG.84D, se muestra el diagrama de flujo correspondiente a este pseudocdigo.

INICIO Prohibir interrupciones Punterizar la pila Programar el PPI 8155

Apagar lmparas

B=10 SALT1 NO SALT2 B=20 SALT3 Temporizar B>0 SI PA=00H Temporizar Temporizar B=B-1 PA=FFH B>0 SI Dato=0 C=8 SALT6 B=B-1 C>0 SI NO SALT5 NO NO SALT4 B=8

B>0 SI PA=55H

PA=AAH

FIN

Temporizar

CARRY=1 Rotar Dato izquierda PA=Dato

Temporizar

SALT7 B=B-1

C=C-1

FIG.84D

A continuacin pasamos a desarrollar el paso a ensamblador del pseudocdigo preparado, obteniendo el programa definitivo de control.

2500 A.D. 8085 CROSS ASSEMBLER VERSION 3.41a -------------------------------------------------INPUT FILENAME : OUTPUT FILENAME : LAMPARA.ASM LAMPARA.OBJ

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

01 02 03 00

C4 C4 C4 C4

FF 87 0000 0000 0001 0004 0005 0007 000A 000C 000F 0011 0012 0013 0016 0018 001B 001E 0020 0023 0026 0027 002A 002C 002D 002E 0031 0033 0036 0039 003B

F3 21 F9 3E 32 3E 32 06 78 A7 CA 3E 32 CD 3E 32 CD 05 C3 06 78 A7 CA 3E 32 CD 3E 32

FF 87 0F 00 C4 00 01 C4 0A

2A 55 01 68 AA 01 68

00 C4 00 C4 00

11 00 14

45 00 01 68 FF 01

00 C4 00 C4

;-------------------------------;NOMBRE : LAMPARA ;FUNCION : Control de 8 lmparas ;PRECONDICION : Ninguna ;POSTCONDICION : Ninguna ;-------------------------------;-------------------------------;PARAMETROS PARA EL 8155 ;-------------------------------PA81 EQU C401H PB81 EQU C402H PC81 EQU C403H REES81 EQU C400H ;-------------------------------;-------------------------------;PARAMETROS PUNTERO DE PILA ;-------------------------------PPILA EQU 87FFH ;-------------------------------LAMPARA: DI LXI H,PPILA SPHL MVI A,0FH STA REES81 MVI A,00H STA PA81 BUC1 MVI B,10 SALT1 MOV A,B ANA A JZ BUC2 MVI A,55H STA PA81 CALL TEMPO MVI A,AAH STA PA81 CALL TEMPO DCR B JMP SALT1 BUC2 MVI B,20 SALT2 MOV A,B ANA A JZ BUC3 MVI A,00H STA PA81 CALL TEMPO MVI A,FFH STA PA81

49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96

003E 0041 0042 0045 0047 0048 0049 004C 004E 0050 0051 0052 0055 0056 0057 0058 005B 005E 005F 0060 0063 0064 0067

CD 05 C3 06 78 A7 CA 0E 16 79 A7 CA 37 7A 17 32 CD 57 0D C3 05 C3 76

68 00 2C 00 08

BUC3 SALT3

67 00 08 00 SALT5 63 00

01 C4 68 00

50 00 SALT4 47 00 FIN

CALL TEMPO DCR B JMP SALT2 MVI B,8 MOV A,B ANA A JZ FIN MVI C,8 MVI D,00H MOV A,C ANA A JZ SALT4 STC MOV A,D RAL STA PA81 CALL TEMPO MOV D,A DCR C JMP SALT5 DCR B JMP SALT3 HLT

0068 0068 0069 006A 006B 006E 006F 0070 0071 0072 0073 0076 0077 0078 0079

F5 D5 C5 11 FF 0F 1B 7A B3 00 00 C2 6E 00 C1 D1 F1 C9

;-------------------------------;NOMBRE: TEMPO ;FUNCION: Temporizacin ;PRECONDICIONES: Ninguna ;POSTCONDICIONES: Ninguna ;-------------------------------TEMPO: PUSH PSW PUSH D PUSH B LXI D,0FFFH TE1 DCX D MOV A,D ORA E NOP NOP JNZ TE1 POP B POP D POP PSW RET

007A

END

******* BUC1 BUC2 BUC3 FIN LAMPARA PA81 PB81 PC81 PPILA

C R O S S 000F 002A 0045 0067 0000 C401 C402 C403 87FF : : : : : : : : :

R E F E R E N C E

T A B L E

*********

31 43 55 27 33 36 45 48 64

= = = =

22

REES81 SALT1 SALT2 SALT3 SALT4 SALT5 TE1 TEMPO

= C400 0011 002C 0047 0063 0050 006E 0068

: : : : : : : :

25 39 51 70 60 68 89 34

37

46

49

65

LINES ASSEMBLED :

96

ASSEMBLY ERRORS :

En el desarrollo de este programa podemos apreciar en las primeras lneas la definicin del proceso (NOMBRE, FUNCION, ...) son lneas de comentarios que no intervienen para nada en el programa. En las lneas 10, 11, 12 y 13 se definen los parmetros de acceso al perifrico programable PPI

8155 y en la lnea 18 se define el puntero de la pila (memoria RAM donde se almacenaran datos temporalmente). El programa comenzar efectivamente en la lnea 21, donde se inicializa el sistema. En la lnea 25 vemos como se carga el dato 0FH en el registro de estado del 8155 al objeto de programar sus tres puertos como salidas. Desde la lnea 28 a la 39 se ejecuta el primer bucle del programa, de la 40 hasta la 51 el segundo bucle y desde la 52 hasta la 70 el tercer bucle. Si examinamos el primero de ellos nos daremos cuenta que es en las lneas 29, 30 y 31 cuando se analiza la condicin del bucle y en caso de que el flag consultado este accionado saltaremos a ejecutar el bucle siguiente (BUC2) en la direccin 002AH. Se procede de modo idntico en los otros dos bucles. La subrutina TEMPO (que nos proporciona una temporizacin o tiempo de espera) no precisa ningn dato de entrada y vemos que una vez ejecutada no modifica ningn registro ni direccin de memoria (de lo contrario vendra especificado en las PRECONDICIONES y en las POSTCONDICIONES). Se limita a ejecutar un bucle un determinado nmero de veces que vendr impuesto por el valor cargado en el registro par DE (en este caso DE=0FFFH). En esta subrutina guardamos en la pila varios registros pares mediante las instrucciones PUSH y volvemos a recuperar sus contenidos mediante las correspondientes instrucciones POP siempre ejecutadas en orden inverso.

EJEMPLO 2

Realizar el diseo de software y hardware necesarios para controlar 8 lmparas de 12 V y 8 sensores de efecto Hall, de modo que mientras permanezca activado un sensor cualquiera, se ilumine su lmpara correspondiente. Es decir, si se activa S2 se iluminar L2. Este ejercicio es similar al desarrollado en el tema anterior (ejercicio 3). En este caso emplearemos como elementos de entrada, detectores magnticos de efecto Hall. En primer lugar hablaremos de forma sucinta sobre este tipo de sensores para tener una pequea idea de su forma de trabajo. El efecto hall fue descubierto por Edwin Hall y se apoya en la fuerza de Lorentz, por medio de la cual sabemos que si aplicamos en campo elctrico E a un material semiconductor y al mismo tiempo hacemos incidir sobre l de forma perpendicular un campo electromagntico, actuar sobre las cargas en movimiento una fuerza F que las desplaza en el interior del semiconductor producindose una concentracin de portadores que nos generar un nuevo campo elctrico transversal Ez. Este campo elctrico alcanza un valor tal que compensa la fuerza F. La intensidad del campo elctrico transversal da lugar a una tensin llamada tensin de hall. Este efecto aparece en cualquier conductor, pero su efecto no result aprovechable hasta que no se descubri la movilidad de los electrones en determinadas uniones semiconductoras, en las que el flujo de corriente es creado por pocos electrones muy rpidos. Por tanto podemos decir que el efecto de un campo electromagntico (producido por ejemplo por un imn) sobre una corriente elctrica da lugar a una tensin. Estamos por tanto en presencia de un pequeo generador. Los generadores hall, pueden construirse de dos modos diferentes, teniendo en cuenta adems que, segn la aplicacin prevista, las placas semiconductoras tendrn formas diversas: 1. Obteniendo la capa semiconductora de barras fundidas, pulidas y grabadas al cido, con un espesor aproximado de 5 a 100 micras y colocndola despus sobre una placa portadora mediante una resina epoxi de 1 micra. Depositando la placa semiconductora sobre la placa portadora mediante un procedimiento de evaporacin metlica.

2.

semiconductor B

Campo magntico

Vhall

Corriente excitacin

En este tipo de semiconductores suele definirse la constante del material, como dependiente de la temperatura, y se llama coeficiente de hall Rh. El campo magntico necesario para generar una tensin proporcional est limitado a un intervalo determinado y aunque se sobrepase dicho intervalo el semiconductor no resulta daado, mientras que la corriente de excitacin ser aquella que no sobrepase la mxima temperatura admisible para el semiconductor (unos 110C). En las hojas de datos de los fabricantes se indica la tensin de hall en vaco como aquella que se genera cuando el semiconductor esta descargado, para una corriente nominal de excitacin y un campo magntico de excitacin indicados. Entre la gran variedad de elementos fabricados con este tipo de dispositivos encontramos los sensores UGN 3140, elementos que convenientemente polarizados al ser excitados por un imn producen una tensin positiva. En la FIG.84F vemos la forma de conectarlos en nuestro sistema de prueba. Establecido de este modo el Hardware a emplear, pasamos a desarrollar el software de control. Procedemos en primer lugar a trabajar con el pseudocdigo proponiendo el siguiente proceso: NOMBRE: Hall FUNCION: Detectar sensores hall PRECONDICION: Ninguna POSTCONDICION: Ninguna Iniciar sistema Leer sensores Preparar dato de lmparas Sacar dato de lmparas Volver a leer sensores (paso 2) Fin de programa

Como podemos apreciar este ejemplo es en todo similar al desarrollado en el ejercicio 3 del tema anterior.

+12V 21 22 23 24 25 26 27 28 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 E0 1 E1 2 E2 3 E3 4 E4 5 E5 6 E6 7 E7 8 +5V 29 30 32 33 34 35 36 37 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 UGN 3140 UGN 3140 UGN 3140 UGN 3140 UGN 3140 UGN 3140 UGN 3140 UGN 3140 18 S0 17 S1 16 S2 15 S3 14 S4 13 S5 12 S6 11 S7 L0 L1 L2 L3 L4 L5 L6 L7

8155

FIG.84F

Un nuevo paso de refinado nos dar la siguiente propuesta: NOMBRE: Hall FUNCION: Detectar sensores Hall PRECONDICIONES: Ninguna. POSTCONDICIONES: Ninguna. Prohibir interrupciones Punterizar la pila Programar el PPI 8155 Apagar las lmparas Leer Dato de PB81 Tratar el Dato ledo Sacar Dato al PA81 Volver a Leer Dato de PB81 (paso 5) Final del programa

Finalmente el programa resultante en pseudocdigo, realizando un nuevo paso de refinado ser: NOMBRE: Hall FUNCION: Detectar sensores Hall PRECONDICIONES: Ninguna. POSTCONDICIONES: Ninguna. Prohibir interrupciones Punterizar la pila Programar el PPI 8155 Apagar las lmparas Leer Dato de PB81 Sacar Dato al PA81 Volver a Leer Dato de PB81 (paso 5) Final del programa En este caso no representaremos el diagrama de flujo correspondiente, aunque como puede verse por el desarrollo realizado hasta el momento ser similar al presentado en el ejercicio 3 del tema 7. El programa en ensamblador resultante ser:
2500 A.D. 8085 CROSS ASSEMBLER VERSION 3.41a -------------------------------------------------INPUT FILENAME : HALL.ASM OUTPUT FILENAME : HALL.OBJ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ;-----------------------------------------;NOMBRE : HALL ;FUNCION : Detectar sensores Hall ;PRECONDICION : Ninguna ;POSTCONDICION : Ninguna ;-----------------------------------------;-----------------------------------------;PARAMETROS PARA EL 8155 ;-----------------------------------------PA81 EQU C401H ;Puerto A del 8155 PB81 EQU C402H ;Puerto B del 8155 PC81 EQU C403H ;Puerto C del 8155 REES81 EQU C400H ;Reg. Estado 8155 ;-----------------------------------------;-----------------------------------------;PARAMETROS PUNTERO DE PILA ;-----------------------------------------PPILA EQU 87FFH ;Puntero pila RAM ;-----------------------------------------HALL: DI LXI H,PPILA SPHL MVI A,0DH STA REES81 MVI A,00H STA PA81 LEER LDA PB81 NOP STA PA81 JMP LEER END S Y M B O L I C R E F E R E N C E = C401 0000 35 PB81 REES81 T A B L E ************* = C403 0

00 01 02 03

B0 B0 B0 B0

FF 87 0000 0000 0001 0004 0005 0007 000A 000C 000F 0012 0013 0016 0019 0019

F3 21 F9 3E 32 3E 32 3A 00 32 C3

FF 87 82 03 B0 00 00 B0 01 B0 00 B0 0F 00

*********** LEER PPILA

000F PA81 = 87FF HALL LINES ASSEMBLED :

= C402 PC81 = C400 ASSEMBLY ERRORS :

Como podemos apreciar, en este caso no se ha utilizado la pila para guardar ningn dato, aunque se ha punterizado. Tambin podamos haber empleado la RAM del 8155 y punterizar la pila a la direccin C0FFH.

EJEMPLO 3 Realizar el control de un grupo de cuatro displays de siete segmentos, de modo que se representen en ellos los nmeros del 0000 al 9999. Se trata en este caso de desarrollar un trabajo de diseo del hardware de control de los cuatro elementos pedidos y posteriormente, despus de conectarlo a nuestro sistema a travs del 8155, realizar el software que lleve a cabo el control pedido. En primer lugar realizaremos una breve descripcin de los elementos o componentes que vamos a utilizar para construir la tarjeta de aplicacin mostrada en la FIG.84G. Los elementos finales a controlar, es decir, los displays de siete segmentos sern los modelos LTS7751R. Se trata de unos sencillos indicadores luminosos construidos a base de diodos luminiscentes de color rojo que nos servirn para visualizar un valor en el sistema decimal. Estn formados por siete segmentos individuales (SA, SB, SC, SD, SE, SF, SG) con los que se pueden construir todos los dgitos del 0 al 9. Como elemento bsico, transformador de cdigo binario al cdigo necesario para excitar los displays, se utilizar el circuito integrado 74LS47. Se trata de un decodificador/excitador BCD a 7 segmentos con salida en colector abierto. El circuito tiene como entradas las cuatro lneas A, B, C y D que aceptan cdigo BCD que es decodificado y tratado para excitar convenientemente con sus salidas un display de siete segmentos. Situaremos en serie con cada salida una resistencia de 470 ohmios para limitar la corriente que circula por los leds de los displays.

ANODO 3 14 SA SB SC SD SE 1 13 10 8 5

ANODO 3 14 SA SB SC SD SE 1 13 10 8 5

ANODO 3 14 SA SB SC SD SE 1 13 10 8 5

ANODO 3 14 SA SB SC SD SE 1 13 10 8 5

SF 2 SG 11 DP 6 DIG4 DIG3

SF 2 SG 11 DP 6 DIG2

SF 2 SG 11 DP 6 DIG1

SF 2 DP 6

+5V SA SB SC SD SE SF SG 470R SERIE 74LS47 FIG.84G 13 12 11 10 9 15 14 7 A 1 2 6 3 5 4 B C D LT RBI BI PA0 PA1 PA2 PA3 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 1 2 3 4 5 6 7 8

+5V 18 17 16 15 14 13 12 11 DIG1 DIG2 DIG3 DIG4 DIG5 DIG6 DIG7 DIG8

+5V

UDN 2580 A

Como podemos observar en la FIG.84G, las salidas del decodificador atacan a los cuatro displays al mismo tiempo, por lo que tendremos que realizar un proceso de seleccin para indicar a cual de los cuatro displays se dirige la informacin en cada instante. Con este objetivo intercalamos el UDN2580A que dispone de ocho lneas inversoras individuales, aunque en este caso solamente emplearemos cuatro (una para cada display). Esta tarjeta ser controlada mediante el 8155, con los puertos A (PA0, Pa1, PA2, PA3) y B (PB0, PB1, PB2, PB3). El proceso a seguir para sacar informacin hacia los displays ser el siguiente: Se saca a travs del puerto A el dato en BCD que deseemos situar en el display de las unidades y por el puerto B seleccionamos mediante un 0 lgico la lnea del display que ocupa el lugar de las unidades (DIG1). Se mantiene esta situacin unos instantes y a continuacin retiramos la seleccin del dgito de unidades, colocamos en el puerto A la informacin para el dgito de las decenas y seleccionamos dicho dgito a travs del puerto B mediante un 0 lgico (DIG2). Se procede as con los cuatro dgitos a controlar. Teniendo en cuenta estas consideraciones, pasaremos a esbozar el pseudocdigo que nos llevar a la confeccin del programa de control de los cuatro dgitos.

NOMBRE: Dgitos FUNCION: Control 7 segmentos PRECONDICION: Ninguna POSTCONDICION: Ninguna Iniciar sistema Apagar displays Iniciar la cuenta Fin de programa Como vemos, se precisa un mayor refinamiento en todas las operaciones de modo que quede ms claro qu funciones se ejecutan en cada paso. Para ello analizaremos, como siempre, cada uno de los pasos descritos anteriormente. Iniciar el sistema consiste en efectuar las operaciones tpicas consistentes en "prohibir interrupciones", "punterizar la pila" y programar de modo adecuado el PPI 8155, en este caso, como emplearemos sus puertos para sacar datos hacia el exterior tendremos que programarlos como salidas (por el PA sacaremos los datos a representar y por el PB seleccionaremos el dgito en el que aparecer escrito el dato). Apagar displays no es ms que un paso que nos asegura que al conectar el sistema a la tensin y producirse el arranque, los displays permanecern apagados. Para ello no tendremos ms que asegurar que a travs del PB queden los cuatro dgitos bloqueados (sin tensin positiva en el nodo). Iniciar la cuenta es esencialmente empezar a contar desde 0000 hasta 9999 y sacar todos los nmeros en los displays. Este es sin duda el paso ms complejo de los tres iniciales planteados y habr que dividirlo en operaciones ms sencillas para llegar a una mejor comprensin. Tendremos que "iniciar los datos" en algn lugar de la RAM con el valor 0000 (para despus sacarlo hacia los displays). Tendremos que incrementar de 1 en 1 el valor de los datos. Como el microprocesador trabaja con el sistema binario y nosotros veremos los dgitos en BCD, hay que desarrollar un proceso para "preparar los datos". Tendremos que "sacar los datos" hacia nuestra pantalla de displays de siete segmentos. El nmero as mostrado debe permanecer unos segundos en pantalla por lo que hay que prever una temporizacin.

Considerando los pasos de este refinamiento tendremos: NOMBRE: Dgitos FUNCION: Control 7 segmentos PRECONDICION: Ninguna POSTCONDICION: Ninguna Prohibir interrupciones Punterizar la pila Programar el 8155 Apagar displays Iniciar datos en RAM Sacar datos Temporizar unos segundos Incrementar datos en 1 Preparar datos Volver a Sacar datos Fin de programa Parece obvio que "iniciar datos en RAM" consistir en seleccionar unas posiciones de memoria RAM en las que quedarn almacenados los datos y dado que nuestro proceso de cuenta comenzar desde 0000 hasta 9999, el primer dato que necesitaremos en dichas posiciones ser el 0000. Como tenemos que controlar cuatro dgitos y necesitamos cuatro bits por cada dgito en representacin binaria, necesitaremos 2 bytes para manejar la informacin a tratar. Por consiguiente podremos reservar en RAM dos posiciones de memoria para este proceso. Como sabemos, nuestro PPI 8155 dispone de memoria RAM interna entre las posiciones C000H y C0FFH, por lo que en este caso emplearemos dos posiciones de este elemento para dicha tarea. Sean estas posiciones C010H y C011H por ejemplo, a las que apuntaremos con un puntero que llamaremos DATOS. El proceso "sacar datos" requerir como precondicin, que los datos se encuentren previamente almacenados en la RAM, y tratados de forma adecuada para su representacin correcta en los displays de siete segmentos. Este proceso es totalmente independiente por lo que ser construido segn una subrutina que podemos esbozar del modo siguiente: NOMBRE: SACADATO FUNCION: Saca datos a displays PRECONDICION: Datos en RAM POSTCONDICION: Ninguna Iniciar contador temporizacin CONT MIENTRAS CONT>0 Apuntar a DATOS Leer informacin (dos dgitos) Separar VALOR dgito 1 Enviar VALOR a PA Seleccionar DIG1 con PB Separar VALOR dgito 2 Enviar VALOR a PA Seleccionar DIG2 con PB Apuntar a DATOS+1 Leer informacin (dos dgitos) Separar VALOR dgito 3 Enviar VALOR a PA Seleccionar DIG3 con PB Separar VALOR dgito 4 Enviar VALOR a PA Seleccionar DIG4 con PB CONT = CONT - 1 FIN de MIENTRAS Fin de subrutina

Como vemos el proceso de sacar la informacin hacia displays es repetitivo y debe hacerse de forma continua. Debemos tener en cuenta que en cada instante solo tendremos un display activo mientras los otros tres estn apagados. El proceso es tan rpido que el ojo humano no lo percibe as, siendo la sensacin de que estn todos activos al mismo tiempo. La temporizacin se ha incluido dentro de esta subrutina, ya que es precisamente este proceso el que debe repetirse durante unos segundos. El proceso "incrementar datos en 1" consiste en sumar 1 al valor que tengamos almacenado en la RAM. Adems el dato resultante debe ser tratado para obtener el decimal correcto, es decir se debe realizar un ajuste decimal. Este proceso puede ser el siguiente: Tomar dato de RAM (DATOS) Sumar 1 Ajuste decimal Almacenar resultado en RAM (DATOS) Tomar dato de RAM (DATOS+1) Sumar 0 con acarreo Almacenar resultado en RAM (DATOS+1) Tendremos por tanto el siguiente pseudocdigo, que nos permitir afrontar el paso definitivo al programa en ensamblador: NOMBRE: Dgitos FUNCION: Control 7 segmentos PRECONDICION: Ninguna POSTCONDICION: Ninguna Prohibir interrupciones Punterizar la pila Programar el 8155 Apagar displays Iniciar datos en RAM Saltar a SACADATO con retorno Tomar dato de RAM (DATOS) Sumar 1 Ajuste decimal Almacenar resultado en RAM (DATOS) Tomar dato de RAM (DATOS+1) Sumar 0 con acarreo Almacenar resultado en RAM (DATOS+1) Volver a SACADATO Fin de programa NOMBRE: SACADATO FUNCION: Saca datos a displays PRECONDICION: Datos en RAM POSTCONDICION: Ninguna Iniciar contador temporizacin CONT MIENTRAS CONT>0 Apuntar a DATOS Leer informacin (dos dgitos) Separar VALOR dgito 1 Enviar VALOR a PA Seleccionar DIG1 con PB Separar VALOR dgito 2 Enviar VALOR a PA Seleccionar DIG2 con PB Apuntar a DATOS+1 Leer informacin (dos dgitos)

Separar VALOR dgito 3 Enviar VALOR a PA Seleccionar DIG3 con PB Separar VALOR dgito 4 Enviar VALOR a PA Seleccionar DIG4 con PB CONT = CONT - 1 FIN de MIENTRAS Fin de subrutina Con toda esta informacin procederemos a la concrecin de nuestro programa de control, empleando lenguaje ensamblador, del modo siguiente:

2500 A.D. 8085 CROSS ASSEMBLER VERSION 3.41a -------------------------------------------------INPUT FILENAME : OUTPUT FILENAME : DIGITOS7.ASM DIGITOS7.OBJ

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

;-------------------------------;NOMBRE : DIGITOS ;FUNCION : Control 7 segmentos ;PRECONDICION : Ninguna ;POSTCONDICION : Ninguna ;-------------------------------;-------------------------------;PARAMETROS PARA EL 8155 ;-------------------------------PA81 EQU C401H PB81 EQU C402H PC81 EQU C403H REES81 EQU C400H ;-------------------------------;-------------------------------;PARAMETROS PUNTERO DE PILA ;-------------------------------PPILA EQU 87FFH ;-------------------------------;-------------------------------;PARAMETROS DATOS RAM 8155 ;-------------------------------DATOS EQU C010H ;-------------------------------DIGITOS: F3 21 F9 3E 32 3E 32 21 36 FF 87 0F 00 C4 FF 02 C4 10 C0 00 DI LXI H,PPILA SPHL MVI A,0FH STA REES81 MVI A,FFH STA PB81 LXI H,DATOS MVI M,00H

01 02 03 00

C4 C4 C4 C4

FF 87

10 C0

0000 0000 0001 0004 0005 0007 000A 000C 000F 0012

39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

0014 0015 0017 001A 001B 001E 0020 0021 0022 0023 0024 0026 0027 0028 0029

23 36 CD A7 21 3E 8E 27 77 23 3E 8E 27 77 C3

00 2C 00 10 C0 01

S1

00

17 00

INX H MVI M,00H CALL SACADATO ANA A LXI H,DATOS MVI A,01H ADC M DAA MOV M,A INX H MVI A,00H ADC M DAA MOV M,A JMP S1

;-------------------------------;NOMBRE: SACADATO ;FUNCION: Sacar datos a display ;PRECONDICION: Datos RAM (DATOS) ;POSTCONDICION: Ninguna ;-------------------------------002C 002C 002D 002E 002F 0030 0033 0035 0037 003A 003B 003E 003F 0042 0043 0044 0045 0047 004A 004B 004C 004D 004E 004F 0052 0053 0054 0055 0058 0059 005A 005B 005D 0060 0061 0062 0063 0064 SACADATO: PUSH PSW PUSH H PUSH D PUSH B LXI D,1FFFH S2 MVI B,FEH MVI C,02H LXI H,DATOS S3 MOV A,M STA PA81 MOV A,B STA PB81 NOP NOP NOP MVI A,FFH STA PB81 MOV A,M RRC RRC RRC RRC STA PA81 MOV A,B RLC MOV B,A STA PB81 NOP NOP NOP MVI A,FFH STA PB81 INX H MOV A,B RLC MOV B,A DCR C

F5 E5 D5 C5 11 06 0E 21 7E 32 78 32 00 00 00 3E 32 7E 0F 0F 0F 0F 32 78 07 47 32 00 00 00 3E 32 23 78 07 47 0D

FF 1F FE 02 10 C0 01 C4 02 C4

FF 02 C4

01 C4

02 C4

FF 02 C4

100 101 102 103 104 105 106 107 108 109 110 111

0065 0068 0069 006A 006B 006E 006F 0070 0071 0072 0073

C2 3A 00 1B 7A B3 C2 33 00 C1 D1 E1 F1 C9

JNZ DCX MOV ORA JNZ POP POP POP POP RET END

S3 D A,D E S2 B D H PSW

******** DATOS DIGITOS PA81 PB81 PC81 PPILA REES81 S1 S2 S3 SACADATO

C R O S S = C010 0000 = C401 = C402 = C403 = 87FF = C400 0017 0033 003A 002C : : : : : : : : : : :

R E F E R E N C E 37 72 36 31 34 53 104 100 41 43 85 74 70

T A B L E

********

79

89

94

LINES ASSEMBLED :

111

ASSEMBLY ERRORS :

Como podemos apreciar, en este caso no se ha realizado el diagrama de flujo del programa. Esta tarea puede desarrollarla el lector si la considera interesante.

8.5 EJERCICIOS.
1. 2. 3. Desarrollar una breve descripcin funcional del PPI 8155. Definir los modos de programacin del PPI 8155. Explicar el modo de conexin del PPI 8155 al bus del 8085, empleando la seal IO/M del microprocesador. En el programa desarrollado en el ejemplo 1, denominado LAMPARAS, qu cambios habra que realizar para: a) Emplear como pila la RAM del 8155. b) Controlar las lmparas con el puerto B. c) Aumentar el tiempo de la temporizacin. En el ejemplo 3 cmo aumentaramos el tiempo de permanencia en pantalla de las cifras a representar?

4.

5.

Un paseo por Lanzarote

Arrecife

Cueva de los verdes

Fundacin Cesar Manrique

Golfo

Hervideros

Jameos del agua

Jardn de cactus

Jardn de cactus

Mirador del ro

Playa Blanca

Salinas de Janubio

Timanfaya

Timanfaya

You might also like