Teoría 10p1

Anuncio
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
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
0
Puerto de Salida 1
1
1
1 X 0
0
1
1
1
1
1 X 0
0
1
Parte alta bus de
direcciones
(idem)
Ciclos de máquina
instrucción OUT:
Parte baja bus de
direcciones
(dirección del puerto)
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/EPROM
2 puertos de 8 bits (configurables como I/O)
8155 / 8156:
256 bytes de RAM estatica
2 puertos de 8 bits
1 puerto de 6 bits
1 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/8156
Contenido:
•
•
•
•
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/8156
Diagrama interno:
Ejemplo: determinación de la dirección
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Dirección (en el mapa de IO)
Puertos
(IO/M=1)
20h
Control (W) / Status (R)
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
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
0
0
1
0
0
X
X
X
0
0
0
0
0
0
0
0
Dirección (en el mapa de Memoria)
(IO/M=0)
2000h
0
0
1
0
0
X
X
X
1
1
1
1
1
1
1
1
20FFh
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
2h
SRAM del 8155
(256x8)
Chip intel 8155/8156
Registro de control:
Ejemplo: displays de 7 segmentos
Problema:
• 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:
T7 T6 T5
LSB
T4 T3 T2 T1 T0
(24h)
M2 M1 T13
MSB
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
MSB = 4Eh = 01001110b
INICIO:
(parte baja)
(parte alta, incluye modo)
MVI
OUT
A,10h
24h
; cargo LSB
MVI
OUT
A,4Eh
25h
; cargo MSB
MVI
OUT
A,1100XXXXb
20h
; empieza a contar…
HLT
Descargar