Vous êtes sur la page 1sur 9

Hafedh ABID

Chapitre 6 :

communication parallele
l’interface parallele 8255

6.1. Présentation de l’interface parallèle 8255


Le circuit 8255A est un interface Programmable travaillant en mode parallèle (PPI) ; il possède :
- un bus de données de 8 bits pour la communication avec le µp.
- 24 lignes programmables en entrées ou en sorties, réparties en 2 port de 8 bits (A et B) et
deux demi-ports (C) de 4 lignes.
- Il est complètement compatible TTL
- Tension d’alimentation 5V ±5%
- Puissance dissipée maxi. 1W

Figure 6.1
31
Hafedh ABID

Le buffer de données transfère les données entre le


bus de données externe et le registre de contrôle ou les
A1 A0 Port
ports. Quand il n’est pas sélectionné, les entrées 0 0 PA
du buffer de données sont en 3 état. Les bits A0 et A1 sont 0
ème 1 PB
1 0 PC
utilisés pour sélectionner les registres internes. 1 1 Reg. de contrôle

6.2. Format du mot de commande

6.2.1 Commande Standard


Lors de l’alimentation, le signal Reset
initialise les trois ports en entrée avec un
niveau logique 1 sur les broches de trois
ports. Le 8255 reste dans cet état jusqu'à
l’écriture du mot de commande dans le
registre de contrôle, qui définit le mode de
fonctionnement :

- MODE 0 : Entrée/Sortie de base

- MODE 1 : Entrée/Sortie échantillonné

- MODE 2 : Bus bidirectionnel

6.2.2 Commande SET/RESET

Les bascules du port C peuvent être mises à 1 ou 0 individuellement, il sagit d’une commande
SET/RESET. Dans ce cas, le mot de commande doit être déterminé selon le format suivant :

32
Hafedh ABID

Exemple le mot 0Bh permet de mettre à 1 le bit 5 du port C

6.3. Les modes d’exploitation de l’interface parallèle 8255


6.3.1. Mode 0 du 8255
Dans ce mode chacun des ports A, B Cbas et Chaut peut être programmé en entrée ou en sortie. Il ya
donc 16 combinaisons d’E/S possibles.
Dans ce mode :
Les sorties sont mémorisées : les
informations sont toujours présentes
(verrouillées) en sortie du 8255.
Les entrées ne sont pas mémorisées :
l’information doit être stable en entrée du
8255 quand le CPU vient la lire.

Figure 6.2
Par exemple le mot de contrôle 8AH, met le port A en sortie , le haut du port C en entrée, le bas du
port C en sortie et le port B en entrée.
MOV DX, ADR_8255 + 3 ; adresse du registre de contrôle dans DX
MOV AL, 8AH ; mot de contrôle dans AL
OUT DX, AL ; programmation du 8255
Les bits du port C du 8255 pourraient être mis à 1 ou à 0 individuellement, lorsque le bit 7 du
registre de contrôle est mis à 0, dans ce cas il s’agit d’une commande SET/RESET.

33
Hafedh ABID

6.3.2. Mode 1 du 8255


Dans ce mode de fonctionnement, seuls les ports A et B sont disponibles pour le transfert parallèle
des données en entrée ou sortie. Les 2x 4 bits du port C servent aux signaux de dialogue.
On distingue deux configurations : l’entrée et la sortie.

6.3.2.1. Mode 1 en entrée

Les ports A et B sont programmées en entrée. Les signaux de dialogue correspondants sont
respectivement PC3, PC4, PC5,et PC0, PC1, PC2. Les deux bits restants (PC6 et PC7) peuvent être
programmés soit en entrée soit en sorties.

Figure 6.3

Signification des signaux de dialogue

• STB (Strobe input) Signal en entrée permettant l’échantillonnage de la donnée présente sur le port
associé. Un niveau bas sur cette entrée autorise le passage de la donnée dans le registre d’entrée,
celui-ci sera verrouillé au front montant de STB .
• IBF (Input buffer full flag output) : Signal en sortie, indiquant que la donnée est prête en entrée
du port. Cette sortie est mise à 1 par front descendant de STB . Elle sera remise à 0 par front montant
de RD : c'est-à-dire lorsqu’on aura effectué la lecture de la donnée.
• INTR (Interrupt request output) Demande d’interruption: Signal en sortie pouvant être utilisé pour
effectuer une demande d’interruption au CPU. Elle passe à 1 sur le front montant de STB si le
masque qui lui est associé (INTE) est préalablement mis à 1. INTR est remis à 0 sur le front
descendant de RD (lecture de l’information).

34
Hafedh ABID

Remarque : INTE est mis à 1 par une commande SET/RESET du bit du port correspondant à son
rang dans le mot d’état (Soit PC4 pour INTEA et PC2 pour INTEB).

Fonctionnement

Le périphérique place une donnée de 8 bits sur A7-A0 ou (B7- B0) puis génère un strobe ( STB =0)
qui charge cette donnée dans le latch d’entrée. Ceci a pour effet l’activation du signal IBF à 1,
indiquant au CPU que la donnée est prête à l’entrée du port.

