Você está na página 1de 8

AGPS-2006

8255A PPI (Programmable Peripheral Interface) Funcionamiento y conexin


El PPI (interfase perifrica programable) es un componente de bajo costo para manejar puertos paralelos en un sistema computacional. Tiene 3 puertos paralelos (A, B y C) con 8 terminales cada uno. La programacin de estos puertos es por grupos. El grupo A est formado del puerto A y los 4 bits ms significativos del puerto C (PC7-PC4). El grupo B lo conforma el puerto B y los bits menos significativos del puerto C (PC3-PC0). Cada puerto puede ser programado como puerto de entrada (lectura) o puerto de salida (escritura). Descripcin de las terminales: El puerto A (PA0-PA7), el puerto B (PB0-PB7), y el puerto C (PC0-PC7) pueden ser programados como puertos de entrada (lectura) o puertos de salida (escritura). La terminal CS debe estar en un nivel lgico 0 para que el 8255 pueda ser programado, ledo o escrito. La seleccin de los puertos o del registro para su programacin es por medio de las terminales A0 y A1 del bus de direccin del microprocesador. A1 0 0 1 1 A0 0 1 0 1 Direccin Puerto A Puerto B Puerto C Palabra de Control

Asignacin de direcciones para el 8255

Cuando la terminal RD est en 0, el dato que se encuentra en alguno de los puertos se lee y se enva al microprocesador a travs del bus de datos (D0-D7). Es cuando ocurre la instruccin IN. Cuando se utiliza la instruccin OUT, en la terminal WR se encuentra un 0, y se enva un dato a algunos de los puertos o a la palabra de control, dependiendo de la direccin. La entrada RES (o RESET) cuando est en 1 lgico inicializa al PPI al mismo tiempo que el procesador. Por defecto el PPI se inicializa en modo 0 con los tres puertos de entrada. El bus de datos (D0-D7) sirve para recibir o transmitir datos de 8 bits y est conectado al bus de datos del sistema computacional. La configuracin de las terminales se muestra en la figura 1.

1/8

AGPS-2006 _________ _________ _| \__/ |_ |_|1 40|_| _| |_ |_|2 39|_| _| |_ |_|3 8255 38|_| _| |_ |_|4 37|_| _| |_ |_|5 36|_| _| |_ |_|6 35|_| _| |_ |_|7 34|_| _| |_ |_|8 33|_| _| |_ |_|9 32|_| _| |_ |_|10 31|_| _| |_ |_|11 30|_| _| |_ |_|12 29|_| _| |_ |_|13 28|_| _| |_ |_|14 27|_| _| |_ |_|15 26|_| _| |_ |_|16 25|_| _| |_ |_|17 24|_| _| |_ |_|18 23|_| _| |_ |_|19 22|_| _| |_ |_|20 21|_| |______________________|

<--> PA3 <--> PA2 <--> PA1 <--> PA0 --> /RD --> /CS GND --> --> A1 A0

PA4 <--> PA5 <--> PA6 <--> PA7 <--> /WR <-RES <-D0 D1 D2 D3 D4 D5 D6 D7 VCC PB7 <--> PB6 <--> PB5 <--> PB4 <--> PB3 <--> <--> <--> <--> <--> <--> <--> <--> <--> ACTIVE HI

<--> PC7 <--> PC6 <--> PC5 <--> PC4 <--> PC0 <--> PC1 <--> PC2 <--> PC3 <--> PB0 <--> PB1 <--> PB2

Figura 1. Configuracin del PPI (8255)

2/8

AGPS-2006

Modo de operacin
El PPI trabaja en modo activo e inactivo. En el modo activo se manejan 3 modos de operacin, modo 0(Entrada/Salida bsica), modo 1(Entrada/Salida habilitada) y modo 2 (Bus bidireccional). Para programar los puertos en alguno de estos tres modos se utiliza la palabra de control.

Palabra de Control del PPI


Modo Activo: D7=1 D7 IM D6 MA1 D5 MA0 A0 = 1 D4 PA A1 = 1 D3 PC+ D2 MB D1 PB D0 PC-

IM= Indicador de Modo 0 = modo inactivo 1 = modo activo

MA1 MA0 = Modo del Grupo A 0 0 Modo 0 0 1 Modo 1 1 X Modo 2 PB = Puerto B 0 = Salida 1 = Entrada

PA = Puerto A 0 = Salida 1 = Entrada

PC+ = Puerto C (MS) MB = Modo del Grupo B 0 = Salida 0 = Modo 0 1 = Entrada 1 = Modo 1

PC- = Puerto C (LS) 0 = Salida 1 = Entrada

Grupo A: Puerto A y los 4 bits ms significativos del Puerto C Grupo B: Puerto B y los 4 bits menos significativos del Puerto C Modo 0: Entrada/Salida Bsica 16 maneras de definir las direcciones de Entrada/Salida de los 4 subgrupos de bits. Los datos se envan o se reciben por esas direcciones. Modo 1: Entrada/Salida Habilitada Los dos grupos de 4 bits del puerto C, sirven de control y de estado para los puertos A y B. Los grupos de 8 bits (puerto A y B) son para datos. Cada grupo de 8 bits, puertos A y B, se puede definir como entrada o salida. Modo 1, Entrada habilitada Definiciones Descripcin de la seal de seal STB(strobe) Es un pulso de entrada que carga los datos al registro del puerto IBF (input Es una salida que indica que el registro de buffer full) entrada contiene un dato INTR Salida que solicita interrupcin (interrupt request) Grupo A Grupo B PC4 PC5 PC3 PC2 PC1 PC0

