Il existe différents types de liaison parallèle, définies dans le standard IEEE 1284 :
-
mode compatible (SPP, Standard Parallel Port) (unidirectionnel)
-
mode 4 bits, ou NIBBLE MODE (unidirectionnel)
-
mode 8 bits, ou BYTE MODE (bidirectionnel)
-
mode EPP (Enhanced Parallel Port, port parallèle étendu) (bidirectionnel)
-
mode ECP (Extended Capability Port, port à capacités étendues) (bidirecionnel)
Ceux-ci sont pour la plupart paramètrables dans le BIOS (setup).
Le mode EPP est présent sur la plupart des machines actuelles, et on le préférera si l'on désire avoir les 8 bits de données en entrée et sortie, ou on choisira le mode compatible SPP présent sur toutes les machines si on désire avoir les 8 bits de données seulement en sortie.
Outre ces 8 lignes de données, le port parallèle dispose également de 4 lignes de contrôle (sortie) et 5 lignes d'état (entrée).
Connecteurs
Voici la numérotation des broches des deux principaux connecteurs parallèles, SUB-D 25 broches du côté du PC et Centronics 36 broches du côté de l'imprimante :
Et voici maintenant les brochages de ces connecteurs :
connecteur
SUB-D 25 |
connecteur
Centronics |
Fonction |
Niveau de
repos |
Direction |
Registre |
| 1 |
1 |
Strobe |
1 |
S |
contrôle |
| 2 |
2 |
donnée D0 |
0 |
E/S |
donnée |
| 3 |
3 |
donnée D1 |
0 |
E/S |
donnée |
| 4 |
4 |
donnée D2 |
0 |
E/S |
donnée |
| 5 |
5 |
donnée D3 |
0 |
E/S |
donnée |
| 6 |
6 |
donnée D4 |
0 |
E/S |
donnée |
| 7 |
7 |
donnée D5 |
0 |
E/S |
donnée |
| 8 |
8 |
donnée D6 |
0 |
E/S |
donnée |
| 9 |
9 |
donnée D7 |
0 |
E/S |
donnée |
| 10 |
10 |
Acknowledge |
1 |
E |
état |
| 11 |
11 |
Busy |
0 |
E |
état |
| 12 |
12 |
Paper end |
0 |
E |
état |
| 13 |
13 |
Select |
0 |
E |
état |
| 14 |
14 |
Autofeed |
1 |
S |
contrôle |
| 15 |
32 |
Error |
1 |
E |
état |
| 16 |
31 |
Initialize |
1 |
S |
contrôle |
| 17 |
36 |
Select input |
1 |
S |
contrôle |
| 18-25 |
17, 33, 19-29 |
Ground |
|
|
|
On retrouve bien 5 lignes en entrée, 4 en sortie, et les 8 lignes de données en entrée-sortie dans le cas d'un mode bidirectionnel.
Registres de commande
Ces lignes sont commandées directement par un bit, dans trois registres différents, comme précisé dans la dernière colonne, et dans le tableau suivant, et le niveau de repos correspond au niveau de la ligne lorsque le bit dans le registre est à 0, c'est à dire que si le niveau de repos est un le niveau de la ligne et le bit correspondant dans le registre sont inversés.
| Registre de données |
| bit 0 |
D0 |
| bit 1 |
D1 |
| bit 2 |
D2 |
| bit 3 |
D3 |
| bit 4 |
D4 |
| bit 5 |
D5 |
| bit 6 |
D6 |
| bit 7 |
D7 |
|
| Registre d'état |
| bit 3 |
Error |
| bit 4 |
Select |
| bit 5 |
Paper end |
| bit 6 |
Acknowledge |
| bit 7 |
Busy |
|
| Registre de contrôle |
| bit 0 |
Strobe |
| bit 1 |
Autofeed |
| bit 2 |
Initialize |
| bit 3 |
Select input |
| bit 4 |
Autorisation d'interruption |
| bit 5 |
direction données
(0 = sortie, 1 = entrée) |
|
Le bit 5 n'est bien entendu adressable que sur les ports bidirectionnels.
Différentes adresses peuvent exister pour les registres selon le système, le tableau suivant en présente les différentes possibilités (0x signifie que les valeurs sont en hexadécimal) :
| port de données |
0x956 |
0x3BC |
0x888 |
0x378 |
0x632 |
0x278 |
| port d'état |
0x957 |
0x3BD |
0x889 |
0x379 |
0x633 |
0x279 |
| port de contrôle |
0x957 |
0x3BE |
0x89A |
0x37A |
0x634 |
0x27A |
Cependant sur les systèmes actuels le port LPT1 se situe toujours à l'adresse 0x378 et le port LPT2 à l'adresse 0x278, mais pour en être sûrs vous pouvez suivre dans Windows : Panneau de configuration >> Système >> Gestionnaire de périphérique >> Ports (COM et LPT) >> Port imprimante (LPTx) >> Ressources >> Plage d'entrée/sortie qui vous indiquera les ports utilisés, et également les requêtes d'interruptions (IRQ) si vous désirez les utiliser (bit 4 du registre de contrôle), qui sont généralement IRQ7 pour LPT1 et IRQ5 pour LPT2.
Lignes de données (378h)
À moins que vous ne possédiez une interface parallèle étendue, ce registre n'est accessible qu'en écriture. L'écriture d'un octet dans ce registre place immédiatement les lignes D0-D7 aux niveaux demandés sur la prise. Il est une croyance populaire qui dit que les données ne deviennent valables en sortie que si la ligne STROBE est à l'état bas, mais il n'en est rien. Il n'y a pas de logique interne de ce type dans les interfaces parallèles.
|
7 6 5 4 3 2 1 0
* . . . . . . . D7
. * . . . . . . D6
. . * . . . . . D5
. . . * . . . . D4
. . . . * . . . D3
. . . . . * . . D2
. . . . . . * . D1
. . . . . . . * D0
|
Etat de l'imprimante (379h)
Ce registre, accessible uniquement en lecture, est l'image de l'état des lignes ERROR, SELECT, PE, ACK et BUSY. Il faut cependant remarquer que le bit 7 du registre (correspondant à l'image de la ligne BUSY) est inversé par rapport à l'entrée. Un inverseur est en effet présent entre la prise et le registre. Attention donc à ne pas se tromper.
|
7 6 5 4 3 2 1 0
* . . . . . . . /BUSY (logique inverse)
. * . . . . . . /ACK
. . * . . . . . PE
. . . * . . . . SELECT
. . . . * . . . /ERROR
. . . . . * * * Indéfini
|
Commande de l'imprimante (37Ah)
Ce dernier registre est accessible à la fois en lecture et en écriture. Les 4 premiers bits sont l'image des lignes StrOBE, AUTOFEED, INIT et SELECT IN (attention ici aussi aux inverseurs placés entre la prise et le registre). Le bit 4 autorise ou non le déclenchement d'une interruption lorsque ACK passe à l'état bas (c'est à dire quand l'imprimante valide la réception d'un caractère).
Le bit BIT CtrL n'a de sens que pour les ports bidirectionnels (EPP, ECP). En mettant ce bit à 1, le port est accessible en écriture.
|
7 6 5 4 3 2 1 0
* * . . . . . . Inutilisées
. . * . . . . . BID CtrL
. . . * . . . . IRQ ENABLE
. . . . * . . . SELECT IN (logique inverse)
. . . . . * . . /INIT
. . . . . . * . AUTOFEED (logique inverse)
. . . . . . . * /STROBE (logique inverse)
|
|
|