microprocesadores luis-urdaneta capítulo 9

Upload: saint-amy-suburbia

Post on 07-Aug-2018

234 views

Category:

Documents


2 download

TRANSCRIPT

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    1/84

    Dispositivos de E/S Programables 496

    En este captulo se presentarn aplicaciones prcticas que usan dispositivosprogramables para interconexin de E/S. El modo de operacin de tales circuitos esprogramado al inicio del cdigo y puede ser modificado en cualquier momento. Eluso de estos chipssimplifica el circuito de interconexin y reduce el nmero de lneasdel programa de control.

    En el interior del encapsulado de los dispositivos microcontroladores moder-nos se integra un grupo de circuitos programables los cuales realizan las funcionesmnimas necesarias para resolver una tarea tpica de control de complejidad baja. Es-tas funciones son: E/S digital, control de tiempo, conversin D/A y modulacin porancho de pulso. En contraposicin, para que un microprocesador pueda ser usado enaplicaciones de control es necesario interconectar a la CPU circuitos LSI externospara que realicen las distintas tareas bajo la direccin del P. Tambin en caso quelos recursos de un microcontrolador no sean suficientes para una aplicacin determi-

    nada, es necesario convertir el ctrl en un microprocesador y conectarle hardwareexterno.

    Aunque estos dispositivos externos pueden ser simples acopladores de tres es-tados o registros paralelos, el desarrollo de la tecnologa del P introdujo desde hace30 aos un grupo de dispositivos programables para interconexin de E/S, los cuales

    Dispositivos de E S Programables

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    2/84

    Dispositivos de E/S Programables 497

    El circuito de interconexin de E/S paralela PPI 8255A, el controlador de inte-rrupciones PIC 8259A, el USART 8251, el temporizador programable 8253/54 o ver-siones avanzadas de estos componentes son ejemplos de dispositivos que cumplenfunciones en sistemas PCs modernos y que son compatibles con sistemas basados enel 8085A. El avance en la tecnologa de fabricacin de circuitos integrados ha hechoobsoletos a muchos de estos chips (controladores de CRT y de discos). No obstantealgunos componentes como el USART 8251A y el PPI 8255A mantienen hoy en datoda su funcionalidad y son usados en aplicaciones con Ps como controladores de

    perifricos. En el caso del controlador de interrupciones, las funciones del PIC8259Ase incorporaron al P Pentium como una unidad funcional interna. En este captulo sediscutir el uso de estos chipsen ejemplos del mundo real.

    9.1 CIRCUITO PARA INTERCONEXIN DE PERIFRICOS 8255

    EL PPI 8255A (Peripheral Interface Programmable) fue diseado original-mente para Ps INTEL,pero ha siso usado en aplicaciones realizadas con la mayorade los microprocesadores existentes. El 8255A ofrece 24 terminales de E/S las cualespueden programarse en dos grupos (A y B) de 12 lneas. El dispositivo puede operaren tres modos diferentes (0, 1 y 2). La figura 9.1 muestra el diagrama de bloques y ladistribucin de terminales del 8255A.

    8255

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    3/84

    Dispositivos de E/S Programables 498

    DEFINICIN FUNCIONAL DE LOS TERMINALES DEL 8255A

    VCCGND

    + 5 VTierra

    CS Un nivel bajo en este terminal permite la comunicacin entre el P y el 8255A.

    WR Esta entrada se activa a cero durante una operacin de escritura del P.

    RD Entrada activa en cero durante una operacin de lectura del P.

    D0-D7 Es el busde datos bidireccional y tres estados por medio del cual se transfieren comandos y/o datosentre el PPI y el P.

    RESET Un nivel alto en esta entrada inicia el registro de control con todos los puertos en el modo de entrada.

    A0A1 En conjunto con las entradas CS , WR y RD controlan el acceso a uno de los tres puertos de E/S oal registro de control. Usualmente se conectan a las salidas A0-1del 8085A.

    PA0-PA7 Puerto A: Ocho bitsde un latchde salida, buffery un latchde entrada.PB0-PB7 Puerto C: Ocho bitsde un latchde salida , buffery un latchde entrada.PC0-PC7 Puerto C: Ocho bitsde un latchde salida, y bufferde entrada. Puede usarse como dos puertos de 4

    bits.

    Al grupo A pertenecen el puerto A: PA0-PA7y los cuatro bitsms significati-

    vos del puerto C (PC4-PC7); el grupo B agrupa las ocho lneas del puerto B: PB0-PB7y los cuatro bits de orden bajo del puerto C (PC0-PC3). Adems de los puertos, el8255A contiene un registro de comandos para la programacin del dispositivo. Paraque el 8085A pueda tener acceso a uno de los registros para programar el dispositivo,o usar uno de los puertos, la entrada de habilitacin CS debe ponerse a nivel bajo. Laseleccin del registro de comando o de un puerto de E/S particular, se realiza por me-dio de las entradas de direccin A0y A1, segn lo indicado por la tabla 9.1.

    Tabla. 9.1 Direcciones de los registros internos del PPI 82550

    El tipo de operacin a realizar es determinado por la activacin de una de lasentradas de control: RD o WR. Estas lneas de entrada puede conectarse a los termi-nales de igual nombre del P o a las salidas de control de lectura y escritura en puer-to de E/S: IORDe IOWR , de acuerdo con el modo que se decodifica la direccin deldi iti L h l d d t D D l b d di i /d t AD AD

    A7 A6 A5 A4 A3 A2 A1 A0 x x x x x x 0 0 Puerto A de E/S x x x x x x 0 1 Puerto B de E/S x x x x x x 1 0 Puerto C de E/S x x x x x x 1 1 Registro de comando

    Registro seleccionadoDireccin del puerto de E/S

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    4/84

    Dispositivos de E/S Programables 499

    aplica energa, la lnea RESETOUT del P sube a nivel alto y obliga al 8255A a

    iniciarse con todos los puertos programados como entrada. Si tal configuracin no esla deseada para la aplicacin, el PPI debe ser reprogramado escribiendo un cierto pa-trn de bitsen el registro de comando.

    Tabla. 9.2Operacin del PPI 8255A.

    9.1.1 Puertos de entrada y salida

    El 8255A tiene tres puertos A, B, C de ocho bits, pudiendo dividirse el puerto

    C en dos registros de E/S de cuatro bits cada uno. Los cuatro puertos se organizancomo dos grupos A y B, donde cada grupo es formado por un puerto de ocho bitsyotro de cuatro lneas. Como ilustra la figura 9.1, el grupo A est compuesto por elpuerto A y el nibblems alto del puerto C. Al grupo B lo forma el puerto B y los cua-tro bitsde orden bajo del puerto C.

    Grupo A: PA0-7+ PC4-7Grupo B: PB0-7+ PC0-3

    La funcin de las lneas de cada grupo la fija una palabra de control que secarga en el registro de comando (A0-1=112), para operacin en tres modos diferentes.

    9.1.2 Modos de operacin del 8255A

    El di d l li i d l A B d l 8255A

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    5/84

    Dispositivos de E/S Programables 500

    Modo 0

    Los terminales de los puertos A, B y C pueden programarse como entradas osalidas con retencin (slo las salidas) de los datos. El puerto C puede usarse comodos puertos de 4 bits, con posibilidad de activar/desactivar cualquiera de las lneasindividualmente. Son posibles 16 configuraciones diferentes de E/S en este modo.

    Modo 1

    La transferencia desde/hacia los puertos A y B es controlada por un protocolode enlace usando las lneas del puerto C. Los grupos A y B pueden ser programadosen forma independiente para usar el puerto de ocho bitspara transferencias controla-das por las cuatros lneas del puerto C del grupo correspondiente. El puerto A y Bpuede ser entrada o salida, ambas con retencin de datos. Los terminales del puerto Crespectivo se usan como seales de control o de estado del puerto de ocho bits.

    Modo 2

    El puerto A puede programarse para transmisin o recepcin de datos sobrelas mismas lneas. Tanto las entradas como las salidas son retenidas y se usan cincolneas del puerto para controlar y examinar el estado de la transferencia a travs delpuerto A.

    9.1.3 Programacin del 8255A

    La palabra escrita en el registro de control es decodificada por la lgica inter-na del dispositivo para establecer cual de dos funciones posibles ser realizada. Estasson:

    1. Definicin de modo de operacin.2. Activacin/desactivacin de bitsdel puerto C.

    Cuando el bitms significativo (D7) de la palabra de control es uno, esta seinterpreta como un bytede definicin de modo de operacin. El formato de esta pala-bra se muestra en la figura 9.2

    Se puede configurar al componente para operacin en un modo o en una com-binacin de estos. La figura 9.3 muestra un ejemplo de seleccin de modo. En estecaso los grupos A y B se configuran como entradas/salidas en el modo 0. Si la direc-i d l t d t l 0BH l l b d t l 91H l i i t di

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    6/84

    Dispositivos de E/S Programables 501

    Fig. 9.2Palabra de definicin del modo de operacin.

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    7/84

    Dispositivos de E/S Programables 502

    Cuando el bitD7de la palabra de control es cero lgico, los circuitos internos

    del PPI la entienden como una orden de activacin/desactivacin de uno de los bitsdel puertoC. El formato de este comando se muestra en la figura 9.4. Esta funcin sedenomina bit set/reset, y permite poner a uno o a cero cualquiera de las lneas delpuerto C.

    Fig. 9.4 Formato de la palabra de control para activar/desactivar un bitdel puerto C.

    Suponga que se desea generar un pulso de nivel alto en el terminal 2 del puer-to C. El siguiente programa realizar la tarea.

    ;----------------------------------------------------------------------------------------------pctrl_8255 equ 0bh ; Direccin del registro de control.

    ; Pulso se inicia en cero

    mvi a,00000100b ; Palabra de control al acumuladorout pctrl_8255 ;Bit2 a cero, al inicio.

    ; Poner bita nivel alto

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    8/84

    Dispositivos de E/S Programables 503

    9.1.4 Aplicaciones del 8255

    A continuacin se presentan un grupo de ejemplos prcticos que ilustran eluso del PPI 8255A en sus diferentes modos de operacin.

    Operacin en el modo 0

    La primera aplicacin del modo 0 consiste en la interconexin de un teclado alsistema usando un 8255A y la rutina de lectura del teclado.

    Ejemplo 9.1

    Se debe escribir un programa para la lectura del teclado numrico de la figura9.5. Cuando se pulse una tecla, debe retornarse su valor en el registro acumulador.

    (a) (b)

    Fig. 9.5 Teclado numrico. a) Aspecto mecnico. b) Smbolo elctrico.

    El teclado de la figura 9.5 se usa para introducir al C informacin numricaen representacin hexadecimal. El perifrico de entrada est formado por 16 pulsado-res conectados en una matriz 4 x 4. La presin de un pulsador conectar la fila donde

    se encuentra la tecla, con la columna correspondiente.

    Las funciones que debe realizar el programa de control de teclado son:

    Detectar la pulsacin de una tecla. Suprimir los rebotes de contactos. Identificar la tecla

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    9/84

    Dispositivos de E/S Programables 504

    Fig. 9.6Un PPI 8255 funciona como puerto para el teclado.

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    10/84

    Dispositivos de E/S Programables 505

    El programa esperar en un lazo hasta que ocurra la pulsacin de una tecla. La

    activacin de un pulsador conectar la fila donde ste se ubica con la columna corres-pondiente. A cada elemento de la matriz le corresponde un nmero para indicar suubicacin y un cdigo que representa el valor de la tecla.

    Las teclas se numeran: 00, 11,FF. De modo que para este caso, el c-digo de la tecla se corresponde con su nmero. Por ejemplo la tecla 6 (nmero 6) es-tar en la fila 1 columna 2. El algoritmo para determinar el valor de una tecla consis-te en identificar la fila y la columna de la tecla presionada. El nmero (posicin en la

    matriz) del pulsador viene dado por:

    ColumnaladeNColumnasdeNmeroFilaladeNN

    +=

    La tecla de valor 6 tendr como nmero 1 x 4 + 2 = 6. En este caso el n-mero corresponde con el valor. Si el teclado tiene teclas de funcin ser necesario eluso de una tabla, a la cual se entra con el nmero de la tecla para encontrar el valorcorrespondiente.

    Identificacin de la fila:

    PCbajo: EntradaPCalto: Salida

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    11/84

    Dispositivos de E/S Programables 506

    El valor en el acumulador permite identificar la fila a la cual pertenece el pul-

    sador activado.

    Identificacin de la columna:

    PCbajo: SalidaPCalto: Entrada

    Fig. 9.8 Identificacin de la columna.

    Se escribe el patrn 0000 en el puerto PCbajoy se lee en el puerto PCalto: 1011.El bit2 estar en cero debido a que la tecla 6 fue pulsada. Una vez identificadas la filay la columna puede calcularse el nmero del pulsador como se describe en la pginaprevia.

    En la figura 9.9 se muestra el diagrama de flujo del programa tecla, el cual es-pera por la presin de una tecla y suprime el efecto del rebote del interruptor o unaactivacin falsa por ruido. Si ocurre una pulsacin vlida, se procede a determinar elnmero del pulsador como se indic. El cdigo de la rutina Teclase presenta a conti-nuacin y considera que el 8255 de la figura 9.6 se decodifica en la direccin 0. Laposicin de la tecla pulsada es cargada en el registro acumulador.

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    12/84

    Dispositivos de E/S Programables 507

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    13/84

    Dispositivos de E/S Programables 508

    ;---------------------------------------------------------------------------------------------------------------------------; Rutina de lectura de teclado 4x4;---------------------------------------------------------------------------------------------------------------------------

    palb_ctrl1 equ 91hpalb_ctrl2 equ 8ahpc_8255 equ 2pctrl_8255 equ 3;---------------------------------------------------------------------------------------------------------------------------tecla: mvi a,palb_ctrl1 ;PCL:entrada, PCH:salida

    out pctrl_8255

    mvi a,0fh ; Nibble alto del acumulador a ceroout pc_8255 ; Todas las columnas a ceroleer: in pc_8255 ; Leer filas

    ani 0fh ; Poner mascaracpi 0fh

    jnz leer ; Si tecla pulsada, leercall r20ms ; Teclas liberadas, esperar 20 ms

    releer: in pc_8255 ; Leer filasani 0fh ; Poner mascara

    cpi 0fh ; Detectar tecla pulsadajz releer ; Tecla no pulsada, leer puertocall r20ms ; Tecla pulsada, esperar 20 msin pc_8255 ; Detectar error por ruidoani 0fhcpi 0fh ; Detectar pulsacin falsa

    jz releer ; Si ruido, leer puertomov c,a ; Cargar patrn de filas en Cmvi a,palb_ctrl2 ; PCL:salida, PCH:entradaout pctrl_8255

    mvi a,0f0h ; Todas las filas en ceroout pc_8255in pc_8255 ; Patrn de columnas en A

    ; Identificar columna

    mvi b,3 ; Contador de columnas a 3iden_c: ral ; Desplazar a la izquierda

    jnc fila ; Si CY=0, en B numero de columna

    dcr b ; Si CY=1, restar 1 a contador de colum.jmp iden_c ; Volver a desplazar

    ; Identificar fila

    fila: mov a,c ; Patrn de filas en acumuladormvi c,0 ; Contador de filas a cero

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    14/84

    Dispositivos de E/S Programables 509

    El ejemplo que sigue describe el modo de interconexin al sistema y el pro-

    grama de control de un teclado con teclas cuyas funciones son especificadas por eldiseador.

    Ejemplo 9.2

    La figura 9.10 presenta un teclado de 20 teclas arregladas en una matriz de 4x5con cuatro pulsadores de funcin. Escriba una rutina que lea el teclado y cargue el

    cdigo de la tecla en el registro acumulador.

    Fig. 9.10 Matriz de 20 teclas con cuatro funciones.

    Debido a la distribucin de los pulsadores en la matriz, el nmero que indica

    la posicin no corresponde con el valor que debe retornar la tecla. Por ejemplo la te-cla nmero 4 es F4y la nmero 5 tiene el valor 4. Esto determina que una vez deter-minada la posicin del elemento en la matriz, debe usarse una tabla de bsqueda paraencontrar el cdigo correspondiente. Tambin deben usarse cuatro lneas del puerto Apara las filas y cinco del puerto B para las columnas. El siguiente cdigo realiza latarea solicitada en el ejemplo.

    ;---------------------------------------------------------------------------------------------------------------------------; Seccin de programa principal que llama a rutina tecla.; Con el nmero del pulsador entra en una tabla de consulta y encuentra el cdigo de la tecla activada y; lo retorna en el registro acumulador.;---------------------------------------------------------------------------------------------------------------------------tope_pila equ 300h;---------------------------------------------------------------------------------------------------------------------------

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    15/84

    Dispositivos de E/S Programables 510

    ;---------------------------------------------------------------------------------------------------------------------------; Tabla de cdigo de tecla;---------------------------------------------------------------------------------------------------------------------------

    cod_tecla: db 00h ; tecla 0db 01h ; tecla 1db 02h ; tecla 2db 03h ; tecla 3db 10h ; tecla f1db 04h ; tecla 4db 05h ; tecla 5

    db 06h ; tecla 6db 07h ; tecla 7db 11h ; tecla f2db 08h ; tecla 8db 09h ; tecla 9db 0ah ; tecla adb 0bh ; tecla bdb 12h ; tecla f3db 0ch ; tecla c

    db 0dh ; tecla ddb 0eh ; tecla edb 0fh ; tecla fdb 13h ; tecla f4

    ;---------------------------------------------------------------------------------------------------------------------------; Rutina de lectura de teclado 4x5. Retorna nmero de tecla en el acumulador;---------------------------------------------------------------------------------------------------------------------------

    palb_ctrl1 equ 91hpalb_ctrl2 equ 8ahpa_8255 equ 0

    pb_8255 equ 1pctrl_8255 equ 3;---------------------------------------------------------------------------------------------------------------------------tecla: mvi a, palb_ctrl1

    out pctrl_8255xra aout pb_8255

    leer: in pa_8255ani 1fh

    cpi 1fhjnz leercall r20ms

    releer: in in pa_8255ani 1fhcpi 1fh

    jz releer

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    16/84

    Dispositivos de E/S Programables 511

    out pa_8255in pb_8255

    mvi b,0iden_c: rar

    jnc filainr b

    jmp iden_cfila: mov a,c

    mvi c,0iden_f: rar

    jnc listo

    inr cjmp iden_flisto: mov a,c

    ral ;Numero de la fila x 5raladd cadd b ;Sumar nmero de columnaret

    Observe que a las cuatro teclas de funcin se les asigna cdigos arbitrarios ydiferentes a los dgitos del sistema hexadecimal. Por ejemplo 10H para F1, 11H paraF2, 12H para F3y 13H para F4. Estos valores permiten al programador conocer cualfuncin fue seleccionada en cualquier momento.

    Es usual que una aplicacin basada en Ps requiera adems de perifricos deentrada algn tipo de dispositivo para exhibicin de informacin. Los sistemas debajo costo usan mdulos LCD o indicadores de siete segmentos. An cuando las pan-

    tallas LCD de 2 a 4 neas han disminuido en costo y no requieren refrescar continua-mente los datos presentados, los visualizadores con diodos 7-segmentos son de usodifundido en el medio industrial sobre todo cuando la luz ambiental es deficiente.Puede considerarse que la presentacin con dispositivos tipo LEDspermanecer du-rante muchos aos como una opcin vlida para el despliegue de informacin en sis-temas e instrumentos electrnicos de bajo costo. El ejemplo siguiente ilustra el uso detales indicadores para exposicin de informacin alfanumrica.

    Ejemplo 9.3

    La figura 9.11 muestra un circuito visualizador de ocho dgitos con indicadoresde siete segmentos tipo nodo comn, conectados a un PPI 82C55. Para minimizar elnmero de lneas de interconexin se usa la tcnica de multiplexado de los datos apresentar Se debe escribir una rutina para el control de exhibidor mostrando en la

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    17/84

    Dispositivos de E/S Programables 512

    Fig. 9.11. Circuito de presentacin con ocho caracteres alfanumricos.

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    18/84

    Dispositivos de E/S Programables 513

    Para una presentacin con parpadeo mnimo, la frecuencia de multiplexado

    debe estar comprendida entre 100 Hz y 1.5 KHz. Esto significa que si losNindicado-res se activan en intervalos Txde 500 s, la frecuenciafmuxser igual:

    x

    1

    T N

    1000250 Hz

    0.5 8

    mux

    mux

    f

    f

    =

    = =

    El circuito debe estar sincronizado. Esto significa que debe cargarse en elpuerto A del 82C55 (funcionando en modo 0) el complemento del cdigo de 7 seg-mentos del caracter a presentar en unLEDy simultneamente debe aplicarse un nivelbajo, por medio de una lnea del puerto B, en la base del transistor que aplica energaal indicador correspondiente. Este proceso se repite para cada dgito, a una frecuenciaNfmux.

    Como se observa en la figura 9.11, el puerto A del 82C55 se usa para activar

    los segmentos. Para proveer la corriente necesaria para los segmentos se usa un cir-cuito amplificador ULN2003 el cual puede manejar con comodidad corrientes de sa-lida de hasta 500 mA. Debido a que el chipsolo tiene siete pares darlington, se usa untransistor discreto Q2N222A para el punto decimal. La seleccin de dgitos se lograactivando con un nivel bajo en el terminal correspondiente del puerto B, uno de lostransistores PNP Q2N4405.

    La seleccin de la corriente que debe circular por cada segmento para garanti-

    zar una brillantez adecuada ante el observador, depende de distintos factores fsicos yhumanos. La distancia de observacin, el ngulo de visin, la altura del carcter, lailuminacin ambiental y la razn de contraste entre el indicador y el color del fondoambiental son algunos de los parmetros a considerar para fijar el valor adecuado dela corriente por segmento. En nuestro caso se considera que, de acuerdo con las espe-cificaciones del fabricante del indicador, una intensidad de If=10 mA por segmentogarantizar un brillo aceptable. La corriente Ifes provista por los amplificadores delULN2003 y por el transistor Q2N222A. La corriente que circula por el circuito de

    colector de los transistores Q2N4405 de manejo de dgito ser igual a kIf con k igualal nmero de segmentos iluminados en el indicador correspondiente.

    Debido a que cadaLEDpermanece apagado la mayor parte del tiempo, la co-rriente promedio que circula por un segmento ser mucho menor que 10 mA y enconsecuencia la iluminacin percibida por el observador ser deficiente Para com

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    19/84

    Dispositivos de E/S Programables 514

    Esto indica que para obtener un nivel de iluminacin equivalente a la que pro-

    ducira una corriente de 10 mA en condiciones de corriente continua, el pico de co-rriente debe ser igual a 80 mA, para una pantalla de ocho dgitos. Esto es:

    fpico INI =

    Para calcular el valor del resistor limitador de corrienteRpse usa el circuito dela figura 9.12 que muestra la trayectoria de la corriente por un segmento de un indi-cador.

    Fig. 9.12 Circuito equivalente para el clculo de Rp.

    El transistor Q1 de la figura 9.12 conduce por la aplicacin de un nivel bajo en

    su base. Esta tensin proviene de una lnea del puerto B. El transistor Q2del par dar-lington del ULN2003 est activado cerrando el camino de la corriente a travs delsegmento a. Para iluminar un segmento, se aplica un nivel alto a la entrada delULN2003. El valor del resistor de 510 en la base de Q1 se calcula para que cuandotodos los segmentos del indicador estn activados, circule una ICQ1= 8x80 mA= 640mA. El VCESATQ1, bajo estas condiciones, es de aproximadamente 600 mV, mientras

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    20/84

    Dispositivos de E/S Programables 515

    La resistencia en la base del transistor que maneja el punto decimal se calculade modo que una tensin de 4.6 V en la lnea PA7 produzca una intensidad de 80 mAen el circuito de colector del Q2N2222 con una tensin colector-emisor de 0.8 V.

    El programa de control para el circuito de la figura 9.11 se muestra a conti-nuacin. Este presenta el mensaje especificado con una frecuencia de multiplexado de250 Hz. La presentacin se inicia por el indicador del extremo derecho.

    ;----------------------------------------------------------------------------------------------------------------; Este programa presenta el mensaje Udo 2005 en; una pantalla de indicadores de 7-segmentos.;----------------------------------------------------------------------------------------------------------------

    ;----------------------------------------------------------------------------------------------------------------i_stack equ 8fbh ; Inicio de la pilanum_dig equ 8

    plbr_ctrl equ 80h;----------------------------------------------------------------------------------------------------------------

    ; Definicin de segmentosdefseg puertos,start=0, class=iospace ; 8255 en direccin 0defseg stack, start=i_stack ; La pila reside en la RWMdefseg progr, class=code, start=0

    ;----------------------------------------------------------------------------------------------------------------; Puertos del 8255

    seg puertospa_8255 ds 1 ; Salidas a segmentospb_8255 ds 2 ; Seleccin de dgitos

    pctrl_8255 ds 1 ; Puerto de control;----------------------------------------------------------------------------------------------------------------; Los 8 bytesltimos de RWM soportan el stack.

    seg stackds 8

    t_stack:equ $-1 ; Base de la pila;----------------------------------------------------------------------------------------------------------------; Segmento de cdigo en EPROM

    seg progrlxi sp,t_stack ; Se inicia el apuntador de pilamvi a,plbr_ctrl ; Palabra de control del 8255out pctrl_8255 ; Se programan puertos A y B como salidas

    rep: lxi h,msj ; Registro par H apunta a primer caracter del mensajecall visual ; Presentar mensaje

    jmp rep ; Repetir por siempre

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    21/84

    Dispositivos de E/S Programables 516

    lxi h,cod_7seg ; HL apunta al inicio de la tabla de cdigos 7-segmentosadd l ; Sumar desplazamiento

    mov l,amov a,m ; Cdigo de 7-seg al registro acumuladorout pa_8255 ; Sacar por puerto Axchg ; Recuperar direccin de caracter del mensajecall r500us ; Esperar 500 smov a,c ; Recuperar patrn de seleccin de dgitorlc ; Se activar el dgito siguientemov c,a ; Guardar patrninr l ; Apuntar siguiente caracter del mensaje

    dcr b ; Contador de caracteres menos 1jnz pres ; Si no cero, siguiente caracterret ; Retornar si caracter final.

    ;----------------------------------------------------------------------------------------------------------------; Mensaje;----------------------------------------------------------------------------------------------------------------msj: db u,?d,o,espac,dos,cero,cero,cinco;----------------------------------------------------------------------------------------------------------------; Tabla de cdigos de siete segmentos;----------------------------------------------------------------------------------------------------------------cod_7Seg:cero equ $-cod_7Seg

    db 0f3hdb 60h

    dos equ $-cod_7Segdb 0b5hdb 0f4h

    cuatro equ $-cod_7Segdb 66h

    cinco equ $-cod_7SegS equ $-cod_7Seg

    db 0d6hdb 0d7hdb 70h

    ocho equ $-cod_7Segdb 0f7hdb 7eh

    ?A equ $-cod_7Seg

    db 77h?B equ $-cod_7Segdb 0c7h

    ?C equ $-cod_7Segdb 93h

    ?d equ $-cod_7Segdb 0e5h

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    22/84

    Dispositivos de E/S Programables 517

    db 85h?M equ $-cod_7Seg

    db 0e6hn equ $-cod_7Seg

    db 45hi equ $-cod_7Seg

    db 20hJ equ $-cod_7Seg

    db 0e1ho equ $-cod_7Seg

    db 0e4h

    P equ $-cod_7Segdb 37hq equ $-cod_7Seg

    db 76hr equ $-cod_7Seg

    db 05ht equ $-cod_7Seg

    db 44hu equ $-cod_7Seg

    db 0Eh equ $-cod_7Seg

    db 0a3h_ equ $-cod_7Seg

    db 80Hespac equ $-cod_7Seg

    db 00hend

    ;----------------------------------------------------------------------------------------------------------------

    Ejemplo 9.4

    En este ejemplo se mide y presenta el valor de una tensin continua positivaen el rango de 0 a +5 V. Se construir y programar un convertidor anlogo digitalpor aproximaciones sucesivas (AS). El mtodo de AS usa un conversor digital anal-

    gico y un comparador como ilustra la figura 9.13. El proceso de conversin se realizaen un nmero de pasos igual al de bits(en este caso ocho) que tenga el CDA.

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    23/84

    Dispositivos de E/S Programables 518

    Algoritmo:

    Al inicio del proceso de conversin se aplica a las entradas del CDA un valordigital con el bitms significativo puesto a nivel alto y los bitsrestantes a cero y selee la salida del comparador. Un nivel lgico 1/0 indica que la seal de entrada esmayor/menor que la generada por el CDA. El valor lgico de la salida del compara-dor se asigna en la siguiente etapa al bitque se procesa. A continuacin se repite elproceso con el siguiente bity as sucesivamente hasta el menos significativo. El prin-cipio de AS est basado en un mtodo de ensayo y error que aproxima el valor de la

    seal de entrada a la mitad superior e inferior del rango de representacin de cadaetapa. En la figura 9.15 se presenta el diagrama de transiciones para un convertidoranlogo digital por aproximaciones sucesivas de cuatro bits. Las seales Vo y Vrre-presentan las salidas del circuito comparador y del conversor digital anlogo respecti-vamente. La primera slo puede tomar valores 1 0, segn la tensin de entrada seamayor o menor que la generada por el CDA y la segunda es la tensin generada poreste conversor.

    Fig.9.14.Circuito del convertidor A/D por aproximaciones sucesivas.

    Existen convertidores analgico digital del tipo descrito presentados como unchipen el cual el controlador se realiza por hardwarey se integra al encapsulado. Eneste caso se usa el P como controlador, conectando un DAC0808 al puerto de salidaB (01H) de un 8255A y examinando la salida del comparador LM311 por el bit7 delpuerto de entrada C (02H), como ilustra la figura 9.14. El PPI 8255A funcionar enmodo 0 y no se muestra en el diagrama.

    EL convertidor D/A tiene una resolucin de 8 bits y se configura para entregaruna corriente de salida IOUTdesde 0 hasta IFScuando las entradas A8-1van desde 00

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    24/84

    Dispositivos de E/S Programables 519

    Fig. 9.15.Diagrama de transiciones para un CAD por aproximaciones sucesivas.

    Los objetivos de este ejemplo son:

    1 Escribir un programa en ensamblador para obtener el valor binario de latensin analgica de entrada Viusando el P para resolver el algoritmo de

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    25/84

    Dispositivos de E/S Programables 520

    Fig. 9.16. Pantalla de tres dgitos con indicadores tipo ctodo comn.

    El mdulo de presentacin est formado por un displayque contiene tres indi-cadores de 7 segmentos ctodo comn y es especialmente fabricado para uso con latcnica de multiplexado. El circuito usa undecodificador CMOS 4511 para generar elcdigo de 7 segmentos. La frecuencia de multiplexado debe ser 333.33 Hz (1000/3).

    Solucin:

    El programa de control para el voltmetro de corriente continua del ejemploconsta de 4 mdulos, estos son:

    Programa principal

    Configura el 8255A para operar en el modo 0 con los puertos A y B como salidas y el puer-to C como entrada.

    Llama a la rutina ADC, la cual realiza el algoritmo de consultas sucesivas y retorna el valordigital de la muestra.

    Convierte el valor del voltaje de entrada desde binario a BCDy lo almacena en memoria.Para la conversin a decimal se usa el hecho que dada la salidaAdel convertidor A/D, el va-

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    26/84

    Dispositivos de E/S Programables 521

    Si el resultado de la conversin es 25510= FFH, entonces el valor del voltaje es:

    Volt98.42552565Vi ==

    Un nmero de 8 bits,al ser multiplicado por 5 por 10 siempre producir un resultado (su-puesto de 12 bits) cuyo dgito ms significativo es un nmero BCD. De modo que bastarejecutar el producto 5 x FFH = 4FBH para obtener el primer dgito BCD (4) del resultado.El valor FBH es el residuo despus de la divisin por 256. En realidad esta ltima operacinno se realiza sino que el remanente FBH se multiplica por diez, resultando 9CEH. La divi-sin entera de este valor por 256 entrega el dgito BCD (9) de las dcimas de voltios y un

    residuo de C0H. Repitiendo el proceso con el nuevo residuo resulta el valor 80CH y se ob-tienen las centesimas (8) de voltios. Con este algoritmo sencillo puede convertirse el datoentregado por el ADC a un voltaje enBCD.

    Rutina ADC

    Realiza el algoritmo de aproximaciones sucesivas y retorna en el registro acumulador la re-presentacin digital del voltaje Vide entrada. Esta tcnica pone a 1 el bitms significativodel puerto conectado al convertidor D/A, de modo que la salida del DAC tendr la tensinde media escala. Este nivel es comparado con el valor del voltaje desconocido de entrada. Si

    el voltaje de prueba a la salida del CDA es demasiado bajo, el bites puesto a 1 permanen-temente y se prueba el bitmenos significativo siguiente. En caso contrario, el bitms signi-ficativo es puesto a cero y se procede con el prximo. Este proceso contina tratndose to-dos los bitsde izquierda a derecha, hasta el ltimo.

    Rutina POR5

    Multiplica por 5 el contenido del registro L y retorna el resultado en el registro par HL.Tambin es llamada para ejecutar el producto por 10. En este caso el valor de 16 bitsretor-

    nado por el programa POR5, se desplaza un bithacia la izquierda.Rutina VISUAL

    Es llamada por el programa principal para presentar el valor de la tensin almacenado enBCDen la memoria del sistema. Una subrutina RET1MS genera el retardo de 1ms para fijarla frecuencia de multiplexado deseada. Para disminuir el parpadeo del dgito menos signifi-cativo, el periodo de muestreo del voltaje de entrada se ajusta aproximadamente a 1 segun-do. La rutina de retardo forma parte del mismo mdulo que VISUAL.

    A continuacin se presentan el contenido de cada mdulo, en el mismo or-den como se describieron:

    ;--------------------------------------------------------------------------------------------------------------$title(Voltmetro DC); Modulo de programa principal

    Di iti d E/S P bl 522

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    27/84

    Dispositivos de E/S Programables 522

    ; Definicin de segmentosdefseg puertos,start=0, class=iospace ; 8255 en direccin 0

    defseg stack, start=i_stack ; La pila reside en la RWMdefseg datos, class=data, start=i_rwm ; Datos a partir de 8000Hdefseg progr, class=code, start=6002H ; Primera posicin de RWM de

    ; usuario en el MPR-85 PLUS;--------------------------------------------------------------------------------------------------------------; Puertos del 8255

    seg puertospa_8255 ds 1 ; Salida de datos BCD y seleccin de indicadorespb_8255 ds 1 ; Salida a convertidor D/A

    pc_8255 ds 1 ; Lnea PC0 = P2.0, salida del comparadorp_ctrl ds 1 ; Puerto de control del 8255;--------------------------------------------------------------------------------------------------------------; Los 16 bytesltimos de RWM soportan el stack.

    seg stackds 10H

    t_stack:equ $-1 ; Base de la pila;--------------------------------------------------------------------------------------------------------------; Segmento de datos en RWM

    seg datos

    temp ds 3 ; Direccin de almacenamiento de valor medido;--------------------------------------------------------------------------------------------------------------; Segmento de cdigo cargado en RWM de usuario del MPR-85 PLUS

    seg progrlxi sp,t_stack ; Se carga el apuntador de pilamvi a,plbr_ctrl ; Palabra de control al Aout p_ctrl ; Se programa el 8255

    prpal: call adc ; Adquirir muestra de la entradamov l,a ; Valor digital de muestra al registro L

    call por5 ; Se inicia conversin de binario a BCDmov a,h ; Dgito ms significativo al Asta temp ; Dgito ms significativo a memoriacall por5 ; Remanente se multiplica por 10 (x5)dad h ; Resultado se multiplica x2mov a,h ; Dgito siguiente al Asta temp+1 ; Dgito siguiente a memoriacall por5 ; Nuevo residuo x10 (x5)dad h ; Resultado x2

    mov a,h ; Dgito menos significativo al Asta temp+2 ; Dgito menos significativo a memoriacall visual ; Presentar resultado de la medida

    jmp prpal ; Buscar muestra siguienteend

    ;--------------------------------------------------------------------------------------------------------------

    Dispositivos de E/S Programables 523

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    28/84

    Dispositivos de E/S Programables 523

    prob: ora c ; Sumar valor anterior de pruebaout pb_8255 ; Valor de prueba al convertidor D/A

    in pc_8255 ; Se lee salida del comparador. Tp-->0ani 1 ; Se pone mscarajz alto ; Saltar si valor de prueba es mayor que el

    ; desconocidomov a,b ; Recuperar valor de prueba actualora c ; Formar el total hasta ahoramov c,a ; Salvar total

    alto: mov a,b ; Recuperar ltimo valor de pruebarar ; Desplazar hacia prximo bitmenos significativo

    mov b,a ; Guardar nuevo patrnjnc prob ; Si acarreo es 1, es el ltimo bitmov a,c ; Valor de tensin al registro Aretend

    ;--------------------------------------------------------------------------------------------------------------

    ;--------------------------------------------------------------------------------------------------------------; Rutina POR5;--------------------------------------------------------------------------------------------------------------

    public por5defseg progrseg progr

    por5: mvi h,0 ;Bytealto de nultiplicando a ceromov d,h ; Multiplicando a registro par DEmov e,ldad h ; Multiplicando x2dad h ; Multiplicando x2dad d ; Sumar multiplicando.

    ; mulx2 + mul x2 + mul = mulx5retend

    ;--------------------------------------------------------------------------------------------------------------

    ;--------------------------------------------------------------------------------------------------------------; Rutina VISUAL;--------------------------------------------------------------------------------------------------------------

    public visual

    extern temp,pa_8255,num_digdefseg progrseg progr

    visual: lxi d,327rep: push d ; Salvar contador de 16 bits

    mvi b,num dig ; Nmero de dgitos al registro B

    Dispositivos de E/S Programables 524

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    29/84

    Dispositivos de E/S Programables 524

    mov c,a ; Patrn de seleccin de dgito siguiente a Cinx h ; Apuntar direccin del caracter siguiente

    dcr b ; Contador de dgitos -1jnz precib ; No es el ltimo dgito, continuarpop d ; ltimo dgito, recuperar contadordcx d ; Contador menos unomov a,d ; Probar si alcanz ceroora e

    jnz rep ; No es cero, seguir presentando muestraret ; Es 0, retornar en bsqueda de muestra siguiente

    ;--------------------------------------------------------------------------------------------------------------

    ; Rutina de retardo;--------------------------------------------------------------------------------------------------------------f_mux: lxi d,80Hfmux: dcx d

    mov a,dora e

    jnz fmuxretend

    ;--------------------------------------------------------------------------------------------------------------

    Dispositivos de E/S Programables 525

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    30/84

    Dispositivos de E/S Programables 525

    puerto serie del PC en la memoria delMPR-85 PLUS. El diseo fue probado y funcio-n en forma correcta, presentado en pantalla el valor del voltaje fijado en el potenci-metro. Contrastando la lectura con la de un voltmetro comercial, no se aprecia erroralguno. Este ejemplo fue un ejercicio didctico donde se mostr como pueden usarsecircuitos integrados CDA de bajo costo para que, con apoyo de cdigo, puedan reali-zarse funciones ms complejas como la conversin analgica digital. En la prctica losvoltmetros se construyen con CAD de doble pendiente, los cuales vienen integradosen chipsmultifuncin. Por ejemplo, adems de la conversin proveen salidas enBCDeincluso seales y temporizacin para la pantalla multiplexada.

    El modo 0 del PPI 8255A tambin puede usarse para el control de perifricosque requieran un protocolo de enlace sin uso de interrupciones. El ejemplo siguienteilustra el uso del PPI para la interconexin de un sistema 8085A a una impresora para-lela.

    Ejemplo 9.5

    Realizar la interconexin de una impresora CENTRONICS a un P8085Ausando un 8255A funcionando en el modo cero. Escribir una rutina para enviar alperifrico el carcter cuyo cdigoASCIIse encuentra en el registro B.

    CENTRONICSes un estndar usado por muchos aos para enviar datos desdeun C hacia una impresora paralela. Su uso es tan extendido que la mayora de lasimpresoras hasta hace dos aos usaban este protocolo. Las impresoras modernas ofre-cen adems un puerto USB. EL puerto paralelo puede realizarse con un 8255A bajo elcontrol del programa de transferencia. La figura 9.18 muestra un diagrama de tiemposde una transferencia CENTRONICSy en la figura 9.19 se indican las funciones de laslneas del bus y su ubicacin en el conector CANON DB-25.

    Dispositivos de E/S Programables 526

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    31/84

    p g

    Terminal Seal E/S1 Funcin

    1 STB : DATASTROBE SSalida normalmente en nivel alto. Es

    puesta a cero por el C durante 1 s paranotificar que se envi un dato.

    2-9 DATA 0 DATA 7 SSalidas de los ocho bits de datos. Debenser estables al menos 0.5 s antes y des-

    pus del pulso STB .

    10 ACK: EACKNOWLEDG ESeal activa en bajo generada por la im-

    presora cuando est lista para recibir unnuevo carcter. Es generada cuando la

    lnea BUSY va a nivel bajo.11 BUSY E

    Entrada OCUPADAque indica la disponi-bilidad de la impresora. Est en nivel altocuando sta no puede recibir datos.

    12 PO: PAPER OUT EEntrada que cuando est en nivel altonotifica que no hay papel en la bandeja dela impresora.

    13 SLCT: SELECT EIndica el estado de la impresora. Cuandoest en lnea, la seal conmuta a unolgico.

    ON LINE:

    Al energizar la impresora. Cuando se aplica un RESET . Al presionar el interruptor ON LINE.

    OFF LINE:

    Impresora sin papel.

    Cubierta exterior abierta

    La impresora es colocada en OFF LINE.

    14 AFD : TAUTOFEED X SSalida que indica con un nivel bajo si acada comando de retorno de carro (CR) leseguir uno de alimentacin de lnea (LF).

    15ERROR

    EActiva en bajo por la ocurrencia de unerror. Condiciones de error son:

    Ausencia de papel en la bandeja.

    Impresora en OFF LINE.

    Estado de sobrecarga.

    Cubierta exterior abierta16 S En cero inicializa la impresora Detiene el

    Dispositivos de E/S Programables 527

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    32/84

    p g

    Nota:La tarjeta de impresora debe tener resistores conectados a +5V en todas las entradas.

    Fig. 9.20 Puerto de impresora

    Dispositivos de E/S Programables 528

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    33/84

    El protocolo CENTRONICS trasmite en paralelo los datos a imprimir y ade-ms presenta varias seales para que el P controle la transferencia, y un grupo de

    lneas de salida desde la impresora indican en cualquier momento el estado del perif-rico.

    Como ilustra el diagrama de tiempos de la figura 9.18, el cdigoASCIIdel ca-rcter a imprimir es presentado por el P en las lneas de datos DATA0-7y entonces seexamina la entrada BUSY para verificar, si est en cero lgico, que la impresora est

    disponible. En este caso, el procesador coloca en nivel bajo la salida STB durante al

    menos 1 s, para sincronizar la transferencia del dato. La impresora lee el dato duranteel flanco positivo de STB . Si la lnea BUSY est en alto, porque la impresora estocupada, el P permanecer en espera hasta cuando BUSY retorne a cero. Cuando laimpresora ha aceptado un carcter, activa a cero durante 5 s la seal de reconocimien-

    to ACK.

    Debido a que ACKes disparada en el flanco posterior de BUSY, puede ser

    tratada como una notificacin de lista para recibir un nuevo dato, al igual que BUSY.Esto significa que durante la transferencia de datos a la impresora, ACKpuede serignorada y el programa slo tiene que examinar si la impresora est libre, colocar el

    dato y generar la seal STB .

    El puerto de conexin a la impresora se muestra en la figura 9.20 Los bitsdelcarcter a imprimir se entregan por el PA del 8255A, el cual debe ser configurado para

    operacin en el modo 0. La salida BUSY de la impresora se aplica a la lnea PC0 delpuerto de entrada C, y por el terminal PC4 se genera la seal de sincronizacin STB .Se utilizan buffersde colector abierto en todas las salidas del 8255A. Los resistores decolector se encuentran en el circuito de entrada a la impresora.

    ;----------------------------------------------------------------------------------------------------------------; Rutina SAL_IMPR de salida a impresora

    ; Imprime bloque a partir de direccin 2000h; Carcter de escape; NULL0;----------------------------------------------------------------------------------------------------------------inic_blq equ 2000h ; Direccin de primer caracter a imprimir

    8255 80h P t A

    Dispositivos de E/S Programables 529

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    34/84

    mvi a,plbr_ctrlout pctrl_8255 ; Se programa 8255A

    mvi a,stb_unoout pctrl_8255 ; STB se pone a unolxi h, inic_blq ; Apuntar primer caracter a imprimir

    prox: mov b,m ; Caracter de memoria a registro Bmov a,b ; Examinar caractercpi escap ; Es el bytede escape?

    jz cont ; Si, continuar programa principalcall sal_impr ; No, Imprimir byteen registro Binr l ; Apuntar siguiente caracter

    jmp prox ; Continuar impresincont: ;.

    ;.;.

    sal_impr: in pc_8255 ; Leer estado de BUSYani 1 ; Poner mscara

    jnz sal_impr ; Si BUSY es alto, esperarmov a,b ; BUSY es ceroout pa_8255 ; Enviar caracter a impresoramvi a,stb_cero

    out pctrl_8255 ; Poner seal STB en ceromvi a,stb_unoout pctrl_8255 ; Desactivar lnea STBret

    ;----------------------------------------------------------------------------------------------------------------

    El cdigo anterior imprime un bloque de memoria de una pgina mximo ycontina ejecutando el cdigo de usuario. El carcterNULLseala el final del bloque a

    imprimir. La rutina de salida a impresora examina el estado de la lnea BUSY. Si esten nivel alto, se mantiene la prueba hasta cuando BUSY retorne a cero. En este mo-

    mento, conmuta a cero lgico la lnea STB , la cual se mantiene en bajo por un tiemposuperior a 1 s, instante cuando se retorna al programa principal.

    Con el ejercicio 9.5 finalizan los ejemplos de operacin del 8255A en modocero. Lo presentado es una muestra pequea que en modo alguno agota las posibilida-des del uso prctico del modo cero en combinacin con el programa para control de

    perifricos. Este modo puede usarse para el control de motores por paso o servomoto-res o para el control de de la potencia suministrada a cargas de corriente alterna.

    Operacin en el modo 1

    Dispositivos de E/S Programables 530

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    35/84

    los puertos A y B es controlado por un protocolo de enlace, realizado usando los termi-nales del puerto C.

    Como se expuso en pginas anteriores ambos grupos A y B pueden progra-marse para funcionamiento en este modo, como se indica a continuacin:

    Grupos A y B.

    Cada grupo con un puerto de 8 bitsde datos y puerto de 4 bitsde control/datos.

    Los puertos de 8 bits(PA y PB) pueden ser entradas o salidas, ambas con retencin.

    El puerto de 4 bits(PCH y PCL) se usa para control/estado del puerto de datos de 8 bits.

    Modo 1: Entrada

    La figura 9.21muestra los formatos de la palabra de entrada para la configura-cin de los grupos A y B para operacin en el modo 1. Observe que tanto el puerto A

    como el B se programan como entradas, si ambos grupos operan en modo 1. Tres bitsde PCHo de PCLse usan para controlar la transferencia de datos desde el perifricohacia el sistema a travs de los puertos PA y PB, respectivamente. Las dos lneas res-tantes, PC6-7, del puerto C quedan disponibles para ser usadas como lneas de E/S.

    Dispositivos de E/S Programables 531

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    36/84

    Aunque en este caso se considera que ambos grupos se configuran en el modo1 de entrada, en la prctica pueden programarse una combinacin de modo 1, en cuyo

    caso uno de los grupos se programa como entrada y el otro como salida. La funcinde las seales de control y el diagrama de tiempo de una transferencia de entrada enel modo 1 se muestra en la figura 9.22.

    Strobe Inputuando se activa esta entrada el dato entregado por el perifrico es cargado en el

    registro latchdel puerto de entrada.

    Input Buffer Full

    Salida que notifica la presencia de un dato en el registro de entrada. Es una seal

    de reconocimiento activada como respuesta a la entrada STB y es llevada a cerocuando el P lee el puerto.

    INTRInterrupt Request

    Salida puesta a 1 cuando STB retorna a nivel alto, IBF es uno y el bitINTE esten 1. Regresa a 0 cuando el puerto es ledo por el P. Este modo de operacin

    permite que con solo cargar un dato en el puerto, un perifrico interrumpa al

    CPU.

    Las interrupciones deben estar habilitadas por:INTE A: bitset/reset de PC4INTE B: bitset/reset de PC2

    PC7y PC6 Lneas disponibles para E/S.

    Fig. 9.22. Entrada en modo 1.

    El modo 1 de operacin permite que el dato desde el perifrico se almacene enel puerto A o en el puerto B hasta cuando el P pueda leerlo. Al inicio de la transfe-rencia, el perifrico coloca el dato en los terminales del puerto de entrada y pone en

    i l b j l l STB l b t l i t d t d A ti i

    IBF

    STB

    Dispositivos de E/S Programables 532

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    37/84

    subida de RD desactiva la seal IBF, mientras que el flanco de cada de RD remue-ve la solicitud de interrupcin. Observe que en el modo de interrupcin, la solicitudes realizada con slo cargar el dato en el registro de entrada.

    Ejemplo 9.6

    Escriba una rutina para leer un dato desde un dispositivo de entrada. Cada vezque el perifrico coloca un byteen las lneas del puerto de entrada, genera un pulsonegativo.

    Esta situacin es apropiada para el uso del modo 1. Como ilustra el diagramasimplificado de la figura 9.23, las salidas de datos se aplican al PB configurado comoentrada y la seal de sincronizacin LISTODATO se conecta al terminal PC2o BSTB .

    Fig. 9.23 Entrada en modo 1.

    Si el perifrico es un teclado, este entregar al puerto B el cdigo ASCIIy unaseal de habilitacin a PC2 cada vez que una tecla es presionada. Los circuitos elec-trnicos asociados al teclado, detectan la prsin de la tecla, la identifican, le asignanel cdigo correspondiente, suprimen el efecto de los rebotes de contactos y protegencontra la pulsacin simultnea de varios pulsadores. El siguiente programa carga eldato D0-D7 en el registro acumulador, cada vez que una tecla es activada.

    ;--------------------------------------------- ------------------------------------------------------------------

    ; Rutina de lectura de teclado;--------------------------------------------- ------------------------------------------------------------------pb_8255 equ 81h ; Puerto Bpc_8255 equ 82h ; Puerto Cpctrl_8255 equ 83h ; Registro de controlplbr_ctrl equ 10000110b ; Palabra de control. Modo 1, PB:entrada;

    Dispositivos de E/S Programables 533

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    38/84

    Modo 1: Salida

    El puerto A o el B se configuran como salidas y tres seales del puerto PCHoPCL, respectivamente, controlan la salida de datos hacia el perifrico. Al igual que elel modo 1 de entrada, pueden usarse interrupciones durante la transferencia.

    En la figura 9.24 se muestran las seales de control del puerto C para cadagrupo y el formato de la palabra de control para los grupos A y B.

    Fig. 9.24. Formatos de palabra de control para operacin en el modo 1 de salida.

    Las funciones de las seales de control y el diagrama de tiempo de la transfe-rencia de datos en el modo 1 de salida, se muestran en la figura 9.25.

    Observe que cada vez que el Procesador escribe un dato en el puerto A o en

    el puerto B, la salida OBF respectiva, conmuta a nivel bajo para indicar existe und di ibl l i d lid E d l fl d bid d

    Dispositivos de E/S Programables 534

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    39/84

    cuando la salida de reconocimiento ACK, la lnea de indicacin de latchlleno OBF y

    el bitINTE, son todas uno. Es llevada a cero, por el flanco de cada de WR.

    OBF Output Buffer Full

    alida en nivel bajo cuando el P escribe un dato en el puerto A o B. Es activada

    por el flanco posterior de WRy desactivada por el flanco de bajada de la seal de

    reconocimiento ACKgenerada por el perifrico.

    ACKAcknowledge Input

    El dispositivo externo pone a nivel bajo est entrada para indicar al P que el datoen el puerto A o B ha sido recibido.

    INTRInterrupt Request

    Salida activa cuando ACKconmuta a nivel alto, OBF es uno y el bitINTE esten 1. Regresa a 0 cuando el el P escribe un dato en el puerto. Este modo de opera-

    cin permite interrumpir al CPUcuando un perifrico acepta un dato transferidopor el P. Las interrupciones deben estar habilitadas por:

    INTE A: bitset/reset de PC4INTE B: bitset/reset de PC2

    PC4y PC5 Lneas disponibles para E/S.

    Fig. 9.25. Formatos de palabra de control y diagrama de tiempos de salida en modo 1

    Ejemplo 9.7

    Usar el modo 1 de salida, para enviar un bloque de datos a una impresora pa-ralela. Escribir la rutina de salida de datos a la impresora.

    Dispositivos de E/S Programables 535

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    40/84

    usada como STB ,porque se requiere un pulso para indicar a la impresora que hay un

    dato listo. Por tal razn se usa PC5.Una vez que la impresora acepta el dato genera la seal de reconocimiento

    ACKpara indicar que est lista para recibir otro dato. Esta salida se conecta a la en-

    trada AACK o PC6 del 8255A y cuando se activa retorna a nivel alto a OBF .

    Fig. 9.26. Salida a impresora en modo 1

    El programa examinar OBF para detectar si la impresora est disponible.Esto ocurre cuando la impresora acepta el dato y borra el registro de salida. Con laimpresora libre el P carga el dato en el registro de salida PA y genera por PC5 el

    comando STB . El cdigo de la rutina se muestra a continuacin.

    ;----------------------------------------------------------------------------------------------------------------; Rutina SAL_IMPR de salida a impresora

    ; Imprime bloque a partir de direccin 2000h; Carcter de escape; NULL0;----------------------------------------------------------------------------------------------------------------

    inic_blq equ 2000h ; Direccin de primer caracter a imprimirpa_8255 equ 80h ; Puerto Apc_8255 equ 82h ; Puerto Cpctrl_8255 equ 83h ; Registro de controlplbr_ctrl equ 0A0h ; Palabra de control. modo 1, PA:salida

    ; PCH:salida

    Dispositivos de E/S Programables 536

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    41/84

    prox: mov b,m ; Caracter de memoria a registro Bmov a,b ; Examinar caracter

    cpi escap ; Es el bytede escape?jz cont ; Si, continuar programa principalcall sal_impr ; No, Imprimir byteen registro Binr l ; Apuntar siguiente caracter

    jmp prox ; Continuar impresincont: ;.

    ;.;.

    sal_impr: in pc_8255 ; Leer estado de OBFani 80h ; Poner mscara

    jnz sal_impr ; Si OBF es bajo, esperarmov a,b ; OBF es ceroout pa_8255 ; Enviar caracter a impresoramvi a,stb_ceroout pctrl_8255 ; Poner seal STB en ceromvi a,stb_unoout pctrl_8255 ; Desactivar lnea STBret

    ;----------------------------------------------------------------------------------------------------------------

    Operacin en el modo 2

    Es el modo de transferencia bidireccional sobre los terminales del puerto A.Ejemplos del uso de este modo de operacin es la interconexin con un controladorde discos flexibles, transferencias paralelas con el estndar para instrumentacin de

    propsito general GPIB (IEEE-448) y para la comunicacin entre computadores. Enla figura 9.27 se muestran las seales asociadas al modo 2 y la palabra de control paraoperacin en ambas direcciones.

    Dispositivos de E/S Programables 537

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    42/84

    OBFOutput Buffer Full

    Salida en nivel bajo cuando el P escribe un dato en el puerto A

    indicando que el latch de salida est lleno.

    ACKAcknowledge Input

    Entrada que en cero lgico habilita los buffer de tres estados de

    salida del puerto A. Si ACK est en alto, las salidas de PA perma-necen en alta impedancia.

    Strobe InputCuando se activa esta entrada el dato entregado por el perifrico escargado en el registro latchdel puerto A-

    IBFInput Buffer Full

    Un alto en esta salida indica que un dato ha sido cargado en elregistro de entrada.

    INTRInterrupt Request

    Salida activa que en nivel alto puede usarse para interrumpir al Pdurante transferencias tanto de entrada como de salida.

    INTE 1:Bitset/reset PC6INTE 2:Bitset/reset PC4

    PC2, PC1y PC0 Lneas disponibles para E/S controladas por bit set/reset.

    STB

    Dispositivos de E/S Programables 538

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    43/84

    Ejemplo 9.8

    1.

    Escribir un programa que transmita por las lneas bidireccionales del puertoA el dato cargado en el registro acumulador.

    2. Una rutina debe recibir por las lneas bidireccionales del puerto A el datoenviado por un dispositivo externo.

    Sin mayores comentarios se presenta el cdigo de transferencia en el modo 2

    de operacin.;-----------------------------------------------------------------------------------------------------------; Ejemplo en modo 2;-----------------------------------------------------------------------------------------------------------

    pa_8255 equ 80h ; Puerto Apc_8255 equ 82h ; Puerto Cpctrl_8255 equ 83h ; Registro de control;-----------------------------------------------------------------------------------------------------------

    ; Programa principalmvi a,plbr_ctrlout pctrl_8255 ; Se programa 8255A; .; .; .

    ;-----------------------------------------------------------------------------------------------------------; Rutina TRASM. Transmite el dato en el registro B por las lneas del puerto A;-----------------------------------------------------------------------------------------------------------

    trasm: in pc_8255 ; Leer puert Cani 80h ; Examinar OBF

    jz trasm ; Si OBF es 0, registro de salida llenomov a,b ; Si OBF es 1. Prximo dato al acumuladorout pa_8255 ; Transmitir byteret

    ;-----------------------------------------------------------------------------------------------------------

    ; Rutina RECIB. Recibe el dato por las lneas del puerto A y lo retorna en el acumulador

    ;-----------------------------------------------------------------------------------------------------------recib: in pc_8255 ; Leer puerto Cani 20h ; Examinar IBF

    jnz recib ; Si IBF es 0, registro de entrada vacoin pa_8255 ; Si IBF es 1, leer datoret

    Dispositivos de E/S Programables 539

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    44/84

    Fig. 9.29. Formatos de las palabras de estado para los modos 1 y 2.

    9.2 DISPOSITIVO 8155: SRAM/PUERTOS DE E/S/TIMER

    Es conocido por el lector, que el circuito integrado 8155/56 es un dispositivode funciones mltiples, diseado para compatibilidadpina pincon el P 8085A. Es

    fabricado por varias empresas, en incluso la compaa INTERSILofrece una versin(HS-81C55RH) con alta resistente a la radiacin csmica, destinada al diseo de ins-trumentos y controles que viajan al espacio.

    Dispositivos de E/S Programables 540

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    45/84

    Los recursos ofrecidos por el 8155/56 son:

    Fig.9.31. Secciones del 8155/56

    DEFINICIN FUNCIONAL DE LOS TERMINALES DEL 8155

    VCC

    GND

    + 5 V

    Tierra

    CS Un nivel bajo en este terminal permite la comunicacin entre el P y el 8155. Para el 8156 esta entradaes activa en alto.

    WR Esta entrada en cero con CS activado causa que el byteen el busmultiplexado sea escrito en la RAM

    o en los puertos de E/S y registro comando/estado, dependiendo de la entrada M/IO .

    RD Esta entrada en cero con CS activado habilita los buffers de salida AD0-AD7. Si el terminal

    M/IO est en nivel bajo el contenido de la posicin de RWM seleccionada ser cargado en el busdedatos/direcciones. En caso contrario el contenido de un puerto de E/S o del registro de estado sercolocado en el busmultiplexado.

    MIO/Selecciona la RWM si es cero y los puertos de E/S y el registro comando/estado si est en alto.

    AD0-AD7 Es el busde datos/direcciones bidireccional y tres estados por medio del cual se transfieren comandosy/o datos entre el 8155 y el P. Los ocho bitsbajos de las direcciones se cargan en el latch interno

    durante el flanco de bajada de la seal ALE.

    RESETUn nivel alto en esta entrada durante al menos dos pulsos de reloj inicia el registro de control con todoslos puertos en el modo de entrada.

    ALE En el flaco de cada de esta entrada se carga dentro del chipel estado de las lneas de direccin AD0-

    AD/, CS e M/IO .PA0-PA7 Puerto A: Ocho lneas de E/S de propsito general. La direccin es programada escribiendo en el

    2Kbitsde memoria RWM estti-ca arregladas como 256x8 bytes.

    2 puertos programables de 8 bitspara E/S.

    1 puerto programable de 6 bitspara E/S.

    1 temporizador/contador binarioprogramable de 14 bits.

    Registro latch interno controlado

    por ALE para decodificar el by-tebajo de direcciones.

    Registro de comando/estado

    Dispositivos de E/S Programables 541

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    46/84

    El acceso a la zona de memoriaRWM, con M/IO en nivel bajo, o a los puer-

    tos de E/S, cuando M/IO conmuta a nivel alto, se realiza a travs del busmultiplexa-do AD0-AD7, bajo el control de las seales: ALE, la cual indica si el bus contiene

    datos o direcciones, y WRy RD que sealan cuando el acceso corresponde a unaoperacin de escritura o de lectura.

    Como ilustra la figura 9.32, el dispositivo 8155 contiene una memoria RAMestticade 256 bytesy siete registros internos. Estos son: dos puertos de E/S: PA yPB de 8 bits, un puerto PC de 6 bits, los registros de comando/estado (C/S) para la

    programacin y examen del estado del dispositivo, y un contador/temporizador de 14bits. El circuito integrado no requiere lgica externa para conectarse al P 8085, el

    estado lgico de la seal M/IO distingue cuando la direccin presente en las lneasAD0-AD7corresponde una posicin de la memoria SRAMo hace referencia a uno delos registros internos del circuito.

    La entrada ALE se aplica a un registro latch interno para demultiplexar el bytede orden bajo A0-A7del busde direcciones, una direccin vlida se presenta en las

    lneas de direcciones en el flanco anterior de ALE, mientras que esta informacin, ylos estados de M/IO y CS se aplican a la lgica interna del chipdurante el flancoposterior de ALE.

    9.2.1 Seccin de entrada y salida del 8155

    Las direcciones asignadas a los registros internos del 8155 se muestran en latabla 9.3 y en el captulo 5 se expone todo lo relacionado con el diseo del decodifi-cador de direcciones para el 8155/56.

    Tabla. 9.3 Direcciones de los registros internos del 8155Direccin del Puerto de E/S

    AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 x x x x x 0 0 0 Registro de Comando/Estado

    x x x x x 0 0 1 Puerto A de E/Sx x x x x 0 1 0 Puerto B de E/S

    x x x x x 0 1 1 Puerto C de E/S x x x x x 1 0 0 8 bits de orden bajo del temporizador/contador

    x x x x x 1 0 1 6 bitsde orden alto del temporizdor/contadory 2 bitsdel modo temporizador.

    Registro seleccionado

    Dispositivos de E/S Programables 542

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    47/84

    Registro de comando

    Los registros de comando y de estado tienen la misma direccin, pero son uni-dades independientes. La informacin transferida al registro de comando durante unaoperacin de escritura en puerto, permite programar las funciones de los puertos deE/S, de acuerdo con el formato de palabra mostrado en la figura 9.32 Los bits0 a 3definen el modo de los puertos, los bits4 y 5 habilitan o no las interrupciones desdeel puerto C cuando ste es usado como puerto de control y los dos bitsms a la dere-cha son destinados para el control del temporizador.

    Dispositivos de E/S Programables 543

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    48/84

    blece el estado del bit1 del registro de C/S. Las seis lineas del puerto C pueden con-figurarse como entradas o salidas convencionales (ALT1Y ALT2) o como seales de

    control de los puertos PA y PB (ALT3y ALT4) de acuerdo con el estado de los bits2y 3 del registro de comando.

    Los modos de funcionamiento del puerto C oALTn (alternatives) se presentana continuacin.

    Tabla. 9.4 Modos del puerto CTERMINAL ALT1 ALT2 ALT3 ALT4

    PC0 ENTRADA SALIDA INTRA INTRAPC1 ENTRADA SALIDA BFA BFAPC2 ENTRADA SALIDA

    ASTB ASTB

    PC3 ENTRADA SALIDA SALIDA INTRBPC4 ENTRADA SALIDA SALIDA BFBPC5 ENTRADA SALIDA SALIDA

    BSTB

    INTR: Salida de SOLICITUD DE INTERRUPCINdel puerto A o B. Un alto en esta lneaindica que el perifrico ha enviado un dato pero este an no ha sido ledo por el P oque el dato escrito en el puerto por la CPUha sido aceptado por el perifrico.

    BF: SalidaBUFFERLLENO que en nivel alto notifica que un dato ha sido cargado enpor el P/perifrico en el latch del puerto pero aun no ha sido transferido al perifri-co/Procesador.

    STB : Entrada STROBE que se activa en nivel bajo para indicar la disponibilidad de undato de entrada o la aceptacin de un dato de salida.

    Los modos que usan el puerto C para controlar la transferencia a los puertos Ay B sonALT3(solo puerto A) y ALT4(puertos A y B). Cuando se usan estos modostres bitsdel puerto C se asignan a control del puerto A y los tres restantes al puerto B.En el modoALT3donde solo se controla el puerto A, los bitsPC3-5funcionan comosalidas. En las figuras 9.36 se muestran los diagramas de tiempos para transferenciasde E/S bajo control del puerto C.

    Como se observa en los diagramas de tiempos de la figura 9.33, el funciona-miento en los modosALT3yALT4es similar al modo 1 del 8255A. La nica diferen-cia es en la nomenclatura de las seales. Por ejemplo, la seal de bufferlleno se de-nomina BF tanto para entrada como para salida (OBF e IBF en el 8255A) y la seal

    Dispositivos de E/S Programables 544

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    49/84

    Fig. 9.33Formas de ondas para transferencias de entrada y salida bajo el control del puerto C.

    Registro de estado

    Una operacin de lectura al registro de estado de siete bits, entrega informa-cin de estados de los puertos de E/S y el temporizador. El programa puede examinaresta informacin en cualquier momento. El P no puede escribirse sobre este registro,

    Dispositivos de E/S Programables 545

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    50/84

    dor contador llega a la cuenta final despus de haber sido iniciado. Esto ltimo selogra detectando el estado del bit6 del registro de estado.

    Fig. 9.34.Formato de la palabra de estado del 8155.

    Ejemplo 9.9

    Se debe controlar la presentacin de informacin alfanumrica en una pantallade cristal lquido.

    Dispositivos de E/S Programables 546

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    51/84

    1. Realizar la interconexin a un sistema 8085A, de un mdulo de cristal l-quido de 16x2 caracteres (controlador HD44780U), basndose en el dia-

    grama simplificado de la figura 9.35.

    2. Escribir el programa de control de presentacin, e imprima la temperaturaen dos puntos de un proceso. Los valores de temperatura son de dos dgitosy est almacenados a partir de la direccin de memoria MEM. El dgitoms significativo en la posicin ms baja. El formato de presentacin es elde la figura 9.36.

    Fig. 9.36.Valores de temperatura y estado del proceso.

    Solucin:

    La pantalla LCD de la figura 9.36 es de 16x2 caracteres, lo cual significa quepuede presentar 2 lneas de 16 caracteres cada una. El carcter se construye en unamatriz de 5x7 puntos Existe un gran nmero de mdulos LCD producidos por dife-rentes fabricantes y existe un estndar que facilita la interconexin entre el dispositi-vo y un P o Ctrl, independientemente del modelo. Tal estndar se conoce comoHD44780U.

    Este es un sistema microcontrolador y manejador de pantallas LCD, para pre-sentacin de caracteres alfanumricos y smbolos. Esta unidad provee todas las fun-ciones como memoria de presentacin, generador de caracteres y los manejadores decristal lquido necesarios para el control de una matriz de puntos, por lo cual se sim-plifica la interconexin del LCD con el sistema procesador.

    Como ilustra la figura 9.35, para comunicarse con el mdulo LCD se requie-

    ren tres lneas de control: E, RS, W/R y ocho lneas para datos y comandos. El cdi-go de la aplicacin puede programar al dispositivo para operacin con datos de 4 bits,en cuyo caso slo sern necesarias siete lneas de interconexin. Las funciones y dis-tribucin de los terminales del dispositivo LM032L se muestran en la figura 9.37.

    Dispositivos de E/S Programables 547

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    52/84

    VDD: Alimentacin de 2.7 V a 5.5 V.

    VSS: Tierra.VEE: Regulacin de contraste de la pantalla (0-5 V)RS: Selects registers.

    Cuando es 0 se escriben comandos en el registro de instruccin (IR) o se leen desde IR el esta-do de la bandera de ocupado y del contador de direcciones.Cuando es 1 se escribe o lee desde el registro de datos (DR)

    WR/ : Read/WriteSeleccin de operaciones de lectura y escritura.0: Escritura.1: Lectura.

    E: Enable.Inicia las operaciones de lectura y escritura.

    D4-D7: Nibblemas significativo del busde datos bidireccional. Comunica el P con el HD44780U. ElbitD7puede usarse como bandera de ocupado.

    D0-D3: Nibblebajo del busde datos bidireccional. Comunica el P con el HD44780U. Estas 4 lneasno se usan durante el modo de operacin con transferencias de 4 bits.

    Fig. 9.37.El dispositivo LM032L usa el estndar HD44780U.

    generador de caracteres (CGRAM: Character Generador RAM). La CGRAMcontiene caracteres definidos por el usuario.

    Cualquier informacin cargada en el DR por el P, es almacenada automti-camente en la DDRAM o en la CGRAM. Cuando el P lee datos desde laDDRAMo CGRAM, estos son transferidos al DR.

    Registro de Instrucciones (IR)

    Almacena los cdigos de las instrucciones, como por ejemplo: limpiar panta-lla, ocultar cursor o desplazar cursor; y direcciones para la DDRAM o la

    Dispositivos de E/S Programables 548

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    53/84

    Tabla. 9.5.Seleccin de registros.

    Cuando el HD44780U est realizando una operacin interna, la bandera deocupado estar en alto y el controlador no aceptar transferencia alguna hasta cuandoBF retorne a nivel bajo. Como se expone en la tabla 9.5, el estado de BF y del conta-dor de direcciones puede ser examinado por el programa.

    El contador de direcciones (AC:Address Counter) es un apuntador de direc-ciones para la DDRAMy la CGRAM. Cuando el P escribe la direccin de una ins-

    truccin en el IR, sta es cargada en elAC. La propia instruccin especifica si el des-tino es la DDRAMo la CGRAM. El ACes incrementado/disminuido en 1, por cadaoperacin de escritura/lectura.

    El diagrama de tiempos de una operacin de escritura al mdulo LCD se pre-senta en la figura 9.39. Una escritura en el mdulo, puede tener dos propsitos: uno,la presentacin de un caracterASCIIen la pantalla (Operacin de escritura al DR conRS =1); el otro, la ejecucin de una instruccin (Borrar pantalla, por ejemplo. Opera-

    cin de escritura en el IR con RS =0). El procedimiento implica: poner RS en el esta-do correspondiente, llevar la lnea W/R a cero, poner la entrada E en alto, cargar eldato en el busD0-D7y retornar E a cero lgico. En la prctica est secuencia no es

    crtica. Por ejemplo, se puede activar E, fijar el estado de RS y W/R , colocar el da-to, y al final retornar a cero la lnea E. Es en realidad el flanco de cada de la seal E,el evento que ejecuta las operaciones internas.

    La memoria de datos a presentar o DDRAMcontiene los cdigos de 8 bitsdelos caracteres en pantalla. Su mxima capacidad son 80 caracteres. Todo texto escritoen el HD44780U se almacena en esta memoria y el Ctrl a continuacin leer laDDRAMy presentar el mensaje en el LCD. Para el dispositivo de 16x2 caracteres, laDDRAMpuede representarse con el siguiente mapa de memoria.

    RS WR/ OPERACIN0 0 Escritura de instruccin o direccin en el IR

    0 1Lectura de la bandera de ocupado BF (D7) y del conta-dor de direcciones (D0-D6).

    1 0Escritura en el DR (Dato desde el DR a la DDRAM oCGRAM)

    1 1Lectura del DR (Dato desde DDRAM o CGRAMhaciael DR)

    Dispositivos de E/S Programables 549

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    54/84

    Fig. 9.39.Ciclo de escritura en el HD44780U.

    El rea ms oscura en la figura 9.38 corresponde a los caracteres visibles o16x2 caracteres, y el nmero indica la direccin de la memoria que corresponde acada posicin en la pantalla. El primer caracter pertenece a la posicin 0, el segundo ala 1 y as sucesivamente.

    Si escribimos un carcter el la direccin 0FH, ste aparecer en la ultima posi-

    cin de la lnea 1, el siguiente carcter enviado no aparecer al comienzo de la segun-da lnea (direccin 40H) debido a que fue escrito en la direccin 10H. En este casoantes de enviar el caracter debe ejecutarse un comando que desplace el cursor hacia laprimera posicin de la lnea 2. El rea que no se usa para presentar caracteres puedeusarse comoRAMde propsito general. Los caracteres imprimibles se muestran en la

    Dispositivos de E/S Programables 550

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    55/84

    Dispositivos de E/S Programables 551

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    56/84

    Tabla. 9.6.Conjunto de instrucciones del mdulo LCD.

    I/D: 1 = Avance del cursor.0 = Retroceso del cursor.

    S: 1 = Desplaza el contenido de la pantalla con cada nueva escritura de dato.0 = Presentacin normal.

    D: 1 = Pantalla activada.

    0 = apagada.

    C: 1 = Cursor est activo.0 = Cursor oculto.

    B: 1 = Cursor parpadea si est activo.0 = Cursor normal.

    S/C: 1 = Desplaza el contenido de la pantalla.0 = Mueve el cursor.

    R/L: 1 = Desplazamiento hacia la derecha.0 = izquierda.

    BF: 1 = Mdulo LCD est ocupado.0 = Dispositivo libre para aceptar comandos o datos.

    DL: 1 =Busde 8 bits.0 =Busde 4 bits.

    N 1 P t 2 l d t

    Dispositivos de E/S Programables 552

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    57/84

    Configurando el mdulo LCD

    Antes de usar la pantalla de cristal lquido, el HD44780U debe ser configura-do por medio de una secuencia de instrucciones enviada al controlador del mdulo.En principio, se usa la instruccinFunction Setpara especificar que se usa un anchode 8 bitspara el busde datos, 2 lneas de caracteres y una matriz de 5x7 puntos. Estose corresponde con el byte38H=000011102, como se deduce de la tabla 9.6.

    La instruccin siguiente de la secuencia de inicio corresponde al comando0EH=000011102de la instruccinDisplay Control, la cual activa la pantalla y mues-

    tra el cursor. Finalmente, un comando 06H=000001102de la instruccin Entry ModeSet, establece, que cada vez que se presente un nuevo carcter, la posicin del cursorse mueva hacia la derecha.

    Para borrar la pantalla en cualquier momento, se ejecuta Clear Display,cuyocdigo es 01H=000000012. Esta orden limpia la pantalla y coloca al cursor en la po-sicin del primer carcter de la primera lnea. Si se escribe en la lnea 1 y se deseaque el carcter que sigue se presente en la posicin 5 de la segunda lnea se usa la

    funcin Set DDRAM Addr o C5H=110001012(DireccinDDRAM= 45H).

    El manual de usuario del HD44780U especifica que un circuito interno deRESETinicia dispositivo, al aplicrsele energa. En este caso, se ejecuta una sucesinde instrucciones que lleva al mdulo LCD, por defecto, a un estado inicial. Tambinse indica, que si no se satisfacen las condiciones de la fuente de alimentacin para laoperacin del circuito deRESETinterno, el programa de la aplicacin deber ejecutarlas instrucciones de configuracin del LCD. La secuencia de inicio por instrucciones,

    sugerida por el fabricante, para el modo de 8 bits,es la siguiente:Esperar 15 ms despus que VCC alcance 4.7 V.Ejecutar la instruccinFunction Set (30H: bus 8 bits).Esperar al menos 4.1 ms.Ejecutar la instruccinFunction Set (30H: bus 8 bits).Esperar al menos 100 s.Ejecutar la instruccinFunction Set(* )(30H: bus 8 bits).Esperar al menos 40 s.

    Ejecutar la instruccinFunction Set(38H: bus 8 bits, 2 lneas matriz 5x7).Esperar al menos 40 s.Ejecutar la instruccinDisplay Control (08H: pantalla y cursor desactivados).Esperar al menos 40 s.Ejecutar la instruccin Clear Display (01H: borrar pantalla).Esperar al menos 1.64 ms.

    Dispositivos de E/S Programables 553

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    58/84

    El programa desarrollado para establecer la comunicacin entre el P y elHD44780U y presentar el texto de la figura 9.36 consta nueve mdulos, los cuales se

    describen a continuacin:LCD

    Programa principal.

    INIC_LCD

    Rutina de inicio. Configura el mdulo LCD y lo deja listo para ser usado.

    SAL_CMDEscribe en el registro de intrucciones IR, el comando cuyo cdigo est cargado en el registroacumulador. Antes de ejecutar una instruccin determinada se detecta si el dispositivo estlibre.

    SAL_DATO

    Escribe en el registro de datos DR el cdigo ASCII del carcter a presentar, el cual debecargarse en el acumulador. Antes de ejecutar la transferencia se verifica que el LCD est

    disponible.

    LCD_OCUP

    Verifica el estado de la bandera de ocupado. Si BF est en uno, espera hasta cuando retornea cero para continuar la ejecucin del programa.

    PULSO_E

    Genera un pulso de nivel alto en la lnea de control ENABLE (E).

    TEXTO1

    Enva al LCD la cadena de caracteres cuyo primer elemento est almacenado en la posicincon direccin de memoria apuntada por el registro par HL. El carcter de escape es NULL(00H).

    TEXTO2

    Enva al LCD la cadena de caracteres BCD de longitud especificada por el contenido del re-

    gistro C y cuyo primer elemento est almacenado en la direccin de memoria especificadapor el registro par HL.

    ESP_5MS

    Retardo de 5 ms (>4.1ms) para permitir satisfacer los tiempos especificados en la rutina de

    Dispositivos de E/S Programables 554

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    59/84

    $title(Manejo LCD)$subtitle(Mdulo LCD)

    ;---------------------------------------------------------------------------------------------------------------------; Modulo de programa principal;---------------------------------------------------------------------------------------------------------------------

    public pa_8155,pc_8155,escrb_cmd,escrb_dat,E_alto,E_bajo,escap,bcd_ascii,leer_dato1public func_set1,func_set2,dspy_ctrl1,dspy_ctrl2,clr_dspy,ent_mod_set,leer_dato2extern inic_lcd,sal_cmd,texto1,texto2

    ;---------------------------------------------------------------------------------------------------------------------

    ; Definicin de etiquetas;---------------------------------------------------------------------------------------------------------------------i_stack equ 08F0H ; Inicio de la pilai_rwm equ 0800H ; Direccin de inicio de RWMfunc_set1 equ 30h ; Interconexin de 8 lneasfunc_set2 equ 38h ; Interconexin de 8 bits, 2 lneas de 5x7 puntosdspy_ctrl1 equ 8 ; Pantalla off y cursor ocultodspy_ctrl2 equ 0EH ; Pantalla on y mostrar cursorclr_dspy equ 1 ; Borrar pantalla cursor a la esquina izquierdaent_mod_set equ 6 ; Autoincremento y avanzar cursorescrb_cmd equ 0 ; Lneas de control para escribir comandoescrb_dat equ 2 ; Lneas de control para escribir datoE_alto equ 4 ; Mscara para activar lnea enableE_bajo equ 0fbh ; Mscara para llevar enable a ceroleer_dato1 equ 5 ; Lneas de contro (E=1) para leer LCDleer_dato2 equ 1 ; Lneas de contro (E=0) para leer LCDescap equ 0 ; Caracter de escape para texto1

    bcd_ascii equ 30h ; Conversin BCD a ASCII;---------------------------------------------------------------------------------------------------------------------

    ; Definicin de segmentos;--------------------------------------------------------------------------------------------------------------------- defseg puertos,start=50h, class=iospace ; 8155 en direccin 50h

    defseg stack, start=i_stack ; La pila reside en la RWMdefseg datos, class=data, start=i_rwm ; RWM a partir de 0800Hdefseg progr, class=code, start=0 ; 2k de EPROM desde 0000H

    ;---------------------------------------------------------------------------------------------------------------------; Puertos del 8155;---------------------------------------------------------------------------------------------------------------------

    seg puertospctrl_8155 ds 1 ; Puerto de control del 8155pa_8155 ds 2 ; Lneas de datos del mdulo LCDpc_8155 ds 1 ; PC0-->RW

    ; PC1-->RS; PC2-->EN

    Dispositivos de E/S Programables 555

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    60/84

    ;---------------------------------------------------------------------------------------------------------------------

    ; rea de variables;---------------------------------------------------------------------------------------------------------------------

    seg datosmem ds 4temp ds 1;---------------------------------------------------------------------------------------------------------------------

    ; Segmento de cdigo;---------------------------------------------------------------------------------------------------------------------

    seg progrlxi sp,t_stack ; Se carga el apuntador de pilamvi a,0dH ; Pa:salida Pc:salidaout pctrl_8155 ; Programar 8155call inic_lcd ; Configuracin de inicio del mdulo LCDlxi h,cad1 ; Apuntar mensaje 'T1='call texto1 ; Presentar texto 'T1='lxi h,mem ; Apuntar valor de temperatura 1mvi c,2 ; Son dos dgitos BCDcall texto2 ; Presentar temperatura 1lxi h,cad2 ; Apuntar 'grados centigrados'call texto1 ; Presentar 'grados centigrados'lxi h,cad3 ; Apuntar mensaje 'T2='call texto1 ; Presentar texto 'T2='lxi h,mem+2 ; Apuntar valor de temperatura 2mvi c,2 ; Son dos dgitos BCD

    call texto2 ; Presentar temperatura 2lxi h,cad2 ; Apuntar 'grados centigrados'call texto1 ; Presentar 'grados centigrados'mvi a,0cdh ; Direccin de posicin 13 de lnea 2call sal_cmd ; Mover cursorlxi h,cad4 ; Apuntar mensaje '(-->)'call texto1 ; Presentar '(-->)'hlt

    ;---------------------------------------------------------------------------------------------------------------------

    ; rea de mensajes;---------------------------------------------------------------------------------------------------------------------

    cad1: db 'T1=',0cad2: db 0dfH,'C ',0

    Dispositivos de E/S Programables 556

    ;

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    61/84

    ;----------------------------------------------------------------------------------------------------------------------; Rutina INIC_LCD;-----------------------------------------------------------------------------------------------------------------------

    public inic_lcdextern sal_cmd, func_set1,func_set2,dspy_ctrl1,dspy_ctrl2extern clr_dspy,ent_mod_set,esp_5ms,lcd_ocupdefseg progrseg progr

    ;----------------------------------------------------------------------------------------------------------------------inic_lcd: call esp_5ms ; Esperar al menos 15 ms

    call esp_5mscall esp_5ms

    mvi a,func_set1 ; Function setcall sal_cmdcall esp_5ms ; Esperar al menos 4.1 msmvi a,func_set1 ; Function setcall sal_cmdcall esp_5ms ; Esperar al menos 100 smvi a,func_set1 ; Function setcall sal_cmdcall lcd_ocup ; Esperar al menos 40 smvi a,func_set2 ; Function setcall sal_cmdmvi a,dspy_ctrl1 ; Display Controlcall sal_cmdmvi a,clr_dspy ; Clear Displaycall sal_cmdmvi a,dspy_ctrl2 ; Display Controlcall sal_cmdmvi a,ent_mod_set ; Entry Mode Setcall sal_cmd

    retend

    ;----------------------------------------------------------------------------------------------------------------------

    ;----------------------------------------------------------------------------------------------------------------------; Rutina SAL_CMD;----------------------------------------------------------------------------------------------------------------------

    public sal_cmd

    extern lcd_ocup,escrb_cmd,temp,pa_8155,pc_8155,pulso_Edefseg progrseg progr

    ;----------------------------------------------------------------------------------------------------------------------sal_cmd: mov b,a ; Salva cdigo de instruccin

    call lcd ocup ; Espera que el mdulo est libre

    Dispositivos de E/S Programables 557

    ;----------------------------------------------------------------------------------------------------------------------

  • 8/21/2019 Microprocesadores Luis-Urdaneta Captulo 9

    62/84

    ;; Rutina SAL_DATO;----------------------------------------------------------------------------------------------------------------------

    public sal_datoextern lcd_ocup,escrb_dat,temp,pa_8155,pc_8155,pulso_Edefseg progrseg progr

    ;----------------------------------------------------------------------------------------------------------------------

    sal_dato: mov b,a ; Salvar datocall lcd_ocup ; Espera que el mdulo est libremvi a,escrb_dat ; Estado de lneas de control para inicio de enviar dato

    sta temp ; Salvar estado de RS y RWout pc_8155 ; E=0, RS=1, RW=0mov a,b ; Recuperar datoout pa_8155 ; Cargar dato en el buscall pulso_E ; Generar un pulso en Eretend

    ;----------------------------------------------------------------------------------------------------------------------

    ;----------------------------------------------------------------------------------------------------------------------; Rutina LCD_OCUP;----------------------------------------------------------------------------------------------------------------------

    public lcd_ocupextern pa_8155,pc_8155,leer_dato1,leer_dato2defseg progrseg progr

    ;----------------------------------------------------------------------------------------------------------------------

    lcd_ocup: mvi a,0cH ; Pa:entrada Pc:salidaout pctrl_8155 ; Programar 8155 para lecturamvi a,leer_dato1 ; E=1, RS=0, RW=1out pc_8155nop ; Tiempo extrain pa_8155 ; Leer estado de bandera de ocupadomov e,a ; salvar BF en registro Emvi a,leer_dato2 ; E=0, RS=0, RW=1

    out pc_8155mov a,e ; Rec