Capitulo III - Interfaz Paralela
Capitulo III - Interfaz Paralela
Capitulo III - Interfaz Paralela
Instrucciones de E/S
El conjunto de instrucciones contiene un tipo de instruccin que transfiere
informacin a un dispositivo de E/S (OUT), y otra para leer informacin
desde un dispositivo de E/S (IN)
Tambin se proporcionan instrucciones (INS y OUTS) encontradas en
todas las versiones excepto en los 8086/8088 para transferir cadenas de
datos entre memoria y un dispositivo de E/S.
Tanto instruccin IN como la instruccin OUT transfieren datos entre un
dispositivo de E/S y el acumulador del microprocesador (AL, AX o EAX).
La direccin de E/S se almacena en el regsitro DX como una direccin de
16 bits de E/S, o en el byte (p8) inmediatamente posterior al cdigo de
operacin como una direccin de 8 bits de E/S.
Intel denomina a la forma de 8 bits (p8) como una direccin fija.
La direccin de E/S de 16 bits en DX es llamada direccin variable,
porque se almacena en DX y despus se utiliza para direccionar el
dispositivo de E/S.
Microcomputadores e Interfaces
Esto significa que a las primeras 256 direcciones de puerto de E/S (00h
a FFh) se accede por las instrucciones de E/S de direccin fija, como
variable, pero a cualquier direccin de E/S desde 0100h a la FFFFh se
accede solamente por la direccin de E/S variable.
Microcomputadores e Interfaces
Ancho
datos
IN AL,p8
IN AX,p8
16
IN AL,DX
IN AX,DX
16
OUT p8,AL
OUT p8,AX
16
OUT DX,AL
OUT DX,AX
16
Funcin
Microcomputadores e Interfaces
E/S Aislada.
Microcomputadores e Interfaces
FFFFF
FFFFF
E/S
1M x 8
FFFF
64K x 8
00000
00000
0000
E/S aislada
Espacio de E/S
Microcomputadores e Interfaces
E/S ubicada en
memoria
6
Microcomputadores e Interfaces
Microcomputadores e Interfaces
10 K
BUS
de
D ato s
1Y1
1Y2
1Y3
1Y4
2Y1
2Y2
2Y3
2Y4
1A
1A
1A
1A
2A
2A
2A
2A
1
2
3
4
1
2
3
4
1G
2G
74ALS244
Microcomputadores e Interfaces
10
11
Microcomputadores e Interfaces
12
330
U
D
D
D
D
D
D
D
D
Bus
de
D a to s
Q
Q
Q
Q
Q
Q
Q
Q
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
OC
CLK
>
74ALS374
SEL
Microcomputadores e Interfaces
13
Microcomputadores e Interfaces
14
0000
0002
0004
0006
0008
000A
IN AL,BUSY
TEST AL,BUSY_BIT
JNE 0000
MOV AL,BL
OUT PRINTER,AL
END
Microcomputadores e Interfaces
15
DB25
CENT36
Microcomputadores e Interfaces
16
La nica diferencia est en que para una memoria de usan las lneas de
direccin A19-A0, mientras que en E/S aislada se usa slo A15-A0
17
G
G
G
1
2A
2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
74ALS138
Microcomputadores e Interfaces
18
Microcomputadores e Interfaces
19
A6
A5
A4
A3
A2
A1
A0
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
DIRECCION
F0
F1
F2
F3
F4
F5
F6
F7
U
A0
A1
A2
A4
A3
A
B
C
G
G
G
1
2A
2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
F0'
F1'
F2'
F3'
F4'
F5'
F6'
F7'
74ALS138
A5
A6
A7
Microcomputadores e Interfaces
20
21
Microcomputadores e Interfaces
22
Microcomputadores e Interfaces
23
CONTROL
D0
D1
D2
D3
D4
D5
D6
D7
PA
PA
PA
PA
PA
PA
PA
PA
RD
W R
A0
A1
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
P U E R T A -B
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
P U E R T A -C
CS
RESET
82C55
VCC
GND
1
2
3
4
PUERTA - A
(PC7 PC4)
GRUPO B
PUERTA B (PB7 PB0)
Mitad Inferior PUERTA C
(PC3 PC0)
A1
A0
Funcin
Puerto A
Puerto B
Puerto C
Registro de Comando
Microcomputadores e Interfaces
24
Vcc
Terminal de polarizacin positivo de + 5 volts C.C.
GND
Terminal de tierra del circuito integrado.
D7 D0
Bus de datos de lneas bidireccionales con lgica de tres estados
RESET
Un 1 lgico en esta terminal borra el contenido del registro de
control y todas las puertas son puestas a modo 0 y en
configuracin de entrada.
Microcomputadores e Interfaces
25
CS
Chip Select. Un 0 lgico puesto en este terminal habilita la
comunicacin entre el 82C55 y el Bus de Datos.
RD
Terminal de control de Lectura. Una seal de nivel 0 lgico
puesto en este terminal permite leer el estado de la PPI o los
datos enviados va el Bus de Datos al acumulador del
microprocesador.
WR
Terminal de control de Escritura. Una seal de nivel 0 lgico
puesto en este terminal permite cargar la programacin y enviar
datos va el Bus de Datos a la PPI desde el acumulador del
microprocesador.
Microcomputadores e Interfaces
26
A1 - A0
Terminales de direccin. Estas seales de entrada, en conjunto
con las seales de control RD y WR, controlan la seleccin de
una de las tres puertas o del registro de control de la PPI. A1 y
A0, son a menudo conectados a los bits menos significativos del
Bus de Direcciones del Microprocesador.
PA7 PA0
Puerta A. Posee 8 lneas que se configuran como entradas o
salidas.
PB7 PB0
Puerta B. Posee 8 lneas que se configuran como entradas o
salidas.
PC7 PC0
Puerta C. Posee 8 lneas que se configuran como entradas o
salidas.
Microcomputadores e Interfaces
27
A0
RD
WR
CS
OPERACION
ERROR
Microcomputadores e Interfaces
28
GRUPO B
Puerto C (PC3 PC0)
1 = entrada
0 = salida
Puerto B
Activa la
opcin de Bit
Set/Reset
1 = entrada
0 = salida
MODO
0 = Modo 0
1 = inactivo
1 = Modo 1
GRUPO A
0 = activo
0 = salida
Puerto A
1 = entrada
0 = salida
MODO
00 = Modo 0
01 = Modo 1
1X = Modo 2
Microcomputadores e Interfaces
29
0
Establecimiento/restauracin de
bit
1 = establece
0 = restaura
Microcomputadores e Interfaces
1
30
31
32
33
34
35
36
Microcomputadores e Interfaces
37
Microcomputadores e Interfaces
38
Funcin
DIR
Puerto A
Puerto B
Puerto C
Registro de Comando
Microcomputadores e Interfaces
39
Microcomputadores e Interfaces
40
40
39
38
37
36
35
34
33
IR
IR
IR
IR
IR
IR
IR
IR
7
6
5
4
3
2
1
0
IN T E R F
A Z D EL
M IC R O P
.
32
31
30
29
28
27
26
1
CK 1
OU T 1
OU T 2
GA T 2
GA T 1
PC LK
VC C
GN D
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
D IR
VC C
20
18
17
16
15
LS245
14
13
12
11
19
D IS P L A Y D E L E D S D E L D IG IL A B
GN D
10
22
23
24
25
Microcomputadores e Interfaces
41
Programar 82C55
Modo 0
Puerta B de salida
Mueve dato a AL
Escribe AL a puerta B
Fin
Microcomputadores e Interfaces
42
Microcomputadores e Interfaces
43
+ 5 v C .C
40
39
38
37
36
35
34
33
IR
IR
IR
IR
IR
IR
IR
IR
7
6
5
4
3
2
1
0
IN T E R F A
Z D EL
M IC R O P .
32
31
30
29
28
27
26
1
C K 1
OU T 1
OU T 2
GA T 2
GA T 1
PC LK
VC C
GN D
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
D IR
VC C
16
15
13
12
11
G
14
19
18
17
LS245
20
D E L D IG IL A B
10
GN D
22
23
24
25
Microcomputadores e Interfaces
44
Programar 82C55
Modo 0
Puerta B de entrada
Fin
Microcomputadores e Interfaces
45
Microcomputadores e Interfaces
46
PA0 2
PA1 3
PA2 4
PA3 5
PA4 6
PA5 7
PA6 89
PA7
PB0 10
PB1 11
PB2 12
PB3 13
PB4 14
PB5 15
PB6 16
32 CK1 PB7 17
31 OUT2
30 OUT1 PC0 18
29 GAT2 PC1 19
28 GAT1 PC2 20
27 PCLK PC3 21
26 VCC PC4 22
1 GND PC5 23
PC6 24
PC7 25
DECODER 7448
1 DIR VCC 20
2 A1
B1 18
3 A2
B2 17
4 A3
B3 16
5 A4 245 B4 15
6 A5
B5 14
7 A6
B6 13
8 A7
B7 12
9 A8
B8 11
19 EN GND 10
MAN74A
MAN74A
Gnd
Gnd
abcdefg.
abcdefg.
1B
VCC 16
2C
f 15
3 LT
g 14
4 RGO
a 13
5 RGI
b 12
6D
c 11
7A
d 10
8 NC
e9
DECODER 7448
1B
VCC 16
2C
f 15
3 LT
g 14
4 RGO
a 13
5 RGI
b 12
6D
c 11
7A
d 10
8 NC
e9
Microcomputadores e Interfaces
47
Diagrama de Flujo
Borre AX
Programar 82C55
Modo 0
Puerta A de entrada
Puerta B de salida
Lee puerta A
PA0 = 1
Escribe AL a puerta B
Retardo de tiempo
Microcomputadores e Interfaces
48
XOR AX,AX
MOV AL,90
OUT 13,AL
IN AL,10
TEST AL,01
JNE 0406
INC AH
MOV AL,AH
OUT 11,AL
MOV CX,0010
MOV BX,0500
DEC BX
JNE 0419
LOOP 0416
JMP 0406
HLT
; borra AX
; carga AL con byte de control
; saca byte de control a puerta Control
; lee puerta A
; chequea estado del switch
; si switch est abierto rechequea
; AH=AH+1
; escribe a puerta B
; pone retardo de tiempo
; BX=BX-1
; salta a direccin 0419 si BX0
; ejecuta ciclo si CX0
; salta a direccin 0406
; detiene programa
Microcomputadores e Interfaces
49
Obliga a que los puertos A y/o B del 82C55 funcionen como dispositivos
de entrada con registro. Esto permite almacenamiento de datos externos
en el puerto hasta que el microprocesador est listo para recuperarlos.
El puerto C tambin es empleado en el modo de operacin 1, no para
datos, sino para seales de control o de respuesta que ayudan en la
operacin de los puertos ya sea A o B, o ambos como puertos de
entrada controlados por pulsos.
El puerto de entrada controlado por pulsos captura datos de las
terminales del puerto cuando se activa la seal de reloj STB.
El puerto captura los datos durante la transicin de 0 a 1 del pulso STB
La seal STB, activa las seales de buffer de entrada lleno IBF y de
solicitud de interrupcin INTR
Una vez que el microprocesador reconoce, por medio de software (IBF)
o de hardware (INTR) que un dato est almacenado en el puerto, ejecuta
una instruccin IN para leer el puerto (RD)
Al leer el puerto, se restituyen a sus estados inactivos tanto IBF e INTR.
Microcomputadores e Interfaces
50
PC7, PC6
Terminales 7 y 6 de E/S, son de propsitos generales y disponibles.
Microcomputadores e Interfaces
51
Puerto A
INTE
A
RD
PC4
STBA
PC5
PC3
Puerto B
INTE
B
PC2
STBB
IBFA
PC1
IBFB
INTRA RD
PC0
INTRB
E/S
PC6+7
Byte de Control
Byte de Control
D7
D6 D5 D4 D3 D2 D1 D0
D7
D6 D5 D4 D3 D2 D1 D0
Microcomputadores e Interfaces
X
52
Buffer lleno
IBF
INTR
Interrupcin
solicitada
RD
PUERTO
Microcomputadores e Interfaces
53
AL,BC
DX,13
DX,AL
DX,12
AL,DX
AL,00100000
READ_C
DX,10
AL,DX
[0200],AL
Microcomputadores e Interfaces
54
55
OBF
Es una salida que asume el estado bajo siempre que los datos
sean escritos (OUT) al registro de los puertos A o B. Esta seal
es restituda a 1 lgico siempre que el pulso ACK es retornado
desde un dispositivo externo.
ACK
La seal de reconocimiento ocasiona que la terminal OBF
regrese al nivel lgico de 1. La seal ACK indica que el
dispositivo externo recibio el dato.
INTR
La solicitud de interrupcin es una seal que freceuntemente
interrumpe al microprocesador cuando el dispositivo externo
recibe el dato por medio de la seal ACK. Esta terminal es
calificada por el bit interno de habilitacin de interrupcin (INTE).
Microcomputadores e Interfaces
56
INTE
La seal de habilitacin de interrupcin no es una entrada ni
salida; es un bit interno programado para habilitar o deshabilitar
la terminal INTR. El bit INTE A es programado como PC6 e INTE
B es programado como PC2.
PC5 PC4
Las terminales 4 y 5 del puerto C son terminales de E/S de
propsito general. El comando de establecimiento y restauracin
puede ser usado para controlar estas terminales.
Microcomputadores e Interfaces
57
Puerto B
Puerto A
INTE
A
RD
PC7
OBFA
PC6
PC3
INTE
B
PC1
OBFB
ACKA
PC2
ACKB
INTRA RD
PC0
INTRB
E/S
PC4+5
Byte de Control
Byte de Control
D7
D6 D5 D4 D3 D2 D1 D0
D7
D6 D5 D4 D3 D2 D1 D0
Microcomputadores e Interfaces
X
58
ACK
PUERTO
Microcomputadores e Interfaces
59
AL,0BC
DX,13
DX,AL
DX
AL,DX
AL,00000010
READ_C
DX,11
AL,[0200]
DX, AL
Microcomputadores e Interfaces
60
ENTRADA
SALIDA
PC0
INTRB
INTRB
PC1
IBFB
OBFB
PC2
STBB
ACKB
PC3
INTRA
INTRA
PC4
STBA
I/O
PC5
IBFA
I/O
PC6
I/O
ACKA
PC7
I/O
OBFA
Microcomputadores e Interfaces
61
PA7 PA0
PC4
STBA
PC7
OBFA
PC5
IBFA
PC6
ACKA
PC3
INTRA
PC3
INTRA
PC6 PC7
I/O
PC4 PC5
PB7 PB0
I/O
PB7 PB0
PC1
OBFB
PC2
STBB
PC2
ACKB
PC1
IBFB
PC0
INTRB
PC0
INTRB
Microcomputadores e Interfaces
62
P A R T ID A
C O N F IG U R A R P P I
M O D O 0
P O R T B S A L ID A
FLAG C O NTR O L D E
M O TO R
S A L ID A P O R T B
R E T A R D O D E T IE M P O
G UAR D A AX E N S TAC K
LE E TE C LAD O
N
TE C LAD O
Y
T E C L A "G "
T E C L A "S "
Y
Y
M O D O M O V IM IE N T O
M O D O P AR AD A
P O P AX
N
FLAG ?
Y
Microcomputadores e Interfaces
R O R A L ,0 1
63
0000:0400
MOV AL, 80
;
carga acumulador con
programacin de PPI en modo 0
0000:0402
OUT 13 , AL
;
escribe byte a puerta de control
0000:0404
MOV BL , 02
;
carga Flag en BL
0000:0406
MOV AL , 66
;
carga Acumulador con cdigo de
rotar.
0000:0408
OUT 11 , AL
;
escribe byte del Acumulador a
puerta B
0000:040A
CALL 042E
;
llama a rutina de retardo de tiempo
0000:040D PUSH
AX ;
guarda contenido de registro AX en Stack
0000:040E
IN
AL , 21
;
lee Registro de Estado del Teclado
0000:0410
TEST AL , 0F
;
verifica si hay tecla presionada
0000:0413
JZ
0423
;
si no hay tecla presionada salta a la
direccin 0423
0000:0415
IN
AL , 20
;
lee registro de datos del teclado
0000:0417
CMP AL , D0
;
verifica si es tecla = G
0000:0419
JNZ
041D
;
si no es tecla =G, salte a 041D
0000:041B
MOV BL , 01
;
ponga Flag para rotacin del motor
0000:041D CMP
AL , DC
;
verifica si es tecla = S
0000:041F
JNZ
0423
;
si no es tecla =S, salte a 0423
0000:0421
MOV BL , 02
;
ponga Flag para detener al motor
0000:0423
POP AX ;
recupera de Stack, contenido AX
0000:0424
CMP BL , 01
;
verifica Flag de rotacin del motor
0000:0427
JNZ
0408
;
si no Flag, salta a 0408
0000:0429
ROR AL , 01
;
rota byte de Al un bit a la derecha
0000:042B
JMP
0408
;
salta a direccin 0408
e rutina
Interfaces
64
0000:042E
MOV CX , Microcomputadores
0200 ;
de retardo de tiempo
0000:0431
NOP
0400 MOV
AL, 80
MOV
BL, 01
041D CMP
AL, DC
OUT
13 , AL
MOV
BL , 02
JNZ
0423
MOV
AL , 66
MOV
BL, 02
0408 OUT
11 , AL
CALL
AX
CMP
BL, 01
PUSH AX
JNZ
0408
IN
AL , 21
ROR
AL, 01
TEST
AL , 0F
JMP
JZ
0423
042E MOV
IN
AL , 20
0431 NOP
CMP
AL , D0
JNZ
042E
0423 POP
041D
LOOP
0408
CX, 0200
0431
RET
Microcomputadores e Interfaces
65
AL,80
13,AL
BL,01
AL,66
11,AL
AX
AL,21
TEST
041C
AL,20
AL,DD
0426
AL,D7
0420
AX
JMP
AX
AL,01
0408
CX,00C8
AL,01
11,AL
CALL
0429
0408
CX
CX,0200
;
escribe byte a puerta de control
;
carga Flag en BL
;
carga Acumulador con cdigo a rotar
;
escribe byte a puerta B
;
guarda registro AX en Stack
;
lee registro de teclado
AL,0F
;
verifica si hay tecla presionada
;
no tecla presionada salta a 041C
;
lee registro de datos del teclado
;
verifica si es tecla = T
;
si no es tecla =T, salte a 0426
;
verifica si es tecla = N
;
si no es tecla =N, salte a 0420
;
recupera de Stack, contenido AX
0408
;
;
recupera de Stack, contenido AX
;
rota Al un bit a la derecha
;
;
pone contador en CX
;
rota Al un bit a la derecha
;
0435
;
llama rutina de retardo
;
;
;
guarda registro CX en stack
;
pone contador en CX
;
;
; Microcomputadores
recupera e
deInterfaces
Stack, contenido CX
;
retorno de instruccin CALL
0439
CX
RET
66
0408
MOV
AL, 80
OUT
POP
AX
13 , AL
ROR
AL, 01
MOV
BL , 01
JMP
0408
MOV
AL , 66
0426
MOV
CX, 00C8
OUT
11 , AL
0429
ROR
AL, 01
PUSH
AX
OUT
11, AL
IN
AL , 21
CALL
0435
TEST
AL , 0F
LOOP
0429
JZ
041C
JMP
IN
AL , 20
CMP
AL , DD
JZ
CMP
JZ
041C POP
JMP
0420
0426
AL, D7
0435
0439
0408
PUSH
CX
MOV
CX, 0200
NOP
LOOP
0439
0420
POP
CX
AX
RET
0408
HLT
Microcomputadores e Interfaces
67
Microcomputadores e Interfaces
68
INTR
OBF
Buffer de salida lleno es una salida que indica que el buffer de salida
contiene un dato para el bus bidireccional.
ACK
STB
69
IBF
Buffer de entrada lleno es una salida utilizada para indicar que el
buffer de entrada contiene un dato para el bus bidireccional
externo.
INTE
Habilitacin de interrupcin son bist internos (INTE1 e INTE2)
que habilitan la terminal INTR. El estado de la terminal INTR es
controlado por medio de los bits PC6 (INTE1) y PC4 (INTE2) del
puerto C.
PC2, PC1 Y PC0
Microcomputadores e Interfaces
70
PC 3
INTR
PUERTO A
PC7
OBF
IN T E
1
PC6
ACK
IN T E
2
PC4
STB
PC5
IB F
PC2 - PC0
E/S
Microcomputadores e Interfaces
71
IB F
PORT A
RD
D a t o a lm a c e n a d o e n e l p u e rt o A
D a t o d e s a lid a ( O U T ) a l p u e rt o A
D a t o le d o d e l p u e rt o A
D a to d e e n tra d a (IN ) d e s d e e l p u e rto A
Microcomputadores e Interfaces
72