Está en la página 1de 9

Capítulo 2

Periféricos en paralelo

2.1 Introducción

2.2 Controlador de Periféricos en Paralelo, PPI 8255

Se utiliza para conectar al microprocesador periféricos que trabajan en paralelo con palabras de 8,
16 y 24 bits.

En las computadoras que utilizan microprocesadores Intel, el PPI (Programable Pararell Interface)
esta ubicado en los puertos 60h-63h; Sin embargo para desarrollo de prototipos estas computadoras
reservan las direcciones 0300h - 03FFh

El 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 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. 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.

2.3 Modo 0

D7 D6 D5 D4 D3 D2 D1 D0
1 MPA1 MPA0 PA PCH PB+PCL PB PCL

1
2.4. MODO 1 2

2.4 Modo 1

En el modo 1 las puerta A y B 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.

Las posibles configuraciones son:

D7 D6 D5 D4 D3 D2 D1 D0
1 MPA1 MPA0 PA PCH PB+PCL 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.

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)

1 MPA1 MPA0 PA PCH PB+PCL PB PCL


1 0 1 X X X X X = 0A0h

Figura 2.1: PPI modo 1. PA half duplex

Para el circuito de la figura 2.1, 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.1 programamos como en la figura 2.2.
2.4. MODO 1 3

PA Modo1

dx ← 0303h mov dx ,0303 h ; PPI


mov al ,0 A0h ; Modo 1
out dx , al ; PA half duplex
al ← 0A0h mov Quit ,0
otro :
dx ← al mov dx ,0302 h ; Leer
in dx , al ; canal de control
al ← al and 10100000 and al ,10100000 b ; Aislamos PC5 = IBF y PC7 =/ OBF
cmp al ,20 h ; Ve si es IBF
yes je leePA
al = IBF readPA cmp al ,0 ; Ve si es / OBF
je escribePA
no
mov al , Quit ; Si Quit = 1
yes
cmp al ,1
al = OBF writePA jne otro
no ret ; Termina
no
Quit?
yes

ret

Figura 2.2: Protocolo de comunicaciones, PA half duplex

Fíjese que si IBF = 1 quiere decir que llego un dato al puerto PA y el µProcesador tiene que
leer. Por otro lado, 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 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, cambia el estado de la bandera Quit, de cero a
uno.

Para terminar este punto la rutina para leer el puerto PA es como sigue:

readPA proc
mov dx ,0300 h
in al , dx
mov dato , al
; Aqui va el cambio de estado de Quit = 1
ret
readPA endp

Y la rutina para escribir un dato es como sigue:

writePA proc
mov al , dato
mov dx ,0300 h
out dx , al
; Aqui va el cambio de estado de Quit = 1
ret
writePA endp

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
2.4. MODO 1 4

la ejecución del programa, por tanto el prococolo de comunicaciones half duplex, utilizando el PPI
no se interrumpe, a no ser por voluntad del usuario.

1 MPA1 MPA0 PA PCH PB+PCL PB PCL


1 0 0 X X 1 X X = 84h

Figura 2.3: PPI modo 1. PB half duplex

PB Modo1

dx ← 0303h mov dx ,0303 h ; PPI


mov al ,0 A0h ; Modo 1
out dx , al ; PB half duplex
al ← 0A0h mov Quit ,0
otro :
dx ← al mov dx ,0302 h ; Leer
in dx , al ; canal de control
al ← al and 00000010 and al ,00000010 b ; Aislamos PC5 = IBF y PC7 =/ OBF
cmp al ,02 h ; Ve si es IBF
yes je leePB
al = IBF readPB cmp al ,0 ; Ve si es / OBF
je escribePB
no
mov al , Quit ; Si Quit = 1
yes
cmp al ,1
al = OBF writePB jne otro
no ret ; Termina
no
Quit?
yes

ret

Figura 2.4: Protocolo de comunicaciones, PB half duplex

