01.11.2012 Views

nombre de la práctica

nombre de la práctica

nombre de la práctica

SHOW MORE
SHOW LESS

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 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!