Mot de commande

Mot d’état (port A/ port B) : adresse port C

6.3.2.2. Mode 1 en sortie


Les ports A et B sont programmées en sortie. Les signaux de dialogue correspondants sont
respectivement PC3, PC6, PC7,et PC0, PC1, PC2. Les deux bits restants (PC4 et PC5) peuvent être
programmés soit en entrée soit en sorties.

Figure 6.4

Signification des signaux de dialogue

35
Hafedh ABID

• ACK (Acknowledge) Signal en entrée. Un niveau 0 sur cette entrée signale au 8255 que la donnée
a été prise en compte.
• OBF (Output buffer full) : Signal en sortie, indiquant que la donnée est prête en sortie du port.
Cette sortie est mise à 0 par front montant de WR c'est-à-dire lors d’une opération de sortie sur le
port associé. Elle sera remise à 1 par front descendant de ACK : (réponse du périphérique comme
quoi il a bien reçu la donnée).
• INTR (Interrupt request output) Demande d’interruption: Signal en sortie. Cette sortie passe à 1
sur front montant de ACK si le masque qui lui est associé est à 1. Elle est remise à 0sur le front
montant de descendant de WR .

Fonctionnement

Pour la sortie en mode 1, le microprocesseur écrit la donnée dans le port A ou B. Le front montant
de WR fait cesser l’interruption du µP (INTR=0), et met OBF  0 pour signaler au périphérique que
son buffer de sortie est plein et qu’il peut donc venir chercher une donnée. Ayant reçu la donnée ce
dernier répond par ACK  0 qui a pour effet de faire cesser OBF  1 . De nouveau ACK  1 , OBF  1 et
INTE=1 (par le bit SET/RESET de PC6 pour A et celui de PC2 pour B) fait interrompre le µP pour
que celui-ci écrive la donnée suivante.

Mot de commande

Mot d’état (port A/ port B) : adresse port C

6.3.3. Mode 2 : Entrée/Sortie Bus bidirectionnel

Il est impossible de transférer des données dans deux directions à travers un port unique à 8 bits.
Le mode 2 est valable uniquement pour le groupe A. Cinq bit du port C sont utilisés pour le
contrôle dans ce mode.

36
Hafedh ABID

Figure 6.5

Mot de commande

Mot d’état (port A/ port B) : adresse port C

6.4. l’interface centronics


Le port parallèle (ou imprimante) permet la transmission de 8 bits à la fois. On dispose
ainsi de huit lignes de données (D0 à D7) de quatre lignes de contrôle (en sorties) et de cinq
lignes d’état (en entrées). Il est simple d’emploi, mais cette simplicité se paie par une rapide
limitation des possibilités. L’un des principaux inconvénients est que le bus de données est
unidirectionnel (limité aux sorties de données). Cette limitation a été enlevée pour les
nouveaux ordinateurs, où le mode bidirectionnel est valable dans leur SETUP.
Sur le IBM-PC et compatible, on trouve les ports LPT1 et LPT2, dont les adresses de
différents registres sont données par le tableau suivant :
Port de données Port de Status Port de contrôle
LPT1 378H ou 3BCH 379H ou 3BDh 37AH ou 3BEH
LPT2 278H 279H 27AH
Le Schéma suivant présente le brochage du connecteur DB25 et les adresses des
différentes lignes.

37
Hafedh ABID

1
Port parallèle LPT1 :
STROBE
14
2
D0
AUTO FEED
- Le bus de données (sorties) :378H
15
ERROR
3
16
D1
INIT
D7 D6 D5 D4 D3 D2 D1 D0
4
D2
17
SELECT IN
5
18
D3
GND
- Port de contrôle (sorties) : 37AH
6
D4
19
7
GND
D5
x x x x Select init Autofeed Srobe
20
8
GND
D6
in
21
9
GND
D7
- Port de Status (entrées) : 379H
22
GND
10
23
ACKNOWLEDGE
GND
Bu Ac Parer. select Err x x x
11
24
BUSY sy kn end or
GND
12
PAPER END
25
GND
13
DETEC
DB25

Figure 6.6

38
Hafedh ABID

EXERCICE call temp

dosseg mov dl,'2'


.model small int 21h
.data mov al,marche2
adr equ 378h ;adr du port // out dx,al
adrc equ 37Ah call temp
adrs equ 379h
arret db 0 ; 00 mov dl,'0'
marche1 db 01 ; 01 int 21h
marche2 db 02 ; 10 mov al,arret
.code out dx,al
mov ax,@data
mov ds,ax ;--------------------------retour au dos
;-----------------------fonctionnement mov ax,4c00h
int 21h
mov dx,adr temp proc
mov cx,0FFFFh
mov ah,2 bcl: nop
mov dl,'1' mov bx,cx
int 21h mov cx, 0AFFh
mov al,marche1 imbr: nop
out dx,al loop imbr
call temp mov cx,bx
loop bcl
mov dl,'0' ret
int 21h temp endp
mov al,arret
out dx,al end

39

Vous aimerez peut-être aussi