Ejemplo de decodificación I/O• En el tercer CM de las instrucciones “IN dir” y “OUT dir”, la parte baja y la parte alta del bus
de direcciones contienen la misma información (la dirección de 8-bits del puerto).
• Se debe tener en cuenta esto al analizar el siguiente decodificador de direcciones:
Ejemplo de decodificación I/O
Ciclos de máquinainstrucción OUT:
Dirección A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Puerto de Entrada 1 1 1 1 X 1 0 0 1 1 1 1 X 1 0 0Puerto de Salida 1 1 1 1 X 0 0 1 1 1 1 1 X 0 0 1
Parte baja bus de direcciones
(dirección del puerto)
Parte alta bus de direcciones (idem)
Familia de chips diseñados para el P 8085
8212:Latch de 8-bits (usado para des-multiplexar el bus de direcciones/datos)
8355 / 8755:2K bytes ROM/EPROM2 puertos de 8 bits (configurables como I/O)
8155 / 8156:256 bytes de RAM estatica2 puertos de 8 bits1 puerto de 6 bits1 timer de 14 bits
8253: 3 timers independientes de 16-bits
8279:controlador de display/teclado
Existen otros chips de la familia 8XXX con mas funciones: comunicacion serial (8251), paralela (8255), controlador de floppy disk (8271), crt, interrupciones, etc.
El P Intel 8085: sistema mínimo con chips de la familia
Chip intel 8155/8156Contenido:
• 256 bytes de SRAM (256x8)• 2 puertos de 8 bits (PA y PB)• 1 puerto de 6 bits (PC)• 1 timer programable de 14 bits
Terminales y diagrama de bloques:
Características especiales:
• Posee Latch interno para la parte baja del bus de direcciones.
• Decodificación interna de la línea IO/M.
Chip intel 8155/8156Diagrama interno:
Ejemplo: determinación de la dirección
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0Dirección (en el mapa de IO)
(IO/M=1)Puertos
0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 20h Control (W) / Status (R)
0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 21h PA
0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 22h PB
0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 1 23h PC
0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 24h Timer (LSB)
0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 25h Timer (MSB)
2h
Ejemplo: determinación de la dirección
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0Dirección (en el mapa de Memoria)
(IO/M=0)0 0 1 0 0 X X X 0 0 0 0 0 0 0 0 2000h SRAM del 8155
(256x8)0 0 1 0 0 X X X 1 1 1 1 1 1 1 1 20FFh
2h
Chip intel 8155/8156Registro de control:
Ejemplo: displays de 7 segmentosProblema:
• Conectar dos displays de 7 segmentos usando un puerto del 8155.
• Escribir las instrucciones necesarias para inicializar y escribir un dato en los displays.
Chip intel 8155: el Timer
• Se trata de un contador descendente de 14-bits. Cuenta los pulsos de la entrada TIMER IN.
• Entrega una onda cuadrada o un pulso, cuando se alcanza el cero (Terminal Count).
• Para programar el timer, primero se debe cargar el registro de longitud de cuenta (Count Length) de dos bytes.
• En el ejemplo anterior sería en las direcciones de I/O 24h (LSB) y 25h (MSB).
• Los bits 0-13 son la longitud de cuenta, mientras que los bits 14 y 15 determinan el modo de funcionamiento del timer:
LSBT7 T6 T5 T4 T3 T2 T1 T0 (24h)
MSBM2 M1 T13 T12 T11 T10 T9 T8 (25h)
Chip intel 8155: el Timer
Modos del Timer del 8155:
Modo 0: En este modo, la salida del timer permanece en alto por la primer mitad del conteo y va a bajo en la segunda mitad, entregando asi un ciclo de onda cuadrada. La duración del pulso esta determinada por la longitud de cuenta y por la frecuencia de clock.
Modo 1: En este modo, el valor inicial de cuenta es recargado de forma automatica al final de cada cuenta, entragando asi una onda cuadrada contínua.
Modo 2: En este modo, un pulso único es entregado al final del conteo (con una duración de un clock).
Modo 3: Similar al Modo 2, salvo que el conteo inicial es recargado al final para proveer un tren contínuo de pulsos.
N = Longitud de cuenta
Chip intel 8155: el Timer
Registro de control:
Ejemplo: “dividir la frecuencia de entrada por 3600”
3600 = E10h
LSB = 10h = 00010000b (parte baja)MSB = 4Eh = 01001110b (parte alta, incluye modo)
INICIO: MVI A,10hOUT 24h ; cargo LSB
MVI A,4EhOUT 25h ; cargo MSB
MVI A,1100XXXXbOUT 20h ; empieza a contar…
HLT