Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Periféricos en paralelo
2.1 Introducción
Para acceder a los recursos de la computadora desde el exterior de la misma se puede hacer de dos
maneras: i) de forma paralela y ii) de forma serial. En este capítulo veremos como acceder a los
recursos de la computadora utilizando comunicaciones en paralelo. Cuando decimos recursos, nos
referimos a la memoria de la computadora, a los registros del µProcesador entre otros.
Intel nos proporciona el PPI (Programable Pararell Interface) para conectar la computadora con el
mundo exterior. El PPI es un chip de 40 patitas que nos permite crear tres puertos de E/S, cada
uno de ocho bits o crear dos puertos de comunicaciones half duplex, cada uno de ocho bits o crear
un puerto de comunicaciones full duplex y otro de comunicaciones half duplex, cada uno de ocho
bits.
D7 − D0 P A7 − P A0
PA Grupo A
RD P C7 − P C4
WR PB
A1 PC PPI-8255
A0
Control
Reset P C3 − P C0
7 0 Grupo B
CS P B7 − P B0
En la figura 2.1 se ve el esquema del PPI. Consta de 3 puertos de E/S en paralelo, a los que se
denominan PA, PB y PC. Cada una de estos puertos es de 8 bits. Las 8 líneas de la puerta PC se
1
2.3. MODO 0 2
dividen en 2 partes de 4 bits. Estas dos partes permiten formar dos grupos. Un grupo está formado
por PA+PCH y el otro grupo esta formado por PB+PCL. En el grupo PA+PCH, PA es el canal
de datos y PCH es el canal de control. En el grupo PB+PCL, PB es el canal de datos y PCL es el
canal de control.
El 8255 dispone de 4 registros, cada uno de 8 bits. Tres se dedican a almacenar datos que entran o
salen de los puertos PA, PB y PC, el cuarto registro se dedica a funciones de control y programación.
Programando este registro se configuran los puertos para que funcionen en uno de tres modos. El
modo 0 nos permitirá disponer de tres puertos de E/S. En el modo 1 los puertos PA y PB
pueden funcionar con comunicaciones half duplex y en modo 2 el puerto PA puede funcionar con
comunicaciones full duplex. En la figura 2.2 se muestra el detalle de la palabra de control.
D7 D6 D5 D4 D3 D2 D1 D0
1 MPA1 MPA0 PA PCH PB+PCL PB PCL
La lógica de la palabra de control consiste en que “0” configura como salida y “1” configura como
entrada. Así si el bit PA = 0, significa que estamos configurando PA como salida, si PB = 1,
significa que estamos configurando PB como entrada. Por otro lado podemos seleccionar el modo.
Por ejemplo si PA1 PA0 = 00, estamos configurando PA en modo 0. Si PA1 PA0 = 01, estamos
configurando PA en modo 1. Si PA1 PA0 = 1X, estamos configurando PA en modo 2.
Con base en la figura 2.1 y la figura 2.2 es bueno reforzar el hecho que cuando se programa en modo
1 o en modo 2 entran en acción los grupos A y grupo B. El grupo A esta formado por PA +
PCH y el grupo B esta formado por PB + PCL. Si estudia la figura 2.2 verá que el grupo A
puede trabajar en modo 0; es decir como E/S, también puede trabajar en modo 1; es decir como
canal de comunicaciones half duplex, también puede trabajar en modo 2; es decir como canal de
comunicaciones full duplex.
También verá que el grupo B puede trabajar en modo 0; es decir como E/S, también puede
trabajar en modo 1; es decir como canal de comunicaciones half duplex.
2.3 Modo 0
En el modo 0 las puertas PA, PB y PC pueden trabajar como canales de entrada salida; es decir,
el usuario puede sacar o introducir datos a la computadora a voluntad. En la figura 2.3 se muestra
la palabra de control que nos permitirá configurar la puerta PA como salida, la puerta PB como
entrada y la puerta PC como salida. Vea que para que la puerta PA sea salida, debe ser programada
en modo 0. Para que la puerta PB sea entrada, debe ser programada en modo 0. Para que la puerta
PC sea salida, los bits PCL y PCH deben programados a “cero”.
2.4. MODO 1 3
D7 D6 D5 D4 D3 D2 D1 D0
1 MPA1 MPA0 PA PCH PB+PCL PB PCL
1 0 0 0 0 0 1 0 82h
D7 − D0 P A7 − P A0
RD
µProcesador WR PPI P B7 − P B0
Reset
P C7 − P C0
A19 − A0 ALE CS A1 A0
Decoder
Para programar el PPI, vamos a suponer que conectaremos en las direcciones destinadas para
desarrollo de prototipos; es decir 0300h hasta 031Fh. En estas condiciones el decodificador de la
figura 2.3 decodificará lo siguiente:
2.4 Modo 1
En el modo 1 las puerta PA y PB pueden trabajar en half duplex, es decir permiten comunicación
bidireccional pero no al mismo tiempo. En este modo disponemos dos canales de comunicaciones
half duplex. Un canal esta formado por PA+PCH y el otro canal esta formado por PB+PCL.
Como hemos visto en el modo 0, en todos los casos si el bit Di = 0, el puerto correspondiente
se configura como salida y si el bit Di = 1, el puerto correspondiente se configura como entrada.
Pero en el modo 1, cuando el bit D2 = 1, el grupo PB+PCL funciona en modo 1. De la misma
manera cuando los bits D6 D5 = 01, el grupo PA+PCH funciona en modo 1.
2.4. MODO 1 4
En este punto tenga cuidado y observe que cuando el bit D2 = 1 no tiene sentido configurar el
puerto PB como salida (D1 = 0) o como entrada (D1 = 1). De la misma manera tampoco tiene
sentido configurar el puerto PA como salida (D4 = 0) o como entrada (D4 = 1)
D7 D6 D5 D4 D3 D2 D1 D0
1 MPA1 MPA0 PA PCH PB+PCL PB PCL
1 0 1 X X X X X 0A0h
P A7 − P A0
D7 − D0
RD P C4 ST B
µProcesador WR PPI P C5 IBF
Reset P C6 ACK
P C7 OBF
A19 − A0 ALE CS A1 A0
Decoder
Para el circuito de la figura 2.4, si suponemos que la dirección del puerto PA es 0300h, PB estaría
en 0301h, PC estaría en 0302h y el registro de control estaría en 0303h. Entonces al momento de
configurar el PPI, para la figura 2.4 programamos como en la figura 2.5.
Fíjese que si IBF = 1 quiere decir que llego un dato al puerto PA y el µProcesador tiene que leer.
Cuando OBF = 0 quiere decir que el µProcesador puede escribir un dato en el puerto PA. También
hay que evidenciar que las rutinas readPA y writePA son las que cambian el estado de la bandera
2.4. MODO 1 5
Quit = 1. Esta bandera normalmente está en Quit = 0. Es decir después que el µProcesador lee o
escribe un dato en el puerto PA, puede cambiar el estado de la bandera Quit, de cero a uno. Las
rutinas para leer y escribir del puerto PA son como sigue:
El cambio de estado de la bandera Quit puede ser, por ejemplo, desde el teclado (servicio 0Bh de
la int 21h) o con un click del ratón (servicio 03h de la int 33h). Estas interrupciones no detienen
la ejecución del programa y por tanto no detienen el prococolo de comunicaciones half duplex, a no
ser por voluntad del usuario. Para utilizar el puerto PB en modo half duplex, toda la explicación
realizada para el puerto PA, será la misma.
D7 D6 D5 D4 D3 D2 D1 D0
1 MPA1 MPA0 PA PCH PB+PCL PB PCL
1 0 0 X X 1 X X 84h
P B7 − P B0
D7 − D0
RD P C0
Decoder
Simplemente vea en las figuras 2.4 y 2.6. En la figura 2.4 las señales IBF y OBF están en los bits
PC5 y PC7 respectivamente y en la figura 2.6 las señales IBF y OBF están en el bit PC1. Por tanto
en la figura 2.5, codificamos and al, 10100000b mientras que en la figura 2.7 codificamos and
al,00000110b. Las rutinas para leer y escribir en el puerto PB son como sigue:
ret
2.5 Modo 2
En el modo 2 el puerto A puede trabajar en full duplex, es decir permite comunicación bidireccional
al mismo tiempo. En este modo disponemos de un canal de comunicaciones full duplex. El canal
esta formado por PA+PCH.
Como hemos visto en el modo 0, en todos los casos si el bit Di = 0, el puerto correspondiente se
configura como salida y si el bit Di = 1, el puerto correspondiente se configura como entrada. Pero
en el modo 2, cuando los bits D6 D5 = 10, el grupo PA+PCH funciona en modo 2.
En este punto tenga cuidado y observe que cuando D6 D5 = 10, no tiene sentido configurar el
puerto PA como salida (D4 = 0) o como entrada (D4 = 1).
En realidad la figura 2.8 es la misma que la figura 2.4, es decir desde el punto de vista del hardware
el modo 1 y el modo 2 son lo mismo para la puerta PA; sin embargo desde el punto de vista del
software no son iguales del todo, cambia la programación del registro de control. Vea las figuras 2.6
y 2.7 el registro de control se programa con 84h, mientras que en la figuras 2.8 y 2.9 el registro
de control se programa con 0C0h.
Como hemos visto en los párrafos anteriores, el protocolo de comunicaciones simplemente se basa en
el hecho de que cambian las señales IBF y OBF. Entonces la pregunta es ¿Debido a que cambian
estas señales?
Para entender el protocolo de comunicaciones que utiliza el PPI, vamos a analizar las señales STB,
IBF, ACK y OBF. Vamos a suponer qué un periférico se conecta a la computadora utilizando el
PPI y vamos a analizar las señales desde el lado de la computadora.
2.5. MODO 2 7
D7 D6 D5 D4 D3 D2 D1 D0
1 MPA1 MPA0 PA PCH PB+PCL PB PCL
1 1 0 X X X X X 0C0h
P A7 − P A0
D7 − D0
RD P C4 ST B
µProcesador WR PPI P C5 IBF
Reset P C6 ACK
P C7 OBF
A19 − A0 ALE CS A1 A0
Decoder
ret
En recepción, un periférico envía un dato a la computadora generando la señal STB, esta carga
el dato en cuestión, en los flip-flops internos del PPI. Cuando el dato esta cargado se activa la
señal IBF = 1, avisando que el buffer de entrada de datos esta lleno, Entonces podríamos decir
que la señal STB activa la señal IBF de forma automática. Por su parte el µProcesador examina
periódicamente las señales IBF, si alguna de ellas esta activa (IBF = 1), reconoce que en el buffer
de entrada hay un dato. En el momento que el µProcesador lee el dato (in al,dx) se desactivan las
señales IBF = 0 y STB = 1.
2.6. DISEÑO DE UNA FUENTE DIGITAL REGULADA-REGULABLE 8
vi LM317 vo
0.1µF
R2
10µF
Rj R1
T1
Ri
T2
D7 − D0 T3
T4 R2
RD vo = 1.25 1 + R1
T5
µProcesador WR PPI T6
R2
Reset T7 vo = 1.25 1 + R1 ||Rj
T8
A19 − A0 ALE CS A1 A0
Decoder
D7 D6 D5 D4 D3 D2 D1 D0 SI→ ←BX
1 MPA1 MPA0 PA PCH PB+PCL PB PCL
1 0 0 0 X X X X 80h
memoria Vout
DI→ VoutF
a) Palabra de control b) Modelo de memoria
Figura 2.11: Palabra de control y modelo de la memoria para una fuente digital
2.6. DISEÑO DE UNA FUENTE DIGITAL REGULADA-REGULABLE 9
Fuente digital
mov dx ,0303 h
mov al ,80 h
dx ← 0303h out dx , al
al ← 80h lea si , Vout
dx ⇐ al lea bx , Vout
lea di , VoutF
dec di
si = Vout otro : call tecla
cmp al ,1 Bh ; Salir
bx = Vout
je fin
di = VoutF cmp ah ,48 h ; Arriba
di ← di - 1 je bajar
cmp ah ,50 h ; Abajo
otro: otro: je subir
LeTecla jmp otro
fin: bajar : cmp si , bx
si je alerta
al = 27 ret mov al ,[ bx ]
no bajar: mov dx ,0300 h
alarma: out dx , al
si si dec bx
ah = “↑” si = bx Beep
jmp otro
subir: no subir : cmp di , bx
alarma: no
je alerta
Beep di = bx ah = “↓” al ← [bx] mov al ,[ bx ]
si si mov dx ,0300 h
dx ← 0300h
out dx , al
no dx ⇐ al
inc bx
al ← [bx] no bx ← bx - 1 jmp otro
dx ← 0300h alarma : call beep
dx ⇐ al jmp otro
fin : ret
bx ← bx + 1
Figura 2.12: Diagrama de flujo y código para una fuente digital utilizando el PPI
LeTecla proc
mov ah ,0 bh ; estado del teclado
int 21 h
cmp al ,0
je fin
mov ah ,10 h ; lee codigos
int 16 h ; de rastreo
fin : ret
LeTecla endp
;
; El servicio 10 h de la int 16 h devuelve en AX
; + - - - - - - - - - - - - - - - - -+ - - - - - - - - - - - - - - - - - - -+ - - - - - - - - - - - - - - - -+
; | Tecla en | AH | AL |
; + - - - - - - - - - - - - - - - - -+ - - - - - - - - - - - - - - - - - - -+ - - - - - - - - - - - - - - - -+
; | Tecla normal | Codigo de rastreo | Caracter ASCII |
; | Tecla extendida | Codigo de rastreo | 00 h o E0h |
; + - - - - - - - - - - - - - - - - -+ - - - - - - - - - - - - - - - - - - -+ - - - - - - - - - - - - - - - -+
En la figura 2.12, la rutina LeTecla es como en la figura 2.13. El servicio 10h de la int 16h
devuelve en AX la tecla, bajo el siguiente formato. En AH está el código de rastreo. Por ejemplo
2.7. COMUNICACIÓN ENTRE COMPUTADORAS A TRAVÉS DEL PPI 10
para Esc, AH = 01 y, en AL está código ASCII del caracter, para Esc, AL = 1Bh. Para la tecla
flecha arriba, AH = 48h y AL = E0h. Para la flecha abajo AH = 50h y AL = E0h. En este
punto vea que AL = E0 debido a que las teclas arriba y abajo son duplicadas.
Ejemplo 2.1 Diseñar un sistema de computación utilizando el PPI que permita conectar dos com-
putadoras. La computadora-1 envía datos a la computadora-2. Los datos son cadenas de caracteres
que contienen letras y números. La computadora-2 recibe las cadenas de caracteres y cuando cuenta
diez dígitos termina la comunicación. Por otro lado las cadenas de caracteres que envía la PC1
terminan con “$”, de modo que si las cadenas de caracteres no tienen ningún dígito termina la
comunicación, debido al caracter “$”.
Figura 2.14: Comunicación entre dos computadoras a través del puerto PA del PPI
Ejemplo 2.2 Diseñar un sistema de computación para conectar dos computadoras utilizando el PPI.
La computadora-1 envía a la computadora-2 un archivo de texto que termina con el ascii EOF.
El texto está formado por párrafos y cada párrafo esta formado por palabras y números. En la
computadora-2, cada que llega una palabra, la cuenta e informa a la computadora-1, de igual manera
informa cada que ha recibido un párrafo. Un párrafo termina con la secuencia ascii CR y LF.
Figura 2.17: Comunicación entre dos computadoras a través del puerto PB del PPI