3/8

AGPS-2006

INTE (interrupt enable) PC6, PC7

Bit interno programado a travs de PC4 o PC2 Propsitos generales

Figura 2. Modo 1, entrada habilitada

Figura 3. Modo 1, salida habilitada

4/8

AGPS-2006

Modo 1 Salida Habilitada Definiciones Descripcin de la seal de seal OBF (output Es una salida que se coloca en 0 cuando se buffer full) escriben datos al registro del puerto. Se coloca en 1 cuando se recibe un pulso en ACK ACK Ocasiona que OBF regrese a 1. Es una (acknowledge) respuesta del dispositivo externo cuando ha recibido un dato del puerto del PPI. INTR Salida que solicita interrupcin al (interrupt microprocesador. request) INTE Bit interno programado a travs de PC6 o PC2 (interrupt y habilita o deshabilita la terminal INTR enable) PC4, PC5 Propsitos generales

Grupo A Grupo B PC7 PC6 PC3 PC1 PC2 PC0

Modo 2: Bus Bidireccional Solo el puerto A se puede programar en este modo, en este caso, todo el puerto C es utilizado como control y estado del puerto A. El puerto A puede recibir y enviar datos sin necesidad de reprogramarse.

Figura 4. Modo 2, bus bidireccional

5/8

AGPS-2006

Definiciones de seal INTR (interrupt request) OBF (output buffer full) ACK (acknowledge) STB(strobe) IBF (input buffer full) INTE1, INTE2 (interrupt enable) PC0, PC1 y PC2

Descripcin de la seal Salida que solicita interrupcin al microprocesador tanto en condicin de entrada como de salida. Es una salida que indica que existe un dato en el buffer de salida. Es una entrada que reconoce cuando existe un dato en el puerto A. Si est en 1 el puerto est en alta impedancia. Es un pulso de entrada que carga los datos al registro del puerto A Es una salida que indica que el registro de entrada contiene un dato. Bits internos programados a travs de PC6 (INTE1)o PC2 (INTE2) y que habilitan o deshabilitan la terminal INTR Propsitos generales

Terminal PC3 PC7 PC6 PC4 PC5

Modo Inactivo: D7=0 A0 = 1 A1 = 1 En este modo, se controla que valores se van a colocar en cada bit del puerto C. En este caso se toma al puerto C como puerto de salida y se controla los valores de salida bit por bit. D7 0 D6 X D5 X D4 X D3 C2 D2 C1 D1 C0 D0 V

C2 0 0 0 0 1 1 1 1

C1 0 0 1 1 0 0 1 1

C0 = Nmero de bit del puerto C 0 Bit PC- 0 1 Bit PC-1 0 Bit PC-2 1 Bit PC-3 0 Bit PC-4 1 Bit PC-5 0 Bit PC-6 1 Bit PC-7

V = Valor a colocar en el bit 0 = Se coloca un 0 1 = Se coloca un 1

6/8

AGPS-2006

Aplicaciones con los modos


Cdigo ejemplo para el modo 0 como salida El siguiente cdigo, inicializa al PPI en modo 0, y los tres puertos (A, By C) son programados de salida. MOV DX, 03 MOV AL, 80h; AL= 1000000b OUT DX, AL Cdigo ejemplo para el modo 1 como entrada BIT5 EQU 20H PORTC EQU 22H PORTC EQU 20H READ: IN AL, PORTC TEST AL, BIT5 JZ READ IN AL, PORTA

; Lee puerto C ; verifica IBF ; salta si IBF=0 ; lee dato

Programa ejemplo para el modo 1 como salida BIT1 EQU 2 PORTC EQU 62H PORTB EQU 61H CMD EQU 63H PRINT: IN AL, PORTC TEST AL, BIT1 JZ PRINT MOV AL, AH OUT PORTB, AL MOV AL, 8 OUT CMD, AL MOV AL, 9 OUT CMD, AL

; Obtiene OBF ; Verifica OBF ; salta si OBF = 0 ; Obtiene el dato ; Imprime (enva al puerto B un dato) ; Inicializa en 0 a DS (PC4 va hacia esta seal del ; dispositivo) ; Enva un pulso de datos a la impresora ; Limpia en 0 a DS

7/8

AGPS-2006

Programa ejemplo para el modo 2 (bidireccional) BIT7 EQU 80H ; Este programa transmite AH por el bus bidireccional PORTC EQU 62H ; del puerto A PORTA EQU 60H TRANS: IN AL, PORTC ; Obtiene OBF TEST AL, BIT7 ; Verifica OBF JZ TRANS ; Si OBF = 1 MOV AL, AH ; Obtiene el dato OUT PORTA, AL ; Enva el dato ; Lee datos desde el puerto A bidireccional y los regresa en AL. ; El paso anterior y ste se pueden hacer en un solo programa. BIT5 EQU 20H PORTC EQU 62H PORTA EQU 60H READ: IN AL, PORTC ; Obtiene IBF TEST AL, BIT5 ; Verifica IBF JZ READ ; Si IBF=0 IN AL, PORTA ; Obtiene el dato

Cdigo ejemplo para el modo inactivo El siguiente cdigo, enva un "1" al Bit 5 del Puerto C. MOV DX, 03 MOV AL, 0Bh; AL= 00001011b OUT DX, AL

8/8

Você também pode gostar