Para utilizar el puerto PB en modo half duplex, toda la explicación realizada para el puerto PA,
a partir de las figuras 2.1 y 2.2 será la misma. Simplemente fígese en las figuras 2.1 y 2.3. En
la figura 2.1 las señales IBF y OBF están en los bits PC5 y PC7 respectivamente y en la figura
2.3 las señales IBF y OBF están en el bit PC1. Por tanto en la figura 2.2, codificamos cmp al,
2.5. MODO 2 5

10100000b mientras que en la figura 2.4 codificamos cmp al,00000010b

La rutinas para leer el puerto PB son como sigue:

readPB proc
mov dx ,0301 h
in al , dx
mov dato , al
; Aqui va el cambio de estado de Quit = 1
ret
readPB endp

Y la rutina para escribir un dato es como sigue:

writePB proc
mov al , dato
mov dx ,0301 h
out dx , al
; Aqui va el cambio de estado de Quit = 1
ret
writePB endp

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.

Las posibles configuraciones son:

D7 D6 D5 D4 D3 D2 D1 D0
1 MPA1 MPA0 PA PCH PB+PCL 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 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.5 es la misma que la figura 2.1, 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.3
y 2.4 el registro de control se programa con 84h, mientras que en la figuras 2.5 y 2.6 el registro
de control se programa con 0C0h.
2.5. MODO 2 6

1 MPA1 MPA0 PA PCH PB+PCL PB PCL


1 1 0 X X X X X = 0C0h

Figura 2.5: PPI modo 2. PA full duplex

PA Modo2

dx ← 0303h mov dx ,0303 h ; PPI


mov al ,0 C0h ; Modo 2
out dx , al ; PA half duplex
al ← 0C0h mov Quit ,0
otro :
dx ← al mov dx ,0302 h ; Leer
in dx , al ; canal de control
al ← al and 10100000 and al ,10100000 b ; Aislamos PC5 = IBF y PC7 =/ OBF
cmp al ,20 h ; Ve si es IBF
yes je leePA
al = IBF readPA cmp al ,0 ; Ve si es / OBF
je escribePA
no
mov al , Quit ; Si Quit = 1
yes
cmp al ,1
al = OBF writePA jne otro
no ret ; Termina
no
Quit?
yes

ret

Figura 2.6: Protocolo de comunicaciones, PA full duplex

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.6. DISEÑO DE UNA FUENTE DIGITAL REGULADA-REGULABLE 7

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.

En transmisión, el µProcesador examina periódicamente las señales OBF. Si OBF = 0, quiere


decir que el buffer de salida del PPI esta vacío y por tanto el µProcesador puede escribir en el
puerto. Cuando el µProcesador escribe en el puerto (out dx,al) se activa STB = 0 para cargar el
dato en el periférico, por su parte el periférico confirma que le llego el dato enviando al µProcesador
ACK=0. Cuando llega la señal ACK al PPI se desactivan las señales OBF = 1 y ACK = 1.
Ahora que sabemos como trabajan las señales STB, IBF, ACK y OBF del PPI, vuelva a analizar
las figuras 2.2, 2.4 y 2.6 y podrá convencerse que para implementar el protocolo de comunicaciones,
lo único que interesa es examinar el estado de las señales IBF y OBF.

2.6 Diseño de una fuente digital regulada-regulable

2.7 Comunicación entre computadoras a través del PPI


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.7: Comunicación entre dos computadoras a través del puerto PA del PPI
2.7. COMUNICACIÓN ENTRE COMPUTADORAS A TRAVÉS DEL PPI 8

Computadora 1, puerto A, salida de datos

Figura 2.8: Protocolo de comunicaciones utilizando PPI, puerto PA salida

Computadora 2, puerto A, entrada de datos

Figura 2.9: Protocolo de comunicaciones utilizando PPI, puerto PA entrada

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.10: Comunicación entre dos computadoras a través del puerto PB del PPI
2.8. ESTÁNDAR RS232 9

2.8 Estándar RS232

También podría gustarte