CARACTERISTICAS ELECTRICAS DE LOS PUERTOS Los 3 puertos tienen una especificación de corriente IOL de 1.7 mA y una especificación de IOH de 200 uA. Esto significa que puede manejar directamente una carga TTL estándar o 4 cargas TTL LS. Las 8 lineas de los puertos B y C pueden suministrar hasta 1 mA a 1.5 Volts. Esto es útil para manejar relevadores de estado solido y transistores manejadores. Pero no son capaces de absorver la corriente típica de un Led de 10 a 20 mA. Para este fin se deberá usar un buffer TTL. Velocidad de operación del 8255 Existen dos versiones de 8255 de acuerdo a sus velocidades de operación y estos se diferencian de la siguiente forma. El 8255A y el 8255A-5 La diferencia entre estos dos está en cuanto tiempo tardan en preparar su dato valido cuando se le solicita una lectura (RD=0) tRD y cuandto tiempo requiere para hacer una escritura (tww cuando WR=0) tRD: es el tiempo que el 8255 requiere para enviar un dato valido a su bus de datos. El p lee el bus de datos después de 205 ns (o 335 ns en modo máximo) tMRD: es el tiempo que le da el up al dispositivo para tener listo el dato. Para que haya una sincronización entre el p y el 8255 es indispensable que tMRD >= tRD si esto no se cumple se requiere solicitar un estado de espera al micro. Tww: tiempo requerido para escribir un dato en el 8255 tMW tiempo que el p proporciona para hacer una escritura tMW>=tww si esto no se cumple quiere decir que el tiempo que el micro le da al 8255 para escribir un dato no es suficiente y por lo tanto se requiere un estado de espera. Especificaciones de lectura escritura del 8255 8255A (ns) 8255A-5 (ns) tRD(tMRD) 250 200 tww(tMW) 400 300 ESTADOS DE ESPERA DEL 8255 CON EL 8086 MODO MINIMO SIN BUFFER CON BUFFER 8255A 1 1 8255A-5 0 1 ACTIVAR/DESACITVAR BIT 8086 modo min. 205 340 MODO SIN BUFFER 1 0 8086 modo max 335 175 MAXIMO CON BUFFER 1 0 Cuando se pone en 0 el bit 7 de la palabra de control del 8255, se indica que se realizará una operación de Activación/Desactivación de un bit. En este modo cualquier bit (solo uno a la vez) del puerto C puede ponerse a un 1 lógico o a un cero lógico. Una de las desventajas de este modo es que los bits del puerto C pueden ser cambiados individualmente sin cambiar ninguno de los demás. ESTO ES IMPORTANTE CUANDO EL PUERTO C ES USADO PARA CONTROLAR EL STATUS ON/OFF DE VARIOS DISPOSITIVOS EXTERNOS. El dispositivo conectado a PC4 puede ser encendido sin afectar el status de ningun otro dispositivo conectado en las otras 7 salidas. El modo de Activar/Desactivar bit también se presta para la fácil generación de pulsos de habilitar. Considerese la siguiente secuencia de instrucciones. LD A,00001001 OUT CTRL-PORT, A DEC A OUT CTRL-PORT, A La función de habilitar/Desactivar se usa en modo 1 y 2 para habilitar las salidas de interrupción. MODO 2 (Bus bidireccional de E/S controlado) Proporciona un medio para comunicación con un dispositivo periférico o estructura por un solo bus de 8 bits tanto transmitir como recibir datos (bus bidireccional de E/S). Se tienen señales de “Handshaking” para mantener una disiplina de flujo adecuada en una forma similar a la de modo 1. También se tienen funciones de generación de interrupción y de habilitar y deshabilitar. DEFINICION DE LAS FUNCIONES BASICAS DEL MODO 2 Se usa solo el grupo A Un puerto bus bidireccional de 8 bits (Puerto A) y 5 bits del puerto (puerto C) de control. Tanto entradas como salidas son Latcheadas. El puerto de control (puerto C) es usado para controlar e indicar el status del puerto Bus bidireccional de 8 bits. OPERACIONES DE SALIDA OBF (Output buffer Full) Indica que el buffer de salida está lleno. Se hace cero para indicar que la CPU escribió un dato en el puerto A. ACK (Acknowledge) Entrada de aviso que el dispositivo de salida lee el dato del puerto A. Con un cero en esta entrada se habilita el buffer tri-state de salida del puerto A para sacar el dato. Si es “uno”, el buffer de salida estará en estado de alta impedancia (tristate). INTE1 (Flip flop de habilitación de interrupción asociado con la salida OBF) es controlado por la función SET/RESET de PC6. OPERACIONES DE ENTRADA STB (Strobe input) Señal para habilitar entrada con un “cero” en esta entrada se carga el dato al latch de entrada. IBF (Input buffer full flip flop). Flip Flop que indica qie el buffer de entrada esta lleno. Un uno en esta salida le indica al periférico que un dato ha sido cargado en el latch de entrada. El periférico no debe mandar otro dato todavia. INTE2 (El flip flop de habilitación de interrupción asociado con IBF) es controlado con la función bit set/reset de PC4. LECTURA DE STATUS DE LA COMUNICACION En modo 0 el puerto C transfiere datos al periférico y recibe datos de el. Pero cuando se programa en modo 1 o 2, el puerto C se encarga de generar o aceptar señales de “handshaking” del y al dispositivo periférico.. De tal forma que leyendo el puerto C se le permite al programador probar o verificar el “status” de cada dispositivo periférico y cambiar el flujo del programa de acuerdo a eso. CARACTERISTICAS DE CARGA DEL 8255 El puerto B y el puerto C; tienen una capacidad para suministrar corriente hasta de 1mA en cada uno de los 8 bits de los buffers de salida) a 1.5 Volts. Esta característica permite al 8255 accionar directamente drivers tipo Darlington y Displays de alto voltaje que requieren esa fuente de corriente. COMO CONECTAR ELECTRICAMENTE EL 8255 CON EL Z80 Para habilitar el chip y seleccionar un puerto del 8255 habilitado: Ejemplo: Suponiendo que desearamos direccionar los puertos 10H a 13H. CODIGO DE SELECCION (para que Yo=0) A7 A6 A5 A4 A3 A2 A1 0 0 0 1 0 0 X Para habilitar el 74LS138 A0 X Dirección del puerto seleccionado Lectura = entrada de datos por el puerto Escritura = salida de datos El reset del 8255 es activo en “1” por eso se requiere el inversor. REGISTROS DE LECTURA Y ESCRITURA DEL 8255. Las direcciones de los cuatro registros de lectura / escritura del 8255 según nuestro ejemplo analizando son 10H, 11H, 12H, 13H. Terminales del Chip RD WR 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 Nombre del registro A1 0 0 0 0 1 1 1 1 A0 0 0 1 1 0 0 1 1 Escribir dato al puerto A Leer dato del puerto A Escribir dato al puerto B Leer dato del puerto B Escribir dato al puerto C Leer dato al puerto C Escribir palabra de control Dato ilegal Las direcciones de los puertos A y C siempre serán PARES ya que A0=0 Las direcciones de los puertos B y de control siempre serán IMPARES ya que A0=1. Ejemplo del MODO 0: Todos los puertos son salida con 80H. Se escribe la palabra de control LD A,80H OUT (13H),A Ya que se ha programado el puerto podemos escribir a cualquier puerto usando la instrucción OUT del Z80. Ejemplo: Deseamos escribir 23H a las salidas del puerto A, 41H al puerto B y 93H al puerto C. LD A,23H OUT (10H),A LD A,41H OUT (11H),A LD A,93H OUT (12H),A BIT D1=0 habilita el puerto C como un puerto de salida. BIT D0=0 pone los cuatro bits más bajos del puerto C como salida. MODO 1 DE OPERACION PARA EL 8255 La idea general de este modo de operación es: El dispositivo periférico eléctricamente informa al 8255 que el dato está listo ya sea para ser enviado o para ser tomado. Las líneas de handshake son usados para proporcionar esta infromación. MODO 2 DE OPERACIÓN DEL 8255 El dispositivo puede usar el puerto A como un puerto bidireccional de datos. Esto es, que las 8 líneas del puerto A pueden transmitir datos al dispositivo y recibir del mismo. CARACTERISTICAS ELECTRICAS DE LOS PUERTOS Los 3 puertos tienen una especificación de corriente IOL de 1.7 mA y una especificación de IOH de 200 uA. Esto significa que puede manejar directamente una carga TTL estandar o 4 cargas TTL LS. dibujo Las 8 lineas de los puertos B y C pueden suministrar hasta 1 mA a 1.5 Volts. Esto es útil para manejar relevadores de estado solido y transistores manejadores. Pero no son capaces de absorver la corriente típica de un Led de 10 a 20 mA. Para este fin se deberá usar un buffer TTL. dibujo Velocidad de operación del 8255 Existen dos versiones de 8255 de acuerdo a sus velocidades de operación y estos se diferencian de la siguiente forma. El 8255A y el 8255A-5 La diferencia entre estos dos está en cuanto tiempo tardan en preparar su dato valido cuando se le solicita una lectura (RD=0) tRD y cuandto tiempo requiere para hacer una escritura (tww cuando WR=0) dibujo tRD: es el tiempo que el 8255 requiere para enviar un dato valido a su bus de datos. El up lee el bus de datos después de 205 ns (o 335 ns en modo máximo) tMRD: es el tiempo que le da el up al dispositivo para tener listo el dato. Para que haya una sincronización entre el up y el 8255 es indispensable que tMRD >= tRD si esto no se cumple se requiere solicitar un estado de espera al micro. Tww: tiempo requerido para escribir un dato en el 8255 tMW tiempo que el up proporciona para hacer una escritura tMW>=tww si esto no se cumple quiere decir que el tiempo que el micro le da al 8255 para escribir un dato no es suficiente y por lo tanto se requiere un estado de espera. tRD(tMRD) tww(tMW) 8255A 8255A-5 Especificaciones de lectura escritura del 8255 8255A (ns) 8255A-5 (ns) 8086 modo min. 8086 modo max 250 200 205 335 400 300 340 175 ESTADOS DE ESPERA DEL 8255 CON EL 8086 MODO MINIMO MODO SIN BUFFER CON BUFFER SIN BUFFER 1 1 1 0 1 0 ACTIVAR/DESACITVAR BIT MAXIMO CON BUFFER 1 0 Cuando se pone en 0 el bit 7 de la palabra de control del 8255, se indica que se realizará una operación de Activación/Desactivación de un bit. En este modo cualquier bit (solo uno a la vez) del puerto C puede ponerse a un 1 lógico o a un cero lógico. Una de las desventajas de este modo es que los bits del puerto C pueden ser cambiados individualmente sin cambiar ninguno de los demás. ESTO ES IMPORTANTE CUANDO EL PUERTO C ES USADO PARA CONTROLAR EL STATUS ON/OFF DE VARIOS DISPOSITIVOS EXTERNOS. El dispositivo conectado a PC4 puede ser encendido sin afectar el status de ningun otro dispositivo conectado en las otras 7 salidas. El modo de Activar/Desactivar bit también se presta para la fácil generación de pulsos de habilitar. Considerese la siguiente secuencia de instrucciones. LD A,00001001 OUT CTRL-PORT, A DEC A OUT CTRL-PORT, A La función de habilitar/Desactivar se usa en modo 1 y 2 para habilitar las salidas de interrupción. MODO 2 (Bus bidireccional de E/S controlado) Proporciona un medio para comunicación con un dispositivo periférico o estructura por un solo bus de 8 bits tanto transmitir como recibir datos (bus bidireccional de E/S). Se tienen señales de “Handshaking” para mantener una disiplina de flujo adecuada en una forma similar a la de modo 1. También se tienen funciones de generación de interrupción y de habilitar y deshabilitar. DEFINICION DE LAS FUNCIONES BASICAS DEL MODO 2 Se usa solo el grupo A Un puerto bus bidireccional de 8 bits (Puerto A) y 5 bits del puerto (puerto C) de control. Tanto entradas como salidas son Latcheadas. El puerto de control (puerto C) es usado para controlar e indicar el status del puerto Bus bidireccional de 8 bits. OPERACIONES DE SALIDA OBF (Output buffer Full) Indica que el buffer de salida está lleno. Se hace cero para indicar que la CPU escribió un dato en el puerto A. ACK (Acknowledge) Entrada de aviso que el dispositivo de salida lee el dato del puerto A. Con un cero en esta entrada se habilita el buffer tri-state de salida del puerto A para sacar el dato. Si es “uno”, el buffer de salida estará en estado de alta impedancia (tri-state). INTE1 (Flip flop de habilitación de interrupción asociado con la salida OBF) es controlado por la función SET/RESET de PC6. OPERACIONES DE ENTRADA STB (Strobe input) Señal para habilitar entrada con un “cero” en esta entrada se carga el dato al latch de entrada. IBF (Input buffer full flip flop). Flip Flop que indica qie el buffer de entrada esta lleno. Un uno en esta salida le indica al periférico que un dato ha sido cargado en el latch de entrada. El periférico no debe mandar otro dato todavia. INTE2 (El flip flop de habilitación de interrupción asociado con IBF) es controlado con la función bit set/reset de PC4. LECTURA DE STATUS DE LA COMUNICACIÓN En modo 0 el puerto C transfiere datos al periférico y recibe datos de el. Pero cuando se programa en modo 1 o 2, el puerto C se encarga de generar o aceptar señales de “handshaking” del y al dispositivo periférico.. De tal forma que leyendo el puerto C se le permite al programador probar o verificar el “status” de cada dispositivo periférico y cambiar el flujo del programa de acuerdo a eso. CARACTERISTICAS DE CARGA DEL 8255 El puerto B y el puerto C; tienen una capacidad para suministrar corriente hasta de 1mA en cada uno de los 8 bits de los buffers de salida) a 1.5 Volts. Esta característica permite al 8255 accionar directamente drivers tipo Darlington y Displays de alto voltaje que requieren esa fuente de corriente. COMO CONECTAR ELECTRICAMENTE EL 8255 CON EL Z80 Para habilitar el chip y seleccionar un puerto del 8255 habilitado: Ejemplo: Suponiendo que desearamos direccionar los puertos 10H a 13H. CODIGO DE SELECCION (para que Yo=0) A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 1 0 0 X X Para habilitar el 74LS138 Dirección del puerto seleccionado Código para selección del 8255 PARA HABILITAR LA LECTURA Y ESCRITURA DE UN PUERTO SELECCIONADO PREVIAMENTE Lectura= entrada de datos por el puerto Escritura=salida de datos El reset del 8255 es activo en “1” por eso se requiere el inversor. REGISTROS DE LECTURA Y ESCRITURA DEL 8255. Las direcciones de los cuatro registros de lectura / escritura del 8255 según nuestro ejemplo analizando son 10H, 11H, 12H, 13H. Terminales del Chip Nombre del registro RD WR A1 A0 1 0 0 0 Escribir dato al puerto A 0 1 0 0 Leer dato del puerto A 1 0 0 1 Escribir dato al puerto B 0 1 0 1 Leer dato del puerto B 1 0 1 0 Escribir dato al puerto C 0 1 1 0 Leer dato al puerto C 1 0 1 1 Escribir palabra de control 0 1 1 1 Dato ilegal Las direcciones de los puertos A y C siempre serán PARES ya que A0=0 Las direcciones de los puertos B y de control siempre serán IMPARES ya que A0=1. Ejemplo del MODO 0: Todos los puertos son salida con 80H. Se escribe la palabra de control LD A,80H OUT (13H),A Ya que se ha programado el puerto podemos escribir a cualquier puerto usando la instrucción OUT del Z80. Ejemplo: Deseamos escribir 23H a las salidas del puerto A, 41H al puerto B y 93H al puerto C. LD A,23H OUT (10H),A LD A,41H OUT (11H),A LD A,93H OUT (12H),A BIT D1=0 habilita el puerto C como un puerto de salida. BIT D0=0 pone los cuatro bits más bajos del puerto C como salida. MODO 1 DE OPERACION PARA EL 8255 La idea general de este modo de operación es: El dispositivo periférico eléctricamente informa al 8255 que el dato está listo ya sea para ser enviado o para ser tomado. Las líneas de handshake son usados para proporcionar esta infromación. MODO 2 DE OPERACIÓN DEL 8255 El dispositivo puede usar el puerto A como un puerto bidireccional de datos. Esto es, que las 8 líneas del puerto A pueden transmitir datos al dispositivo y recibir del mismo.