nombre de la práctica
nombre de la práctica
nombre de la práctica
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
NOMBRE DE LA PRÁCTICA<br />
El PPI 8255 su conexión y programación<br />
OBJETIVO ESPECÍFICO:<br />
Apren<strong>de</strong>r a programar y aplicar adaptadores <strong>de</strong> interfase<br />
programables paralelos (PPI 8255)<br />
INTRODUCCIÓN:<br />
El circuito PPI (Interfaz Periférica Programable) 8255A <strong>de</strong> Intel es un dispositivo<br />
programable <strong>de</strong> entrada/salida <strong>de</strong> propósito general diseñando para ser usado<br />
con microprocesadores Intel.<br />
Tiene 24 terminales <strong>de</strong> entrada/salida <strong>la</strong>s cuales se pue<strong>de</strong>n programar<br />
individualmente en 2 grupos <strong>de</strong> 12 y se pue<strong>de</strong> utilizar en 3 diferentes modos <strong>de</strong><br />
operación.<br />
La figura nos muestra <strong>la</strong> distribución <strong>de</strong> terminales <strong>de</strong>l chip y <strong>la</strong> estructura<br />
interna <strong>de</strong> este dispositivo.<br />
Buffer <strong>de</strong>l Bus <strong>de</strong> Datos<br />
Buffer bidireccional <strong>de</strong> 8 bits con habilidad <strong>de</strong> tercer estado en sus<br />
terminales. Se utiliza para conectar el PPI al bus <strong>de</strong> datos <strong>de</strong>l sistema.<br />
Los datos son transmitidos o recibidos por el buffer a través <strong>de</strong>l<br />
programa , con <strong>la</strong>s instrucciones <strong>de</strong> entrada o <strong>de</strong> salida. Las pa<strong>la</strong>bras <strong>de</strong><br />
control y el estado <strong>de</strong> <strong>la</strong> información también se transmiten a través <strong>de</strong>l<br />
buffer.<br />
Lógica <strong>de</strong> Control <strong>de</strong> Lectura/Escritura<br />
CS<br />
PRACTICA N0.4<br />
Este bloque maneja todas <strong>la</strong>s transferencias internas y externas<br />
re<strong>la</strong>cionadas con los Datos, Control o Pa<strong>la</strong>bras <strong>de</strong> Estado. Acepta<br />
entradas provenientes <strong>de</strong> los buses <strong>de</strong> Control y Direcciones <strong>de</strong>l CPU y<br />
emite comandos a los controles <strong>de</strong> grupos.<br />
M.C. Carlos E. Canto Quintal - 38 -
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
Selección <strong>de</strong>l chip. Un bajo en <strong>la</strong> entrada <strong>de</strong> esta terminal, habilita <strong>la</strong><br />
comunicación entre el 8255A y <strong>la</strong> CPU.<br />
RD (READ)<br />
Lectura. Un bajo en <strong>la</strong> entrada <strong>de</strong> esta terminal, habilita al 8255A para<br />
enviar el dato o estado <strong>de</strong> <strong>la</strong> información al CPU a través <strong>de</strong>l bus <strong>de</strong><br />
datos. Esto permite al CPU leer <strong>de</strong>l 8255A.<br />
WR (WRITE)<br />
Escritura. Un bajo en <strong>la</strong> entrada <strong>de</strong> esta terminal, habilita al CPU para<br />
escribir datos o pa<strong>la</strong>bras <strong>de</strong> control al 8255A.<br />
A0 y A1<br />
Reset<br />
EL PPI 8255<br />
BUS DE DATOS<br />
RD<br />
WR<br />
A0<br />
A1<br />
RESET<br />
CS<br />
D0-D7<br />
Estas señales <strong>de</strong> entrada, en conjunto con <strong>la</strong>s señales RD y WR,<br />
contro<strong>la</strong>n <strong>la</strong> selección <strong>de</strong> uno <strong>de</strong> los tres puertos o los registros <strong>de</strong> <strong>la</strong><br />
pa<strong>la</strong>bra <strong>de</strong> control. Normalmente se conectan a los bits menos<br />
significativos <strong>de</strong>l bus <strong>de</strong> direcciones (A0 y A1).<br />
Reinicialización. Un alto en <strong>la</strong> entrada <strong>de</strong> esta terminal limpia el registro<br />
<strong>de</strong> control y todos los puertos (A, B, C) son colocados en el modo <strong>de</strong><br />
entrada.<br />
M.C. Carlos E. Canto Quintal - 39 -<br />
DIAGRAMA DE BLOQUES DEL 8255<br />
Buffer <strong>de</strong><br />
Buffer <strong>de</strong><br />
bus<br />
bus<br />
<strong>de</strong><br />
<strong>de</strong><br />
datos<br />
datos<br />
Lógica<br />
Lógica<br />
<strong>de</strong><br />
<strong>de</strong><br />
control<br />
control<br />
<strong>de</strong><br />
<strong>de</strong><br />
escritura/<br />
escritura/<br />
lectura<br />
lectura<br />
Control<br />
Control<br />
<strong>de</strong>l<br />
<strong>de</strong>l<br />
grupo<br />
grupo<br />
A<br />
A<br />
BUS DE DATOS<br />
INTERNO<br />
8 BITS<br />
Control<br />
Control<br />
<strong>de</strong>l<br />
<strong>de</strong>l<br />
grupo B<br />
grupo B<br />
Grupo<br />
Grupo<br />
A<br />
A<br />
Puerto A<br />
Puerto A<br />
Grupo A<br />
Grupo A<br />
Puerto C<br />
Puerto C<br />
4 altos<br />
4 altos<br />
Grupo B<br />
Grupo B<br />
Puerto C<br />
Puerto C<br />
4 bajos<br />
4 bajos<br />
Grupo<br />
Grupo<br />
B<br />
B<br />
Puerto B<br />
Puerto B<br />
Microprocesadores<br />
E/S<br />
PA0-PA7<br />
E/S<br />
PC7-PC4<br />
E/S<br />
PC3-PC0<br />
E/S<br />
PB7-PB0<br />
Carlos Canto Q.
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
Puertos A, B, C<br />
El 8255A contiene 3 puertos (A, B, C) <strong>de</strong> 8 bits cada uno. Todos pue<strong>de</strong>n ser<br />
configurados en una variedad <strong>de</strong> modos funcionales a través <strong>de</strong>l software <strong>de</strong>s<strong>de</strong><br />
el sistema, pero cada uno tiene sus características especiales.<br />
Puerto A. Como puerto <strong>de</strong> salida <strong>de</strong> datos <strong>de</strong> 8 bits tiene <strong>la</strong>tch y buffer y como<br />
<strong>la</strong>tch <strong>de</strong> entrada <strong>de</strong> datos <strong>de</strong> 8 bits.<br />
Puerto B. Una entrada/salida <strong>de</strong> datos <strong>de</strong> 8 bits con <strong>la</strong>tch/buffer y una entrada<br />
<strong>de</strong> datos <strong>de</strong> 8 bits con buffer.<br />
D0-D7<br />
RESET<br />
CS<br />
RD<br />
WR<br />
A0,A1<br />
PA7-PA0<br />
PB7-PB0<br />
PC7-PC0<br />
VCC<br />
GND<br />
BUS DE DATOS<br />
ENTRADA DE RESET<br />
SELECCIÓN DE CHIP<br />
ENTRADA DE LECTURA<br />
ENTRADA DE ESCRITURA<br />
DIRECCIÓN DE PUERTOS<br />
PUERTO A<br />
PUERTO B<br />
PUERTOC<br />
ALIMENTACIÓN +5V<br />
TIERRA<br />
Puerto C. Una salida <strong>de</strong> datos <strong>de</strong> 8 bits <strong>la</strong>tch/buffer y una entrada <strong>de</strong> datos <strong>de</strong> 8<br />
bits buffer únicamente. Este puerto pue<strong>de</strong> ser dividido en dos puertos <strong>de</strong> 4 bits<br />
bajo el modo <strong>de</strong> control. Cada puerto <strong>de</strong> 4 bits contiene un <strong>la</strong>tch <strong>de</strong> 4 bits y este<br />
pue<strong>de</strong> ser usado para el control <strong>de</strong> <strong>la</strong>s señales <strong>de</strong> estado <strong>de</strong> entrada en conjunto<br />
con los puertos A y B.<br />
Selección <strong>de</strong>l modo<br />
Hay tres modos básicos <strong>de</strong> operación que pue<strong>de</strong>n ser seleccionados por el<br />
software <strong>de</strong>l sistema usando <strong>la</strong> pa<strong>la</strong>bra <strong>de</strong> control correspondiente:<br />
Modo 0. Modo básico <strong>de</strong> entrada/salida.<br />
Modo 1. Modo <strong>de</strong> "Strobe" <strong>de</strong> entrada/salida.<br />
Modo 2. Modo <strong>de</strong> bus bidireccional.<br />
PALABRA DE CONTROL<br />
Antes <strong>de</strong> po<strong>de</strong>r usar el PPI, primero <strong>de</strong>be ser configurado, inicializado o<br />
programado. La forma en <strong>la</strong> que se hace esto, es escribiendo através <strong>de</strong>l<br />
programa una pa<strong>la</strong>bra (byte) <strong>de</strong> control al registro <strong>de</strong> control. Se programa en<br />
grupos, se tiene el grupo A y el grupo B<br />
La pa<strong>la</strong>bra <strong>de</strong> control <strong>de</strong> programación <strong>de</strong> modo, consta <strong>de</strong> 8 bits que van <strong>de</strong>s<strong>de</strong><br />
D0 hasta D7, don<strong>de</strong> D0 es el bit menos significativo (LSB) y D7 es el bit más<br />
significativo (MSB).<br />
M.C. Carlos E. Canto Quintal - 40 -<br />
PA3<br />
PA2<br />
PA1<br />
PA0<br />
RD<br />
CS<br />
GND<br />
A1<br />
A0<br />
PC7<br />
PC6<br />
PC5<br />
PC4<br />
PC0<br />
PC1<br />
PC2<br />
PC3<br />
PB0<br />
PB1<br />
PB2<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
40<br />
39<br />
38<br />
37<br />
36<br />
35<br />
34<br />
33<br />
32<br />
31<br />
30<br />
29<br />
28<br />
27<br />
26<br />
25<br />
24<br />
23<br />
22<br />
21<br />
Microprocesadores<br />
PA4<br />
PA5<br />
PA6<br />
PA7<br />
WR<br />
RESET<br />
D0<br />
D1<br />
D2<br />
D3<br />
D4<br />
D5<br />
D6<br />
D7<br />
VCC<br />
PB7<br />
PB6<br />
PB5<br />
PB4<br />
PB3<br />
Carlos Canto Q.
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
EL PPI 8255<br />
FORMATO DE LA<br />
DEFINICIÓN DEL<br />
MODO<br />
Ban<strong>de</strong>ra<br />
Ban<strong>de</strong>ra<br />
<strong>de</strong><br />
<strong>de</strong><br />
activar<br />
activar<br />
modo<br />
modo<br />
1=activo<br />
1=activo<br />
EL PPI 8255<br />
PALABRA DE CONTROL<br />
D7<br />
D7<br />
D6<br />
D6<br />
D5<br />
D5<br />
D4<br />
D4<br />
D3<br />
D3<br />
D2<br />
D2<br />
D1<br />
D1<br />
D0<br />
D0<br />
D7<br />
D7<br />
D6<br />
D6<br />
D5<br />
D5<br />
D4<br />
D4<br />
D3<br />
D3<br />
D2<br />
D2<br />
D1<br />
D1<br />
D0<br />
D0<br />
X X X<br />
No importa<br />
PALABRA DE CONTROL<br />
M.C. Carlos E. Canto Quintal - 41 -<br />
Bit<br />
Bit<br />
set/<br />
set/<br />
rest<br />
rest<br />
1=set<br />
1=set<br />
0=reset<br />
0=reset<br />
Bit seleccionado<br />
0<br />
1 2 3 4 5 6<br />
Microprocesadores<br />
GRUPO<br />
GRUPO<br />
B<br />
Puerto<br />
Puerto<br />
C (bits<br />
(bits<br />
bajos)<br />
bajos)<br />
1=entrada<br />
1=entrada<br />
0=salida<br />
0=salida<br />
Puerto<br />
Puerto<br />
B<br />
B<br />
1=entrada<br />
1=entrada<br />
0=salida<br />
0=salida<br />
Selección<br />
Selección<br />
<strong>de</strong><br />
<strong>de</strong><br />
modo<br />
modo<br />
0=modo<br />
0=modo<br />
0<br />
0<br />
1=modo1<br />
1=modo1<br />
GRUPO<br />
GRUPO<br />
A<br />
Puerto<br />
Puerto<br />
C (bits<br />
(bits<br />
altos)<br />
altos)<br />
1=entrada<br />
1=entrada<br />
0=salida<br />
0=salida<br />
Puerto<br />
Puerto<br />
A<br />
A<br />
1=entrada<br />
1=entrada<br />
0=salida<br />
0=salida<br />
Selección<br />
Selección<br />
<strong>de</strong><br />
<strong>de</strong><br />
modo<br />
modo<br />
00=modo<br />
00=modo<br />
0<br />
0<br />
01=modo1<br />
01=modo1<br />
1x=modo2<br />
1x=modo2<br />
Microprocesadores<br />
0 1 0 0 1 1 1 1 B0<br />
0 0 1 1 0 0 1 1 B1<br />
0 0 0 1 0 1 0 1 B2<br />
ban<strong>de</strong>ra<br />
ban<strong>de</strong>ra<br />
<strong>de</strong><br />
<strong>de</strong><br />
activar/<strong>de</strong>sactivar<br />
activar/<strong>de</strong>sactivar<br />
bit<br />
bit<br />
0=activo<br />
0=activo<br />
FORMATO PARA ACTIVAR/DESACTIVAR UN BIT DEL PUERTO C<br />
7<br />
Carlos Canto Q.<br />
Carlos Canto Q.
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
El grupo A: formado por el puerto A y Puerto C [superior (C7 - C4)]<br />
ElGrupo B : formado por el Puerto B y Puerto C [inferior (C3 - C0)]<br />
Al registro <strong>de</strong> control solo se pue<strong>de</strong> escribir, no se permite <strong>la</strong> operación <strong>de</strong><br />
lectura <strong>de</strong> <strong>la</strong> pa<strong>la</strong>bra <strong>de</strong> control.<br />
EL PPI 8255<br />
Modos <strong>de</strong> operación.<br />
Modo 0: Operación simple <strong>de</strong> E/S sin protocolo.<br />
Se le asigna operaciones <strong>de</strong> entrada y salida a cada uno <strong>de</strong> los tres puertos<br />
No se usa un protocolo (handshaking) para el intercambio <strong>de</strong> los datos. Los<br />
datos simplemente se escriben a o leen <strong>de</strong> un puerto específico.<br />
DEFINICIÓN FUNCIONAL BÁSICA DEL MODO 0<br />
♦ Se tiene 2 puertos <strong>de</strong> 8 bits y 2 <strong>de</strong> 4 bits.<br />
♦ Cualquier puerto pue<strong>de</strong> ser entrada o salida<br />
♦ Las salidas tienen LATCH (cerrojo)<br />
♦ Las entradas no tiene LATCH<br />
♦ Hay 16 posibles configuraciones <strong>de</strong> entrada/salida en este modo<br />
CPU<br />
A1<br />
.<br />
M.C. Carlos E. Canto Quintal - 42 -<br />
A1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
1<br />
.<br />
x<br />
1<br />
x<br />
.<br />
A0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
1<br />
.<br />
x<br />
1<br />
x<br />
.<br />
RD<br />
0<br />
0<br />
0<br />
1<br />
1<br />
1<br />
1<br />
.<br />
x<br />
0<br />
1<br />
.<br />
WR<br />
1<br />
1<br />
1<br />
0<br />
0<br />
0<br />
0<br />
.<br />
x<br />
1<br />
1<br />
.<br />
CS<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
.<br />
1<br />
0<br />
0<br />
Microprocesadores<br />
Tab<strong>la</strong> <strong>de</strong> verdad <strong>de</strong> <strong>la</strong> operación <strong>de</strong>l PPI 8255<br />
WR<br />
A0<br />
Bus<br />
Bus<br />
<strong>de</strong><br />
<strong>de</strong><br />
datos<br />
datos<br />
BUFFER<br />
BUFFER<br />
TRI<br />
TRI<br />
STATE<br />
STATE<br />
LATCH<br />
LATCH<br />
Selector<br />
Selector<br />
<strong>de</strong><br />
<strong>de</strong><br />
puertos<br />
puertos<br />
8255<br />
operación <strong>de</strong> entrada (leer)<br />
Puerto A�bus <strong>de</strong> datos<br />
Puerto B�bus <strong>de</strong> datos<br />
Puerto C�Bus <strong>de</strong> Datos<br />
operación salida (escribir)<br />
Bus <strong>de</strong> datos�puerto A<br />
Bus <strong>de</strong> datos�puerto B<br />
Bus <strong>de</strong> datos�puerto C<br />
Bus <strong>de</strong> datos�reg. control<br />
Función <strong>de</strong> <strong>de</strong>shabilitado<br />
Bus <strong>de</strong> datos � en tri state<br />
Condición ilegal<br />
Bus <strong>de</strong> datos � en tri state<br />
Puerto<br />
Puerto<br />
A<br />
Periférico<br />
Periférico<br />
<strong>de</strong><br />
<strong>de</strong><br />
salida<br />
salida<br />
Carlos Canto Q.<br />
Tiene Tiene LATCH LATCH a <strong>la</strong> <strong>la</strong><br />
salida, salida, tal tal que que el el dato dato<br />
enviado por por el el CPU CPU<br />
queda queda asegurado y<br />
disponible para para el el<br />
periférico <strong>de</strong> <strong>de</strong> salida. salida. El El<br />
dato dato se se retiene retiene hasta hasta<br />
que que se se escriba escriba uno uno<br />
nuevo.<br />
nuevo.
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
CPU<br />
A1<br />
RD<br />
A0<br />
Modo 1 : Entrada/Salida con protocolo (handshaking).<br />
(Strobed Input/Output)<br />
El puerto A y el puerto B usan <strong>la</strong>s líneas <strong>de</strong>l puerto C para generar o aceptar<br />
señales <strong>de</strong> handshaking en modo <strong>de</strong> pulsos (strobes).<br />
Características:<br />
Bus<br />
Bus<br />
<strong>de</strong><br />
<strong>de</strong><br />
datos<br />
datos<br />
BUFFER<br />
BUFFER<br />
TRI<br />
TRI<br />
STATE<br />
STATE<br />
Selector<br />
Selector<br />
<strong>de</strong><br />
<strong>de</strong><br />
puertos<br />
puertos<br />
8255<br />
♦ 2 grupos (grupos A y B)<br />
♦ Cada grupo contiene 8 bits <strong>de</strong> puerto <strong>de</strong> datos y 4 bits <strong>de</strong> puerto <strong>de</strong><br />
control/datos.<br />
♦ Cada puerto <strong>de</strong> datos <strong>de</strong> 8 bit pue<strong>de</strong> usarse como entrada o como salida<br />
in<strong>de</strong>pendientemente.<br />
♦ Tanto <strong>la</strong>s entradas como <strong>la</strong>s salidas tienen “<strong>la</strong>tches “<br />
♦ El puerto <strong>de</strong> 4 bits se usa para control y status <strong>de</strong>l puerto <strong>de</strong> datos <strong>de</strong> 8 bits.<br />
Señales <strong>de</strong> Control o protocolo (handshaking)<br />
Entrada:<br />
STB (Strobe Input): Un nivel bajo en esta entrada, carga los datos en el <strong>la</strong>tch <strong>de</strong><br />
entrada.<br />
IBF (Input Buffer Full F/F): Un nivel alto en esta salida indica que el dato ya fue<br />
cargado en el <strong>la</strong>tch <strong>de</strong> entrada. IBF se pone en alto por un nivel bajo en STB y se<br />
M.C. Carlos E. Canto Quintal - 43 -<br />
Puerto<br />
Puerto<br />
A<br />
A<br />
Periférico<br />
Periférico<br />
<strong>de</strong><br />
<strong>de</strong><br />
entrada<br />
entrada<br />
Operado como como<br />
entrada, no no tiene tiene<br />
<strong>la</strong>tch. <strong>la</strong>tch. Esto Esto implica implica<br />
que que el el periférico <strong>de</strong> <strong>de</strong><br />
entrada <strong>de</strong>be <strong>de</strong>be<br />
sostener el el dato dato<br />
hasta hasta que que <strong>la</strong> <strong>la</strong> CPU CPU lo lo<br />
lea lea .<br />
.
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
pone en bajo <strong>de</strong>bido al f<strong>la</strong>nco positivo <strong>de</strong> <strong>la</strong> entrada RD. IBF se hace 1 cuando<br />
STB es 0 y se hace 0 con el f<strong>la</strong>nco <strong>de</strong> subida <strong>de</strong> <strong>la</strong> señal RD, es <strong>de</strong>cir, cuando <strong>la</strong><br />
CPU ha leído el dato.<br />
STBA (Strobe input) Un 0 en esta línea <strong>de</strong> entrada al 8255 carga un dato en el<br />
<strong>la</strong>tch <strong>de</strong>l PUERTO A.<br />
IBFA (Input buffer full) Un 1 en esta línea <strong>de</strong> salida indica que el dato ha sido<br />
cargado en el <strong>la</strong>tch.<br />
Salida: OBFA (Output buffer full) Esta línea <strong>de</strong> salida será 0 para indicar<br />
que <strong>la</strong> CPU ha puesto un dato en el PUERTO A y que este <strong>de</strong>be<br />
ser recogido por el dispositivo exterior.<br />
OBF será 0 con el f<strong>la</strong>nco <strong>de</strong> subida <strong>de</strong> <strong>la</strong> señal WR y se hará 1<br />
cuando <strong>la</strong> señal <strong>de</strong> entrada ACK sea 0.<br />
ACKA (Acknowledge input) Un 0 en esta entrada informa al 8255<br />
<strong>de</strong> que los datos <strong>de</strong>l PUERTO A han sido leídos. Esencialmente<br />
es una respuesta <strong>de</strong>l dispositivo periférico indicando que ha sido<br />
recibido el dato enviado por <strong>la</strong> CPU.<br />
Interrupción:<br />
INTR (Pedido <strong>de</strong> Interrupción): Un nivel alto en esta salida se pue<strong>de</strong> usar para<br />
interrumpir al Procesador. INTR se pone en alto cuando STB está en 1, IBF<br />
está en 1 e INTE está en 1. Se pone en 0 con el f<strong>la</strong>nco negativo <strong>de</strong> RD.<br />
Para entradas<br />
INTRA es 1 cuando STBA es 1, IBFA es 1 e INTEA es 1.<br />
Para salidas<br />
INTRA es 1 cuando ACKA es 1, OBFA es 1 e INTEA es 1.<br />
Puerto A en modo 1.<br />
Puerto B en modo 1.<br />
M.C. Carlos E. Canto Quintal - 44 -
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
LECTURA DEL PUERTO C EN MODO 1<br />
Cronograma <strong>de</strong>l modo 1.<br />
Modo 2: Bidireccional con protocolo.<br />
(Strobed Bidirectional Bus I/O)<br />
Características:<br />
Permite enviar datos a, o recibir datos <strong>de</strong> un periférico mediante un único bus <strong>de</strong><br />
8 bits bidireccional; con señales <strong>de</strong> handshaking para mantener el flujo <strong>de</strong> datos<br />
sobre el bus <strong>de</strong> datos <strong>de</strong> una manera simi<strong>la</strong>r al MODO 1. También se pue<strong>de</strong>n<br />
generar interrupciones y dispone también <strong>de</strong> funciones <strong>de</strong> enable/disable.<br />
♦ Usa sólo el Grupo A.<br />
♦ Tiene un bus bidireccional <strong>de</strong> 8 bits (puerto A) y un puerto <strong>de</strong> control <strong>de</strong> 5 bits<br />
(puerto C).<br />
♦ Se <strong>la</strong>tchean tanto <strong>la</strong>s entradas como <strong>la</strong>s salidas.<br />
M.C. Carlos E. Canto Quintal - 45 -
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
♦ El puerto <strong>de</strong> control <strong>de</strong> 5 bits se usa para control y status <strong>de</strong>l bus bidireccional<br />
<strong>de</strong> 8 bits.<br />
Señales <strong>de</strong> Control<br />
INTR (Interrupt Request): Un nivel alto en esta salida sirve para interrumpir al<br />
8088 tanto en operaciones <strong>de</strong> entrada como <strong>de</strong> salida.<br />
Operaciones <strong>de</strong> Salida<br />
OBF (Output Buffer Full): Esta salida pasa a un nivel bajo para indicar que el<br />
8088 escribió un dato en el puerto A.<br />
ACK (Acknowledge): Un nivel bajo en esta entrada habilita el buffer <strong>de</strong> salida<br />
<strong>de</strong>l puerto A para enviar datos al periférico (el periférico lee al 8255). En otro<br />
caso, el buffer <strong>de</strong> salida permanece en alta impedancia.<br />
INTE 1 (El flip-flop INTE asociado con OBF): contro<strong>la</strong>do por el bit set/reset <strong>de</strong><br />
PC6.<br />
Operaciones <strong>de</strong> Entrada<br />
STB (Strobe Input): un nivel bajo en esta entrada carga el dato en el <strong>la</strong>tch <strong>de</strong><br />
entrada.<br />
IBF (Input Buffer Full F/F): Un nivel alto en esta salida indica que el dato fue<br />
cargado en el <strong>la</strong>tch <strong>de</strong> entrada.<br />
INTE 2 (El flip-flop INTE asociado con IBF): contro<strong>la</strong>do por bit set/reset <strong>de</strong><br />
PC4.Modo 2:<br />
M.C. Carlos E. Canto Quintal - 46 -<br />
Puerto A en modo 2.<br />
Lectura <strong>de</strong>l puerto C en modo 2
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
Cronograma <strong>de</strong>l modo 2.<br />
CARACTERISTICAS ELECTRICAS DE LOS PUERTOS<br />
Los 3 puertos tienen una especificación <strong>de</strong> corriente IOL <strong>de</strong> 1.7 mA y una<br />
especificación <strong>de</strong> IOH <strong>de</strong> 200 uA. Esto significa que pue<strong>de</strong> manejar directamente<br />
una carga TTL estándar ó 4 cargas TTL LS.<br />
CARACTERISTICAS DE CARGA DEL 8255<br />
Las 8 líneas <strong>de</strong> los puertos B y C pue<strong>de</strong>n suministrar hasta 1 mA a 1.5 Volts.<br />
Esto es útil para manejar relevadores <strong>de</strong> estado sólido y transistores así como,<br />
drivers tipo Darlington y Disp<strong>la</strong>ys <strong>de</strong> alto voltaje que requieren esa fuente <strong>de</strong><br />
corriente<br />
Pero no son capaces <strong>de</strong> absorver <strong>la</strong> corriente típica <strong>de</strong> un Led <strong>de</strong> 10 a 20 mA.<br />
Para este fin se <strong>de</strong>berá usar un buffer TTL.<br />
M.C. Carlos E. Canto Quintal - 47 -
RESET<br />
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
CONEXIÓN Y PROGRAMACIÓN DEL 8255 CON EL Z80<br />
En <strong>la</strong> figura se ilustra un ejemplo <strong>de</strong> <strong>la</strong> conexión <strong>de</strong>l 8255 con el Z80,<br />
asignándole como dirección base 10H.<br />
EL PPI 8255<br />
RST<br />
Circuito<br />
Circuito<br />
<strong>de</strong> reset<br />
<strong>de</strong> reset<br />
Z80<br />
RESET<br />
RD<br />
IORQ<br />
WR<br />
A0<br />
A1<br />
A2<br />
A3<br />
A4<br />
A5<br />
A6<br />
A7<br />
Lectura = entrada <strong>de</strong> datos por el puerto<br />
Ejemplo <strong>de</strong> Conexión <strong>de</strong>l PPI con el Z80<br />
Bus<br />
Bus<br />
<strong>de</strong><br />
<strong>de</strong><br />
Datos<br />
Datos<br />
Bus <strong>de</strong> Direcciones (Bajo)<br />
Bus <strong>de</strong> Direcciones (Bajo)<br />
A2<br />
A3<br />
A5<br />
A6<br />
A7<br />
A4<br />
74LS138<br />
A<br />
B<br />
C<br />
G1A<br />
G1B<br />
G2<br />
PPI PPI<br />
8255 8255<br />
Escritura = salida <strong>de</strong> datos<br />
El reset <strong>de</strong>l 8255 es activo en “1” por eso se requiere el inversor.<br />
REGISTROS DE LECTURA Y ESCRITURA DEL 8255.<br />
M.C. Carlos E. Canto Quintal - 48 -<br />
Y0<br />
RD<br />
WR<br />
A0<br />
A1<br />
RESET<br />
CS<br />
A7<br />
0<br />
Selección <strong>de</strong>l chip 8255<br />
A6<br />
0<br />
A5<br />
0<br />
A4<br />
1<br />
Microprocesadores<br />
Use un <strong>de</strong>codificador 74LS138 para<br />
asignarle al PPI una dirección base <strong>de</strong> 10H<br />
Grupo A<br />
Puerto A<br />
Puerto CL<br />
Puerto CH<br />
Puerto B<br />
Grupo B<br />
A3<br />
0<br />
Direcciones<br />
Direcciones<br />
válidas<br />
válidas<br />
para<br />
para<br />
el<br />
el<br />
PPI:<br />
PPI:<br />
10h<br />
10h<br />
�<br />
�<br />
puerto<br />
puerto<br />
A<br />
11h<br />
11h<br />
�<br />
�<br />
puerto<br />
puerto<br />
B<br />
B<br />
12H<br />
12H<br />
�<br />
�<br />
puerto<br />
puerto<br />
C<br />
13H<br />
13H<br />
�<br />
�<br />
r.<br />
r.<br />
control<br />
control<br />
A2<br />
0<br />
Selección <strong>de</strong><br />
puerto <strong>de</strong>l<br />
PPI<br />
A1<br />
X<br />
A0<br />
X<br />
Carlos Canto Q.
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
Las direcciones <strong>de</strong> los cuatro registros <strong>de</strong> lectura / escritura <strong>de</strong>l 8255 según<br />
nuestro ejemplo analizando son 10H, 11H, 12H, 13H.<br />
Las direcciones <strong>de</strong> los puertos A y C siempre serán PARES ya que A0=0<br />
Las direcciones <strong>de</strong> los puertos B y <strong>de</strong> control siempre serán IMPARES ya que<br />
A0=1.<br />
EJEMPLO DE CONFIGURACIÓN DE LOS PUERTOS EN MODO 0:<br />
Se <strong>de</strong>sea que todos los puertos <strong>de</strong>l PPI sean configurados como salidas, La<br />
pa<strong>la</strong>bra <strong>de</strong> control para lograrlo es: (10000000B) 80H.<br />
Se carga esta pa<strong>la</strong>bra <strong>de</strong> control al registro <strong>de</strong> control<br />
LD A,80H<br />
OUT (13H),A<br />
Una vez que el puerto ha sido configurado o programado, ya queda habilitado<br />
para po<strong>de</strong>r escribir a cualquier puerto usando <strong>la</strong> instrucción OUT <strong>de</strong>l Z80.<br />
Deseamos escribir un (00100011B) 23H a <strong>la</strong>s salidas <strong>de</strong>l puerto A, (01000001B)<br />
41H al puerto B y (10010011B) 93H al puerto C.<br />
Programa<br />
LD A,23H<br />
OUT (10H),A<br />
LD A,41H<br />
OUT (11H),A<br />
LD A,93H<br />
OUT (12H),A<br />
CORRELACIÓN CON TEMAS DEL PROGRAMA VIGENTE:<br />
Con esta <strong>práctica</strong> se cubre algunos <strong>de</strong> los aspectos <strong>de</strong> <strong>la</strong> unidad II: Interfases<br />
MATERIAL Y EQUIPO NECESARIO:<br />
1 CI PPI 8255<br />
2 74LS244 (ó 74LS245)<br />
1 CI 74LS138<br />
5 Push Button NA<br />
5 resistencias <strong>de</strong> 2.2 KΩ<br />
8 LED´s rojos<br />
8 LED´s ver<strong>de</strong>s<br />
16 resistencias <strong>de</strong> 220Ω<br />
1 protoboard<br />
1 Fuente <strong>de</strong> cd <strong>de</strong> 5 volts regu<strong>la</strong>da<br />
METODOLOGÍA (DESARROLLO DE LA PRÁCTICA):<br />
M.C. Carlos E. Canto Quintal - 49 -
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
IORQ<br />
Z80<br />
CIRCUITO<br />
DE<br />
RESET<br />
RD<br />
WR<br />
I.-Asegurando que el PPI tenga una dirección Base <strong>de</strong> 80H, arme el circuito mostrado<br />
en el diagrama <strong>de</strong> abajo, en el mismo protoboard don<strong>de</strong> se encuentran los circuitos <strong>de</strong><br />
<strong>la</strong>s <strong>práctica</strong>s anteriores.<br />
II.- Implemente un programa que realice lo siguiente:<br />
1.- Con <strong>la</strong> pa<strong>la</strong>bra <strong>de</strong> control para selección <strong>de</strong> modo, programe el puerto A y C<br />
como salidas y el puerto B como entrada.<br />
Hacer que los LEDs conectados en el puerto A, prendan y apaguen en secuencia<br />
dando <strong>la</strong> impresión visible <strong>de</strong> luces rotando y que con <strong>la</strong>s correspondientes tec<strong>la</strong>s (<br />
Izquierda, Derecha, rápido , Lento, paro) conectadas en el puerto B, se pueda<br />
contro<strong>la</strong>r el sentido, <strong>la</strong> velocidad y el paro <strong>de</strong> <strong>la</strong> rotación.<br />
RESET<br />
RESET<br />
2.-Que también se pueda invocar <strong>de</strong>s<strong>de</strong> el tec<strong>la</strong>do en B ( con <strong>la</strong> tec<strong>la</strong> Parpa<strong>de</strong>o), <strong>la</strong><br />
acción <strong>de</strong> parpa<strong>de</strong>o <strong>de</strong> estos LEDs<br />
3.-Usando <strong>la</strong> pa<strong>la</strong>bra <strong>de</strong> control para Activar/Desactivar bit <strong>de</strong>l puerto C, hacer que<br />
los LEDs conectados al Puerto C, prendan y apaguen en secuencia con apariencia<br />
visible <strong>de</strong> rotación hacia <strong>la</strong> izquierda y que esta función sea invocada con <strong>la</strong><br />
correspondiente tec<strong>la</strong> <strong>de</strong>l tec<strong>la</strong>do en el Puerto B.<br />
PRACTICA NUM.6<br />
CONEXIÓN Y PROGRAMACIÓN DEL PPI 8255<br />
BUS DE DATOS<br />
D0-D7<br />
BUS DE DIRECCIONES<br />
A0-A7<br />
9<br />
10<br />
12<br />
13<br />
(1/2) 74LS32<br />
A0<br />
A1<br />
A2<br />
A3<br />
A4<br />
A5<br />
A6<br />
A7<br />
+5v<br />
IORD<br />
IOWR<br />
80H-83H<br />
DECODIFICADOR DE DIRECCIONES<br />
DE PUERTOS DE E/S<br />
LA DIRECCIÓN BASE SELECCIONADA<br />
PARA EL PPI 8255 ES 80H<br />
M.C. Carlos E. Canto Quintal - 50 -<br />
16<br />
8<br />
11<br />
1<br />
2<br />
A<br />
3<br />
B<br />
4<br />
C<br />
5<br />
G2AN<br />
6<br />
G2BN<br />
G1<br />
8<br />
VCC<br />
GND<br />
74LS138<br />
Y7N 7<br />
Y6N 9<br />
Y5N 10<br />
Y4N 11<br />
Y3N 12<br />
Y2N 13<br />
Y1N 14<br />
Y0N 15<br />
+5v<br />
26<br />
34<br />
VCC<br />
33<br />
D0<br />
32<br />
D1<br />
31<br />
D2<br />
30<br />
D3<br />
29<br />
D4<br />
28<br />
D5<br />
27<br />
D6<br />
D7<br />
5<br />
36<br />
RD<br />
WR<br />
9<br />
8<br />
A0<br />
A1<br />
35<br />
6<br />
7<br />
RESET<br />
CS<br />
GND<br />
8255<br />
4<br />
PA0<br />
3<br />
PA1<br />
2<br />
PA2<br />
1<br />
PA3<br />
40<br />
PA4<br />
39<br />
PA5<br />
38<br />
PA6<br />
37<br />
PA7<br />
18<br />
PB0<br />
19<br />
PB1<br />
20<br />
PB2<br />
21<br />
PB3<br />
22<br />
PB4<br />
23<br />
PB5<br />
24<br />
PB6<br />
25<br />
PB7<br />
14<br />
PC0<br />
15<br />
PC1<br />
16<br />
PC2<br />
17<br />
PC3<br />
13<br />
PC4<br />
12<br />
PC5<br />
11<br />
PC6<br />
10<br />
PC7<br />
+5V<br />
+5V<br />
20<br />
VCC<br />
17<br />
15<br />
2A4<br />
13<br />
2A3<br />
11<br />
2A2<br />
8<br />
2A1<br />
6<br />
1A4<br />
4<br />
1A3<br />
2<br />
1A2<br />
1A1<br />
1<br />
19<br />
1G<br />
10<br />
2G<br />
GND<br />
20<br />
VCC<br />
17<br />
15<br />
2A4<br />
13<br />
2A3<br />
11<br />
2A2<br />
8<br />
2A1<br />
6<br />
1A4<br />
4<br />
1A3<br />
2<br />
1A2<br />
1A1<br />
1<br />
19<br />
1G<br />
10<br />
2G<br />
GND<br />
74LS244<br />
74LS244<br />
3<br />
2Y4<br />
5<br />
2Y3<br />
7<br />
2Y2<br />
9<br />
2Y1<br />
12<br />
1Y4<br />
14<br />
1Y3<br />
16<br />
1Y2<br />
18<br />
1Y1<br />
2.2 K<br />
3<br />
2Y4<br />
5<br />
2Y3<br />
7<br />
2Y2<br />
9<br />
2Y1<br />
12<br />
1Y4<br />
14<br />
1Y3<br />
16<br />
1Y2<br />
18<br />
1Y1<br />
+5V<br />
C.CANTO<br />
330 ohms<br />
ARRANQUE<br />
PARO<br />
IZQUIERDA<br />
DERECHA<br />
PUERTO C<br />
330 ohms
Laboratorio <strong>de</strong> Microprocesadores El PPI 8255 su conexión y programación<br />
SUGERENCIA DIDÁCTICA:<br />
1.- Responda <strong>la</strong>s siguientes cuestiones:<br />
¿Qué pa<strong>la</strong>bra <strong>de</strong> control <strong>de</strong>be ser cargada al registro <strong>de</strong> control <strong>de</strong>l PPI para<br />
configurarlo <strong>de</strong> <strong>la</strong> siguiente forma:?<br />
a).- puerto A como salida, puerto B como entrada, puerto CL como salida y<br />
Puerto CH como entrada ambos grupos en modo 0<br />
b).-grupo A como entrada en modo 1 y el Grupo B como entrada en modo 0.<br />
c).- Todos los puertos como salida en modo 1<br />
2.- implemente un programa para que un disp<strong>la</strong>y <strong>de</strong> 7 segmentos conectado al<br />
puerto A , muestre el número <strong>de</strong> <strong>la</strong> tec<strong>la</strong>, <strong>de</strong>l tec<strong>la</strong>do <strong>de</strong> 8 bits conectado al<br />
puerto B, que se oprima. Si se oprimen 2 ó más tec<strong>la</strong>s que muestre una “E” en el<br />
disp<strong>la</strong>y indicando un error.<br />
REPORTE:<br />
I..-Reporte el diagrama <strong>de</strong> flujo, el programa en ensamb<strong>la</strong>dor, <strong>de</strong>sarrol<strong>la</strong>do<br />
para realizar lo que se pi<strong>de</strong> en <strong>la</strong> <strong>práctica</strong> (el archivo imprimible y<br />
documentado).<br />
II.-los cálculos realizados para <strong>la</strong> generación <strong>de</strong>l retardo necesario para que <strong>la</strong><br />
rotación <strong>de</strong> los LEDs pueda verse a simple vista.<br />
III.- Las soluciones a <strong>la</strong>s cuestiones dada en <strong>la</strong> sección <strong>de</strong> sugerencia<br />
didáctica<br />
IV.- Reporte también sus conclusiones y comentarios<br />
BIBLIOGRAFÍA:<br />
• Manual <strong>de</strong> Zilog<br />
• Manual <strong>de</strong>l 8255<br />
• Ramesh S. Gaonkar<br />
The Z80 Microprocessor: Architecture, Interfacing,<br />
Programming, and Design<br />
Prentice Hall<br />
M.C. Carlos E. Canto Quintal - 51 -