Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Le port parallèle
Présentation.
Destiné à l'origine à l'imprimante du PC, le port parallèle fait l'objet de nombreuses applications.
Il est matérialisé par un connecteur DB 25 femelle et possède un nombre important de broches utiles pour
l'émission et la réception de signaux logiques aux normes TTL (0/5V).
Il est nécessaire de bien connaître le fonctionnement du port parallèle afin de pouvoir le programmer pour de
multiples utilisations (lecture de cartes à puce, pilotage de cartes électroniques, programmation d'un
microcontrôleur par le port parallèle,...).
Sur les machines d’aujourd’hui le port parallèle fonctionne selon plusieurs modes que l’on choisit dans le setup.
Emission seulement :
Mode compatible "Centronics" ou mode standard
Réception uniquement
Mode Nibble
4 bits des lignes de contrôle sont utilisés pour les données.
Hewlett Packard Bi-tronics
Mode Byte
8 bits de données en entrée.
Bi-directionel
EPP :Enhanced Parallel Port utilisé par les périphériques évolués...
ECP Extended Capability Port utilisé par les périphériques évolués comme les nouvelles imprimantes ou les scanners
Le registre de données : Ce registre permet de positionner les broches de données de la liaison par simple
écriture.
Le registre d’état : Ce registre est accessible uniquement en lecture (surtout éviter d’y écrire car on rapporte
des cas de dommage au PC). Il reflète l’état des broches correspondantes de la prise.
Bit 7 6 5 4 3 2 1 0
Nom /BUSY ACK PE SELECT /ERROR X X X
Le "/" indique "Logique Inversée" et X : Indéfini
Le registre de contrôle : Il permet de positionner différents bits contrôlant la liaison (et les broches
correspondantes de la prise). Ce dernier registre est accessible à la fois en lecture et en écriture.
Bit 7 6 5 4 3 2 1 0
Nom X X BIT CTRL IRQ ENABLE SELECT IN /INIT AUTOFEED /STROBE
En principe, la programmation s’effectue, par exemple en langage C/C++, par des instructions spécialisées de la
bibliothèque "conio.h" qu’il faudra inclure dans les projets :
Ecrire sur le port des données :
En C : outportb(378h,Valeur_que_vous_voulez);
En C++ : _outp(378h,Valeur_que_vous_voulez);
Lire sur le port d'état de l'imprimante :
En C : valeur = inportb(379h); // retourne la valeur du port
En C++ : valeur = _inp(379h);
if(argc<2)
{
printf("Utilisation\n\n");
printf("partest1.exe ,,\n\n\n");
return 0;
}
if(!strcmp(argv[1],"read"))
{
data = _inp(atoi(argv[2]));
printf("Data lues depuis le port ");
printf("%d\n\n\n\n",data);
}
if(!strcmp(argv[1],"write"))
{
_outp(atoi(argv[2]),atoi(argv[3]));
printf("Data envoyées au port ");
printf("%s\n\n\n\n\n",argv[3]);
}
return 0;
}
On peut compiler le projet afin d’obtenir l’exécutable partest1.exe que l’on copiera dans « d:\ ».
Pour tester le programme, on peut dans une fenêtre DOS taper la commande d:\partest1 write 888 255 qui doit
allumer les LEDS 1 à 8 (write est la commande d’écriture, 888 soit 0x378 est l’adresse et 255 représente la
donnée).
Si on entre la commande d:\partest1 read 888 on obtient les données du registre de données mais non l’état des
lignes du port. Il faudra positionner le bit 5 du registre de contrôle à « 1 » afin de valider le mode bidirectionnel
ce que l’on obtient par la commande d:\partest1 write 890 32
Attention : Cet exemple de programme ne fonctionne pas pour les systèmes Windows NT/2000/XP car il faudra
utiliser un driver particulier comme nous le verrons dans la suite (inpout32.dll).