Monografias.com > Computación > General
Descargar Imprimir Comentar Ver trabajos relacionados

Temporizadores, registros, controladores e interfaces de teclados y displays
en microcontroladores




Enviado por reptilee



Partes: 1, 2




    2.
    Definición de las
    terminales

    3. Lectura de un
    contador

    4. Controlador programable 8237
    DMA

    5.
    Definiciones de terminales

    6. Registros
    internos

    7. Comando de
    programación.

    8. Transferencia de memoria a memoria con el
    8237

    9. Controlador programable de interrupciones
    8259A

    10. Descripción general del
    8259A

    11.
    Programación del 8259A

    12. Controlador programable 8279 para
    teclado y display

    13. Definición de
    terminales para la 8279

    14. Interface del 8279 con el
    microprocesador

    15. Interface con el
    teclado

    16. Interface programable para comunicaciones
    8251

    17. Función de las
    terminales

    18. Programación del
    8251A

    19. Controlador
    programable de monitor o TRC
    8275

    20. Descripción
    Funcional

    21. Definiciones de lo
    Pines

    22. Controlador Programable de
    discos flexibles 8271

    23. Descripción
    funcional

    24. Descripción de
    interface del CPU

    25. Operación
    DMA

    26. Interface de manejo de
    disco

    27. Separación de
    datos

    28. Interfaces de control de
    manejo de disco

    29. El interfaz de
    periféricos 8255

    30. Descripción del
    integrado

    31. Descripción
    funcional

    32. Programación del
    8255

    33. Modos de operación del
    8255

    34. El 8255 en el
    PC

    1. Temporizador programable de intervalos
    8254

    El temporizador programable de intervalos 8254, consta
    de tres contadores (temporizadores) programables de 16 bits. Cada
    contador puede contar en binario o en decimal codificado en
    binario (BCD). La frecuencia máxima permisible de entrada
    a cualquier contador es de 10 Mhz. Este contador es útil
    cuando el microprocesador
    debe controlar eventos en
    tiempo real.
    Algunos ejemplos de su empleo son:
    reloj de tiempo real,
    contador de eventos y
    control de la
    velocidad y
    sentido de funcionamiento del motor.

    Este temporizador también aparece en las computadoras
    personales en los puertos 40H hasta 43H para (1) generar una
    interrupción básica del temporizador que ocurre a,
    más o menos, 18.2 Hz; (2) hacer que se refresque la memoria
    DRAM del sistema; (3)
    constituir una fuente de temporización para la bocina
    interna y otros dispositivos. E temporizador en la computadora
    personal es un
    8253 en vez de un 8254.

    Cada temporizador tiene una entrada de reloj CLK, una
    entrada de compuerta, y una conexión de salida (OUT). La
    entrada de reloj suministra la frecuencia básica de
    funcionamiento del temporizador, la terminal de compuerta
    controla al temporizador en algunos modos de operación y
    en la terminal OUT es donde se obtiene la salida del
    temporizador.

    Las señales que se conectan con cl microprocesador
    son las terminales del canal de datos
    (D7-D0) RD,
    WR, CS y las entradas de direccionamiento A1 y
    A0. Las entradas direccionamiento están presentes para
    seleccionar a cualquier de los cuatros registros
    internos utilizados para la programación, la lectura o
    la escritura en
    un contador. La computadora
    personal tiene
    un temporizador 8253 o su equivalente, decodificado en los
    puertos de E/S 40H-43H. El temporizador cero se programa para
    generar una señal de 18.2 Hz que interrumpa al
    microprocesador en el vector de interrupciones 8 para un "tic" de
    reloj. El pulso se utiliza a menudo para temporizar programas y
    eventos. El temporizador 1 se programa para una
    salida cada 15 microsegundos que se utiliza en la
    microcomputadora PC/XT para solicitar un ciclo de DMA utilizado
    para refrescar la RAM dinámica. El temporizador 2 está
    programado para generar un tono en la bocina de la computadora
    personal.

    2. Definición de las
    terminales

    1. A1, A0, Entradas de direccionamiento: seleccionan uno
    de los cuatro registros internos del 8254. En la tabla 9-6
    aparecen las funciones de los
    bits de dirección Al y A0.

    2. CLK. Entrada de Reloj: se utiliza como fuente de
    temporización para cada uno de los contadores internos.
    Esta entrada está conectada a menudo con la señal
    PCLK del controlador de canal del sistema del
    microprocesador.

    3. CS.
    Selección de Integrado: habilita al 8254 para programarlo,
    leer o escribir en un contador.

    4. G. Entrada de compuerta: controla el funcionamiento
    del contador en algunos modos de funcionamiento.

    5. GND. Tierra:
    conectada a la tierra del
    sistema.

    6. OUT. Salida del contador: la salida es en donde se
    encuentra disponible la forma de onda generada por el
    temporizador.

    7. RD.
    Lectura: lee
    los datos del 8254
    con la señal IORC.

    8. Vcc. Alimentación
    conectada a + 5.0 volts.

    9. WR.
    Escribir: escribe datos en el 8254 con la señal de
    habilitación estroboscópica IOWC.

    Cada contador se programa al escribir una palabra de
    control seguida
    de un conteo inicial. La palabra de control le permite al
    programador seleccionar el contador, el modo de funcionamiento y
    el tipo de operación (lectura o
    escritura). La
    palabra de control también selecciona un conteo binario o
    en BCD. Cada contador se puede programar con un conteo desde 1
    hasta FFFFH. Un conteo de 0 es igual a FFFFH + 1 (65 536) o 10
    000 en BCD. El conteo mínimo de 1 se aplica a todos los
    modos de funcionamiento, excepto los modos 2 y 3, que tienen un
    conteo mínimo de 2. El temporizador 0 se utiliza en la
    computadora
    personal con un conteo para dividir entre 64K (FFFFH) para
    generar el pulso de reloj de 18.2 Hz (18.19638 Hz) para
    interrupción. El temporizador 0 tiene una frecuencia de
    entrada de reloj de 4.77 MHz/4 o 1.1925 MHz.

    La palabra de control emplea el bit BCD para seleccionar
    un conteo en BCD (BCD = 1) o un conteo binario (BCD = 0). Los
    bits M2, M1 y M0 seleccionan uno de los 6 diferentes modos de
    funcionamiento (000-101) del contador Los bits RW1 y RW0
    determinan cómo se leerán o escribirán los
    datos en el contador Los bits SC1 – SC0 seleccionan un
    contador o el modo especial de funcionamiento de retrolectura que
    se describe más adelante en esta
    sección.

    Cada contador tiene una palabra de control que se
    utiliza para seleccionar la forma en que trabajará el
    contador. Si se programan 2 bytes en un contador, entonces el
    primer byte (LSB) detendrá el conteo y el segundo byte
    (MSB) empezará el conteo con una nueva cuenta. El orden de
    la programación de cada contador es
    importante, pero se puede intercalar la programación de
    diferentes contadores para tener mejor control. Por ejemplo, la
    palabra de control se puede enviar a cada contador antes que los
    conteos para la programación de cada uno. En el ejemplo
    9-21 se ilustran unas cuantas formas de programar los contadores
    1 y 2. En el primer método se
    programan ambas palabras de control, luego la parte menos
    significativa del (LSB) del conteo de cada contador, que les
    detiene su conteo. Después, se programa la parte
    más significativa (MSB) del conteo, y se ponen a trabajar
    ambos contadores con el nuevo conteo. En la segunda parte del
    ejemplo, se muestra un
    contador programado antes que el otro.

    Modos de funcionamiento. Están disponibles seis
    modos de funcionamiento (modo 0-modo 5) en cada uno de los
    contadores del 8254. A continuación se describe cada
    modo:

    1. El Modo 0 permite utilizar el contador 8254 como
    contador de eventos. En este modo, la salida se vuelve un 0
    lógico cuando se escribe la palabra de control y permanece
    allí hasta que hay N más el número de conteo
    programado. Por ejemplo, si se programa un conteo de 5, la salida
    seguirá siendo 0 lógico durante seis conteos a
    partir de N. Se debe tener en cuenta que la entrada de la
    compuerta (G) debe ser un l lógico a fin de permitir el
    conteo del contador. Si G se vuelve un 0 lógico en la
    mitad de un conteo, se detendrá el contador hasta que G
    vuelva a ser otra vez 1 lógico.

    2. El Modo 1 hace que el contador funcione como
    multivibrador monoestable. En este modo, la entrada G dispara al
    contador de modo que produzca un pulso en la salida OUT, que se
    convierte en 0 lógico mientras dura el conteo. Si el
    conteo es de 10, entonces la salida va bajo durante 10 periodos
    de reloj cuando se le dispara. Si la entrada G ocurre mientras
    dura el pulso de salida, se vuelve a cargar el contador con el
    total de cuenta y la conexión en la salida continua
    mientras dure el conteo.

    3. El Modo 2 permite que el contador genere una serie de
    pulsos continuos que tienen un ancho de un pulso de reloj. La
    separación entre los pulsos determina el conteo. Por
    ejemplo, para un conteo de 10, la salida es un 1 lógico
    durante 9 periodos de reloj y está en un nivel bajo
    durante un periodo de reloj. Este ciclo se repite hasta que se
    programe el contador con un nuevo conteo o hasta que se lleve la
    terminal G a un 0 lógico. La entrada G debe ser un 1
    lógico para que este modo genere una serie continua de
    impulsos.

    4. El Modo 3 genera una onda cuadrada continua en la
    salida, siempre y cuando la terminal 0 sea un 1 lógico. Si
    el conteo es par, la salida es alta durante la mitad del conteo y
    baja durante la otra mitad. Si el conteo es impar, la salida es
    alta durante un periodo de reloj más largo que aquel en
    que está baja. Por ejemplo, si se programa el contador
    para un conteo de 5, la salida está en alto durante 3
    pulsos de reloj y en bajo durante 2.

    5. El Modo 4 permite que el contador produzca un solo
    pulso en la salida. Si se programa un conteo de 10, la salida
    está en alto durante l0 periodos de reloj y, luego, en
    bajo durante uno. El ciclo no empieza hasta que el contador tiene
    su carga completa. Este modo funciona como un multivibrador
    monoestable disparado por programa. En este modo, igual que en
    los modos 2 y 3, se emplea la entrada G para habilitar el
    contador. La entrada G debe ser un 1 lógico para que el
    contador funcione en estos tres modos.

    6. El Modo 5 es un multivibrador monoestable disparado
    externamente, que funciona como en modo 4, excepto que lo dispara
    un pulso de disparo en la terminal G, en vez de que lo haga el
    programa. Este modo es también similar al modo 1 porque se
    puede volver a disparar.

    Las direcciones se decodifican con un PAL l 6L8 que
    también genera una señal de habilitación
    para escritura para el 8254, que está conectado con las
    conexiones de orden bajo del canal de datos. El PAL
    también genera una señal de espera para el
    microprocesador que ocasiona 2 estados de espera cuando se accesa
    al 8254. El generador de estados de espera conectado con el
    microprocesador, en la práctica, controla el número
    de estados de espera insertados en la temporización. El
    programa para el PAL no se ilustra aquí porque es casi el
    mismo que en muchos de los ejemplos anteriores.

    3. Lectura de un
    contador

    Cada contador tiene un registro interno
    que se lee con la operación dc leer un puerto del contador
    Estos registros, por lo general, siguen el conteo. Si se necesita
    el contenido del contador en un momento determinado, entonces el
    registro puede
    "recordar" el conteo si se programa la palabra de control (figura
    9-35) que ocasiona que se retenga el contenido del contador en un
    registro, hasta que se lea. Siempre que se programa una lectura
    del registro contador se retiene el contenido del
    contador.

    Cuando es necesario leer el conten al mismo tiempo, se
    utiliza palabra de control de retrolectura. Con esa palabra de
    retrolectura, el bit CNT
    es un 0 lógico para hacer que se retengan los
    contenidos de los contadores seleccionados por CNT0, CNT1 y CNT2
    Si se va a retener el registro de estado
    entonces se hace al bit ST
    un 0 lógico. En la figura 9-37 se muestra el
    registro de estado que a
    su vez muestra el estado la
    terminal de salida, ya sea que el contador está en un
    estado nulo (0) o la forma como se programo.

    Una aplicación del temporizador 8254 es como
    controlador de velocidad de
    un motor de CD. El
    funcionamiento de los circuitos
    manejadores es muy sencillo. Si la salida Q del 74ALS112 es un 1
    lógico, la base de Q2 va a +12 volts por medio del
    resistor elevador de nivel de la base y la base de Q1 va a
    circuito abierto. Esto significa que Q1 está apagado y Q2
    encendido y la terminal positiva del motor se conecta a + 12 V.
    Las bases de Q3 y Q4 van a tierra a
    través de los inversores. Esto hace que Q3 conduzca o se
    encienda y que Q4 se apague conectando a tierra la terminal
    negativa del motor. Por tanto, el 1 lógico en la salida Q
    del flip-flop conecta +12 V a la terminal positiva del motor y a
    tierra la terminal negativa. Esta conexión hace que el
    motor gire hacia el frente o sentido normal. Si el estado de
    la salida Q del flip-flop se vuelve un 0 lógico, entonces
    se invierten las condiciones de los transistores y se
    aplican +12V a la terminal negativa del motor y se conecta a
    tierra la positiva. Esto hace que el motor tenga rotación
    inversa.

    Si se alterna la salida del flip-flop entre un 1 y un 0
    lógicos, entonces el motor gira en un sentido u otro a
    diversas velocidades. Si el ciclo de trabajo de la salida Q es de
    50%, el motor no girará y tendrá algo de par
    (torsión) de retención, porque la corriente pasa
    por él. En la figura 9-39 se muestran algunos diagramas de
    temporización y sus efectos en la velocidad y sentido de
    rotación del motor Se verá la forma en que cada
    contador genera pulsos en diferentes posiciones, para variar el
    ciclo de trabajo en la salida Q del flip-flop. Esta salida se
    llama también modulación por ancho de
    pulso.

    Para generar estas formas de onda, se programan los
    contadores 0 y 1, para dividir el reloj de entrada (PCLK) entre
    30720. Para cambiar el ciclo de trabajo de Q se cambia el punto
    en el cual se pone a funcionar el contador 1 en relación
    con el contador 0. Con ello, se cambian la velocidad y el sentido
    de rotación del motor. Pero, ¿por qué
    dividir el reloj de 8 MHz entre 30 720? Este número es
    divisible entre 256 por lo cual se puede establecer un programa
    corto que permita 256 velocidades diferentes. Esto produce
    también una frecuencia básica de funcionamiento
    para el motor de alrededor de 260 Hz, que es lo suficiente baja
    para impulsar el motor. Es importante mantener esta frecuencia de
    funcionamiento por abajo de 1000 Hz, pero mayor a 60
    Hz.

    La velocidad se controla con el valor de AH
    cuando se llama a este procedimiento.
    Debido a que se tiene un número de 8 bits para representar
    la velocidad, entonces un ciclo de trabajo de 50% para un motor
    parado, es un conteo de 128. Si se cambia el valor en AH
    cuando se llama a este procedimiento, se
    puede ajustar o graduar la velocidad del motor. Cuando se llama a
    este procedimiento y se cambia el valor de AH, se
    aumentará la velocidad del motor en cualquier sentido de
    rotación. Conforme el valor de AH se aproxima a 00H, el
    motor empieza a aumentar su velocidad en la rotación
    inversa. Cuando el valor de AH se aproxima a FFH, aumenta la
    velocidad del motor en el sentido normal.

    4. Controlador
    programable 8237 DMA

    El controlador de DMA 8237 suministra a la memoria y al E/S
    señales de control e información y direccionamiento a la memoria
    durante la transferencia de DMA. El 8237 es, en realidad, un
    microprocesador de propósito especial cuya labor es la
    transferencia de datos a alta velocidad entre la memoria y el
    espacio de E/S. Aunque este controlador quizá no aparezca
    como componente discreto en sistemas modernos
    basados en microprocesador, se emplea en los conjuntos de
    controladores integrados (chip-set) que hay en los sistemas
    más nuevos.

    El 8237 tiene cuatro canales y es compatible con los
    microprocesadores 8086 y 8088. El 8237 puede
    expandirse para incluir cualquier número de entradas de
    canal de DMA, aunque parece ser que cuatro canales son adecuados
    para muchos sistemas pequeños. El 8237 puede efectuar
    transferencias de DMA a velocidades de hasta 1.6 Mbytes por
    segundo. Cada una puede direccionar a una sección completa
    de 64 Kbytes de la memoria y puede transferir hasta 64 Kbytes con
    una sola programación.

    5. Definiciones de
    terminales

    1. CLK (reloj) está conectada con la señal
    de reloj del sistema siempre y cuando ésta sea de 5 MHz o
    menos. En el sistema de 8086 y 8088, hay que invertir el reloj
    para tener buen funcionamiento del 8237.

    2. CS
    (selección de integrado) selecciona al 8237 durante
    la programación. Esta terminal, por lo general,
    está conectada con la salida de un decodificador, el cual
    no utiliza la señal de control IO/M (M/IO) del 8086 y 8088 porque contiene las
    nuevas señales de control de la memoria y E/S:
    (MEMR,
    MEMW, IOR e IOW).

    3. RESET (Inicializar) borra los registros de comandos, estado,
    solicitud y temporales. También borra el primero y
    último flip-flop e inicializa el registro de
    enmascaramiento. Esta entrada reinicializa al 8237
    deshabilitándolo hasta que se programa.

    4. READY (Listo) hace que el 8237 inserte estados de
    espera para los componentes de memoria o E/S más
    lentos.

    5. HLDA (reconoce cesión) le señala al
    8327 que el microprocesador ha cedido el control de los canales
    de dirección, datos y control.

    6. DREQ3, DRQ0: (solicitud de DMA) son entradas que se
    emplean para solicitar transferencias de DMA para cada uno de los
    cuatro canales de DMA. Debido a que la polaridad de estas
    entradas es programable, son entradas activas en alto o
    bajo.

    7. DB7 hasta DB0 (canal de datos). Son las conexiones al
    canal de datos del microprocesador Y se emplean durante la
    programación del controlador de DMA.

    8. IOR (leer
    E/S) es una terminal bidireccional utilizada durante la
    programación del controlador de DMA.

    9. IOW
    (escribir en E/S) es una terminal bidireccional utilizada
    durante la programación y durante un ciclo de escritura de
    DMA.

    10. EOP (final
    del proceso) es
    una señal bidireccional que se emplea como entrada para
    terminar un proceso de DMA
    o como salida para señalar el final de una transferencia
    de DMA. Esta entrada se emplea a menudo para interrumpir una
    transferencia de DMA al final de un ciclo de DMA

    11. A3 hasta A0 (direcciones) son terminales que se
    utilizan para seleccionar un registro interno durante la
    programación y también son parte de la
    dirección de DMA durante una acción de

    DMA.

    12. A7 hasta A4 (direcciones) son salidas que
    proporcionan parte de la dirección de transferencia de DMA
    durante una acción de DMA.

    13. HRQ (retener solicitud), es una salida que se
    conecta a la entrada HOLD del microprocesador a fin de solicitar
    una transferencia de DMA.

    14. DACK3-DACK0 (reconocimiento de canal de DMA) son
    salidas que aceptan o reconocen una solicitud de un canal de DMA,
    Estas salidas se pueden programar como activas en alto o activas
    bajo. Las salidas DACK se emplean a menudo para seleccionar el
    dispositivo de E/S controlado por DMA durante la transferencia de
    DMA.

    15. AEN (habilitación de dirección)
    habilita el registro de direccionamiento DMA conectado a las
    terminales DB7-DB0 del 8237. También se utiliza para
    deshabilitar cualquier acoplamiento a microprocesador del sistema
    conectada con el microprocesador.

    16. ADSTB (señal estroboscópica de
    habilitación de dirección) funciona como ALE, salvo
    que se emplea en el controlador de DMA para capturar los bits de
    dirección A15-A18 durante la transferencia de
    DMA.

    17 MEMR
    (lectura a memoria) es una salida que hace que se lean
    datos de la memoria durante un ciclo de lectura de
    DMA.

    18. MEMW
    (escritura a memoria) es una salida que hace que se
    escriban datos en la memoria durante un ciclo de escritura de
    DMA.

    6. Registros
    internos

    1. Registro de dirección actual (CA R) contiene
    la dirección de memoria de 16 bits utilizada para la
    transferencia de DMA. Cada canal tiene su propio registro CAR
    para ello. Cuando se transfiere un bit de datos durante una
    operación de DMA, se incrementa o decrementa el CAR,
    según se programó.

    2. Registro de contador (CWCR) programa a un canal para
    el número de bits (hasta 64) transferidos durante una
    acción de DMA. El número cargado en este registro
    es uno menos que el número de bits transferidos. Por
    ejemplo, si se carga un 10 en el CWCR, entonces se transfieren 11
    bits durante la acción de DMA.

    3. Dirección base (BA) y contador de palabras
    base (BWC), son registros que se emplean para seleccionar la
    autoinicialización automática de un canal. En el
    modo de autoinicialización, estos registros se emplean
    para volver a cargar los registros CAR y CWCR después de
    que ha concluido la acción de DMA. Estos permiten que el
    mismo conteo y dirección se utilicen para transferir datos
    de la misma área de memoria.

    4. Registro de comandos (CR)
    programa la operación del controlador 8237. La figura 11-4
    ilustra la función del registro de comandos.

    En el registro de comandos se utiliza la posición
    de bit 0 para seleccionar el modo de transferencia de memoria a
    memoria de DMA. En esas transferencias se emplea el canal 0 de
    DMA para la dirección fuente y el canal de DMA 1 para la
    dirección de destino. (Esto es semejante al funcionamiento
    de una instrucción MOVSB). Se lee un byte en la
    dirección accesada por el cana 0 y se salva en el 8237 en
    un registro temporal. Luego, el 8237 inicia un ciclo de escritura
    a la memoria, en donde el contenido del registro temporal se
    escribe a la dirección seleccionada por el canal 1 de DMA.
    El número de bytes transferidos lo determina el registro
    contador del canal 1.

    El bit de habilitación de retención de la
    dirección del canal 0 (posición de bit 1) programa
    al canal 0 para transferencias de memoria a memoria. Por ejemplo,
    supóngase que se debe llenar una zona de la memoria con
    datos; el canal 0 puede tener la misma dirección mientras
    el canal 1 cambia para hacer transferencia de memoria a memoria.
    Así se copia el contenido de la dirección a del
    canal 0, en un bloque de memoria al que apunta y accesa el canal
    1.

    El bit de habilitación y deshabilitación
    controlador (posición de bit 2) enciende y apaga todo el
    controlador. El bit normal y compresión (posición
    de bit 3) determina si un ciclo de DMA consta de 2 periodos de
    reloj (comprimido) o de 4 (normal). La posición de bit 5
    se emplea en la temporización normal para extender el
    pulso de escritura por lo cual aparece un pulso de reloj
    más temprano en la temporización para dispositivos
    de E/S requieren un pulso de escritura más
    ancho.

    La posición de bit 4 selecciona la prioridad de
    las entradas DRWQ de los 4 canales de DMA. En el esquema de
    prioridad fija, el canal 9 tiene máxima prioridad y el
    canal 3 la mínima. En el esquema de prioridad rotatoria,
    el canal al cual se acaba de dar servicio,
    torna la mínima. Por ejemplo, si el canal 2 acaba de tener
    acceso a una transferencia de DMA, toma la mínima
    prioridad y el canal 3 toma la máxima prioridad. El
    esquema rotatorio es un intento por dar igual prioridad a todos
    los canales.

    Los dos bits restantes (posiciones de bit 6 y 7),
    programan las polaridades de las entradas DRWQ y de las salidas
    DACK.

    5. Registro de modo (MR), programa de modo de
    operación de un canal. Se debe tener en cuenta que cada
    canal tiene su propio registro de modo (figura 11-5),
    seleccionado por las posiciones de bit 1 y 0. Los bits restantes
    del registro de modo seleccionan operación,
    autoinicialización, incremento/decremento y modo para el
    canal. Las operaciones de
    verificación generan las direcciones de DMA, sin generar
    las señales de control de DMA memoria y de E/S.

    Los modos de funcionamiento, incluyen: modo de demanda, modo
    único, modo de bloque y modo cascada. El modo de demanda
    transfiere datos hasta que entra una señal
    EOP externa o hasta que la
    entrada DREQ se vuelve inactiva. El modo único o sencillo
    libera la señal HOLD después de transferir cada
    byte de datos. Si se mantiene activa la terminal DREQ el 8237
    solicita de nuevo una transferencia de DMA a través de la
    línea DRQ a la entrada HOLD del microprocesador. El modo
    de bloque transfiere en forma automática el número
    de bytes indicado por el registro contador del canal. No se
    necesita mantener activa a DREQ durante el modo de transferencia
    de bloque. El modo cascada se emplea cuando hay más de un
    8237 que trabaje en un sistema.

    6. Registro de solicitud (RR) se emplea para solicitar
    una transferencia de DMA por programa (figura 11-6). Esto es muy
    útil en las transferencias de memoria a memoria, cuando no
    está disponible una señal externa para iniciar la
    transferencia de DMA.

    7. Activar o desactivar registro de enmascaramiento
    (MRSR), activa o desactiva el registro cíe enmascaramiento
    de cada canal como se ilustra en la figura 11-7. Si se activa el
    enmascaramiento, se deshabilita el canal. Recuerde que la
    señal RESET activa todos los enmascaramientos
    deshabilitando todos los canales.

    8. Registro de enmascaramiento (OMSR) (figura 11-8)
    habilita o deshabilita todos los enmascaramientos con un comando,
    en lugar del enmascaramiento individual de cada canal como con
    MRSR.

    9. Registro de estado (SR) muestra el estado de cada
    canal de DMA (figura 11-9) los bits TC indican si el canal ha
    llegado a su cuenta terminal (transferencia de todos sus
    bytes).

    Cuando se llega a la cuenta final o terminal, se termina
    la transferencia de DMA para casi todos los modos de
    funcionamiento. Los bits de solicitud indican si está
    activa la entrada DREQ para un canal especifico.

    7. Comando de
    programación
    .

    Se emplean tres comandos para controlar la
    operación del 8237. Estos comandos no tienen un
    patrón de bits, como ocurre con los diversos registros de
    control dentro del 8237. Una salida sencilla al número de
    puerto debido, habilita el comando de
    programación

    A continuación se explican las funciones de
    los comandos de programación:

    1. Borrar el primero/último flip-flop borra el
    primero/último (F/L) flip-flop dentro del 8237. Ese
    flip-flop selecciona cuál byte (alto o bajo) se lee o
    escribe en los registros de dirección y de conteo
    actuales. Si F/L = 0, se selecciona el byte de orden bajo; si es
    F/L = 1 se selecciona el de orden alto. Cualquier lectura o
    escritura en la dirección o el registro de conteo produce
    inversión del flip-flop F/L.

    2. Inicio maestro. Actúa en la misma forma exacta
    que la señal RESET para el 8237. Este comando, igual que
    la señal RESET deshabilita a todos los canales.

    3. Desactivar registro de enmascaramiento habilita a los
    cuatro canales de DMA.

    Programación de los registros de dirección
    y de conteo.

    En la figura 11-11 se ilustran las localidades de los
    puertos de E/S para programar los registros de dirección y
    de contadores de cada canal. Se verá que el estado del
    flip-flop F/L determina si se programa el byte menos
    significativo (LSB) o el más significativo (MSB). Si se
    desconoce el estado del flip-flop F/L, los registros de
    dirección y contador se podrían programar en forma
    incorrecta.

    Hay cuatro pasos para programar el 8237: (1) se
    desactiva el flip-flop F/L mediante el comando para desactivarlo;
    (2) se deshabilita el canal; (3) se programa primero el LSB y
    luego el MSB de la dirección; (4) se programan el LSB y el
    MSB del contador. Una vez efectuado lo anterior, el canal
    está programado y listo para usarse. Se necesita
    programación adicional para seleccionar el modo de
    funcionamiento antes de que se habilite y ponga a funcionar el
    canal.

    8.
    Transferencia de memoria a memoria con el 8237

    La transferencia de memoria a memoria es mucho
    más potente que incluso la instrucción MOVS con
    repetición automática. Para el 8088 opera a 4.2
    microsegundos por bit, el 8237 sólo necesita 2.0
    microsegundos por bit. Es casi el doble de rápido que un
    programa de transferencia de datos.

    Muestra de transferencia de DMA de memoria a memoria.
    Supóngase que se va a transferir el contenido de las
    localidades de memoria 10000H hasta 13FFH a las localidades de
    memoria 14000H hasta 17FFFH. Se logra con una instrucción
    repetida de mover cadena o, con mucha más velocidad, con
    el controlador de DMA.

    La programación del controlador de DMA requiere
    pocos pasos como se ilustra en el ejemplo. El dígito de la
    extrema izquierda de la dirección de 5 dígitos se
    envía al registro B. Luego borra el flip-flop F/L y se
    programan los canales. Se debe tener en cuenta que se utiliza el
    canal 0 como fuente y el canal l como destino para la
    transferencia de memoria a memoria. Después programa el
    contador con un valor que es uno menos que el número de
    bits que se va a transferir. Ahora se programa el registro de
    modo de cada canal y el registro de comando selecciona una
    transferencia en bloque, se habilita al canal 0 y se inicia una
    solicitud de DMA por programa. Antes de hacer el retorno desde el
    procedimiento, se prueba el bit de cuenta terminal del registro
    estado. Se recordará que la bandera de cuenta terminal
    indica que ha concluido la transferencia de DMA. El bit TC
    también deshabilita al canal e impide transferencias
    adicionales.

    Muestra de llenado de la memoria con el 8237. Para
    poder llenar
    una zona de la memoria con un mismo dato, se programa como
    registro fuente el canal 0 para que apunte hacia la misma
    dirección durante toda la transferencia, lo cual se logra
    con el modo de retención del canal 0. El controlador copia
    el contenido de esta única localidad de la memoria en un
    bloque completo memoria direccionado por el canal 1. Esto tiene
    muchas aplicaciones útiles. Por ejemplo, supóngase
    que se debe borrar la memoria de vídeo del monitor. Esto
    se puede efectuar con el empleo del
    canal 0 del controlador de DMA en el modo de retención y
    una transferencia de memoria a memoria. Si el monitor de
    vídeo tiene SO columnas y 24 líneas, tiene 1920
    posiciones para exhibición que se deben inicializar a 20H
    (un espacio en ASCII) para
    apagar la pantalla del monitor.

    El registro se emplea para capturar los datos que le
    envían la impresora
    durante la transferencia de DMA. El pulso de escritura pasado a
    través del registro durante la acción de DMA
    también genera la señal de habilitación de
    datos (DS) a la
    impresora por
    medio del multivibrador monoestable. La impresora envía la
    señal ACK cada
    vez que está lista para datos adicionales. En este
    circuito, se emplea para solicitar una acción de DMA por
    medio del flip-flop.

    Se debe tener en cuenta que para seleccionar el
    dispositivo E/S no se decodifica la dirección en el canal
    de direcciones. Durante la transferencia de DMA el canal de
    direcciones contiene dirección de la memoria y no puede
    contener la dirección del puerto de E/S. En lugar de la
    dirección de E/S la salida DACK3 del 8237 selecciona el
    registro pasando el pulso de escritura a través de una
    compuerta OR.

    El programa que controla esta interface es sencillo,
    porque sólo se programan la dirección de los datos
    y el número de caracteres que se van a imprimir. Una vez
    programados, se habilita el canal y la acción de DMA
    transfiere un bit cada vez que la interface recibe la
    señal ACK desde
    la impresora.

    9.
    Controlador programable de interrupciones 8259A

    El controlador programable de interrupciones (PIC) 8259A
    agrega ocho interrupciones con vector y prioridades codificadas
    al microprocesador.

    10. Descripción
    general del 8259A

    En la figura 10-4 se ilustra el diagrama de
    base del 8259A, cl cual es fácil de conectar con el
    microprocesador, porque todas las terminales, son conexiones
    directas excepto CS que
    se deben decodificar y la terminal , que debe tener un pulso de
    escritura de un banco de E/S. A
    continuación se describen todas las terminales del
    8259A.

    1. D7 -D0: Conexiones bidireccionales de datos. Estas
    terminales se conectan al bus de datos del
    8085.

    2. IR7-IR0: Entradas de solicitud de
    interrupción. Se emplean para solicitar una
    interrupción y para conectar con un esclavo en un sistema
    que tenga 8259A múltiples.

    3. WR:
    Escribir. Una entrada conectada con la señal de
    habilitación estroboscópica superior o inferior de
    escritura.

    4. : Leer. Entrada conectada con la señal
    IORC.

    5. INT: Interrupción. Salida conectada con la
    terminal INTR del microprocesador, desde el amo, y conectada con
    una terminal IR del amo en un esclavo.

    6.: Reconocimiento de interrupción. Una entrada
    conectada con la señal Ien el sistema. En un sistema con amo y
    esclavos, sólo se conecta la señal
    Idel maestro.

    1. A0: Dirección. Entrada que selecciona
      diferentes palabras de comando dentro del 8259A.

    8. : Seleccionar integrado. Se emplea para habilitar al
    8259A para programa y control.

    9 : Programa esclavo/habilitar acoplador. Una terminal
    de doble función. Cuando el 8259A está en el modo
    acoplador, es una salida que controla a los transreceptores en el
    canal de datos. Cuando el 8259A no esta en este nodo. esta
    terminal programa al controlador como amo (1) o como esclavo
    (0).

    10. CAS2 hasta CAS0: Líneas de cascada. Se
    emplean como salidas del maestro hacia los esclavos para conectar
    en cascada a 8259A múltiples en un sistema.

    En la figura 10-16 se ilustran dos 8259A conectados con
    el microprocesador en una forma que se encuentra a menudo en la
    computadora AT, la cual tiene dos 8259A para
    interrupciones.

    En este circuito se emplean los vectores 08H-0FH
    y los puertos 0300H y 0302H de E/S para U1, que es el amo y los
    vectores 70H-77H
    y los puertos 0304H y 0306H de E/S para U2, que es el
    esclavo.

    11.
    Programación del 8259A

    El 8259A se programa con comandos de
    inicialización y de operación. Las palabras de
    comando de inicialización (ICW) se programan antes de que
    el 8259A pueda funcionar en el sistema y sirven para ordenar el
    funcionamiento básico del 8259. Las palabras de comando de
    operación (OCW) se programan en la operación normal
    y permiten el buen funcionamiento del 8259A.

    Palabras de comando de inicialización: Hay cuatro
    palabras (ICW) de comando de inicialización para el 8259A
    que se seleccionan cuando la terminal A es un 1 lógico.
    Cuando el 8259A se alimenta por primera vez, hay que enviarle
    ICW1, ICW2 e ICW4. Si el 8259 se programa en el modo de cascada
    con ICW1, también hay que programar ICW3. Por ello, si se
    utiliza un solo 8259A en un sistema, se deben programar ICWI,
    ICW2 e ICW4. Si se utiliza el modo de cascada en un sistema,
    entonces hay que programar las cuatro ICW. En la figura 10-17
    aparece el formato de las cuatro ICW, que se describen a
    continuación:

    1. ICW1: Programa el funcionamiento básico del
    8259A. Para programar el 8259A para trabajar con el 8086-80486,
    se pone un Ilógico en el bit 1c4. Los bits ADI, A7, A6 y
    A5 son no importa para el funcionamiento del microprocesador y
    sólo se aplican al 8259A cuando se utiliza con el
    microprocesador 8085 de 8 bits. Esta ICW selecciona
    funcionamiento sencillo o en cascada porque programa al bit SNGL
    (sencillo). Si se selecciona funcionamiento en cascada,
    también se debe programar ICW3. El bit LTIM determina si
    las entradas de solicitud de interrupción son positivas,
    disparadas por flanco o disparadas por nivel.

    2. ICW2: Selecciona el número de vector utilizado
    con las entradas de solicitud de interrupción. Por
    ejemplo, si se decide programar a 8259A para que funcione en las
    localidades de vector 08H-OFH, se pone un 08H en esta palabra de
    comando. Asimismo, si se decide programar al 8259A para los
    vectores 70H-77H se pone un 70H en esta ICW.

    3. ICW3: Sólo se utiliza cuando ICW1 indica que
    el sistema está funcionando en el modo de cascada. Esta
    ICW3 indica en donde está conectado el esclavo con el amo.
    Por ejemplo, en la figura 10-16 aparece conectado un esclavo con
    IR2.

    4. ICW4: Se programa para trabajar con los microprocesadores
    8086-80486. Esta ICW no se programa en un sistema que trabaje con
    el microprocesador 8085.

    Palabras de comando de operación. Las palabras de
    comando de operación (OCW) se emplean para ordenar la
    operación del 8259A una vez que se programa con las ICW.
    Las OCW se seleccionan cuando la terminal A0 es un 0
    lógico, excepto en OCW1, que se selecciona cuando A0 es un
    1 lógico. En la figura 10-18 se ilustrarías
    configuraciones o patrones de bits binarios para las tres
    palabras de comando de funcionamiento del 8259A. A
    continuación se describe la función de cada
    OCW:

    1. OCW1: Se emplea para inicializar y leer el registro
    de la máscara de interrupción. Cuando se hace uno
    un bit de máscara, apagará (enmascara) la
    correspondiente entrada de interrupción. El registro de la
    máscara se lee cuando se lee OCW1. Debido a que el estado
    de la máscara se desconoce cuando se inicializa el 8259A,
    OCW1 se debe programar después de programar las ICW
    durante la inicialización.

    2. OCW2: Sólo se programa cuando no se selecciona
    el modo AEOI para el 8259A. En este caso, la OCW selecciona la
    forma en que el 8259A responde a una interrupción. Estos
    modos son los siguientes:

    a. Final no específico de la interrupción.
    Un comando enviado por el procedimiento de servicio de la
    interrupción para señalar el final de la
    interrupción. El 8259A determina y forma automática
    cuál nivel de interrupción estaba activo y
    restablece al bit correspondiente del registro de estado de las
    interrupciones. Al restablecer al bit en el registro de estado se
    permite que la interrupción actúe de nuevo o que se
    produzca una interrupción de menor prioridad.

    b. Final especifico de la interrupción. Un
    comando que permite restablecer una solicitud específica
    de interrupción. La posición exacta se determina
    con los bits L2-L0 de OCW2.

    c. Rotación con EOI no específico. Un
    comando que funciona en la misma forma exacta que el comando no
    especifico de fin de interrupción, salvo que rota las
    prioridades de interrupción después de restablecer
    su bit en el registro de estado de las interrupciones. FI valor
    restablecido por este comando se vuelve interrupción de
    mínima prioridad. Por ejemplo, si se acaba de dar servicio
    a IR con este comando, se convierte en la entrada de
    interrupción de mínima prioridad y IR5 se vuelve de
    máxima prioridad.

    d. Rotación con EOI automático. Un comando
    que selecciona un EOI automático con prioridad para la
    rotación. Este comando sólo se debe enviar al 8259
    una vez, si se desea este modo. Si se va a apagar este modo, se
    debe emplear el comando para borran

    e. Rotar con EOI específico. Su función es
    similar a la de EOI específico, excepto que selecciona una
    prioridad de rotación.

    f. Inicializar prioridad. Permite al programador
    inicializar la entrada de interrupción de mínima
    prioridad con el empleo de los bits L2 hasta L0.

    3. OWC3: Selecciona el registro que se leerá, la
    operación del registro de máscara especial
    v.· cl comando para "encuesta". Si
    se selecciona encuesta, se
    debe activar el bit P y, luego, enviarlo al 8259A. La siguiente
    operación de lectura leerá la palabra de encuesta.
    Los tres bits de extrema derecha de la palabra de encuesta
    indican la solicitud de interrupción en activo con la
    máxima prioridad. El bit a la extrema izquierda indica si
    hay interrupción y hay que comprobarlo para determinar si
    los 3 bits de la extrema derecha contienen o no informacion
    válida.

    Registro de estado. En el 8259A se pueden leer tres
    registros de estado, registro de solicitud de interrupción
    (IRR), registro de servicio (ISR) y registro de máscara de
    interrupción (IMR). Estos tres registros de estado se ven
    en la figura 10-19. El IRR es un registro de 8 bits que indica
    cuáles entradas de solicitud de interrupción
    están activadas. El ISR es un registro de 8 bits que
    contiene el nivel de la interrupción que se atiende. El
    IMR es un registro de 8 bits que contiene los bits de la
    máscara de interrupción y señala
    cuáles interrupciones están enmascaradas. Para leer
    IRR e ISR se programa OCW3 e IMR se lee por medio de OCW1. Para
    leer el IMK A0 = 1 y para leer IRR o ISR, A0 = 0. Las posiciones
    de bits D0 y Dl de OCW3 seleccionan cuál registro (IRR o
    ISR) se lee cuando A0 = 0.

    Recepción de datos desde el 825lA. Los datos
    recibidos por el 8251A se almacenan en una memoria FIFO hasta que
    el programa principal los pueda utilizar. La memoria FIFO para
    los datos recibidos tiene 16K bytes de longitud por lo cual es
    fácil almacenar y recibir muchos caracteres antes de que
    se requiera la intervención del 8086 para vaciar la FIFO
    del receptor, la cual se almacena en el segmento extra para
    poder emplear
    instrucciones para cadenas, con el registro DI para accesar la
    cadena. La recepción de datos desde el 8251A requiere dos
    procedimientos: uno lee el registro de datos del
    8251A cada vez que la terminal RxRDY solicita una
    interrupción y la almacena en la FIFO; el otro, lee los
    datos de la FIFO desde el programa principal.

    En el ejemplo 10-9 se presenta el procedimiento
    utilizado para leer los datos de la FIFO en el programa
    principal. En este procedimiento, se supone que los apuntadores
    (IN y IOUT) son inicializados en el programa de
    inicialización del sistema (que no se ilustra). El
    procedimiento (LEE) retorna con AL conteniendo un carácter
    leído de la FIFO. Sí la FIFO está
    vacía, el procedimiento retorna con el carácter FEH
    en AL. Esto significa que no se permite a FFH como un
    carácter en el receptor.

    12. Controlador
    programable 8279 para teclado y
    display

    La 8279 es una interface programable para teclado y
    exhibición visual, que rastrea y codifica hasta 64 teclas
    y controla una exhibición visual hasta de 16
    dígitos. La interface para el teclado tiene una memoria de
    primero en entrar, primero en salir (FIFO) que le permite
    almacenar hasta seis tecleos antes de que el microprocesador deba
    tomar un carácter La sección de la
    exhibición visual controla hasta 16 dígitos con una
    RAM interna de 16
    x 8 que almacena la información codificada para
    exhibición visual.

    Partes: 1, 2

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter