Vous êtes sur la page 1sur 15

UTILISATION DES ENTREES DU PORT PARALLELE

.
Nous allons voir à travers ce texte comment utiliser les 5 entrées logiques
du registre d'état du port parallèle.
Ces entrées vont servir à raccorder les capteurs situés sur le réseau.

En plus des 8 bits de données qui servent à la transmission des caractères


à imprimer, le port parallèle possède aussi des bits qui servent de
communication entre l'imprimante et l'ordinateur . Les informations
échangées sont des informations d'état sous forme de signaux de 5V
continu.
Le registre d'état du port parallèle est à l'adresse $0379.

Le schéma ci-dessous donne le raccordement de ces entrées.


Ces 5 entrées sont référencées :
broche 10 : Acknoledge
broche 11 : /Busy (lire: busy barre)
broche 12 : Paper End
broche 13 : Select
broche 15 : Error

Correspondance de ces entrées avec le registre d'état :

Ces entrées vont permettre de raccorder des contacts situés sur le réseau .
Dans la mojorité des ce seront des ILS.

Le câblage du connecteur 25 points mâle utilisé pour les sorties est


complété suivant le schéma ci-dessous.
Dans la suite, les entrées seront repérées de E1 à E5.

PROGRAMMATION DES ENTREES EN TURBO PASCAL

Comme pour les sorties, nous allons mettre en place des procédures qui
permettront de simplifier la rédaction d'un programme de déplacement des
trains.
Nous allons utiliser la technique du masquage pour isoler un bit du registre
d'état sans se préoccuper de l'état des autres bits.
Les entrées sont tirées au +5V . Quand un capteur est actionné , l'entrée
correspondante est à la masse et prend donc valeur binaire 0.
Nous allons utiliser un mot de 8 bits (masque) qui comportera un 1 à
l'emplacement du bit que l'on veut tester et des 0 pour tous les autres bits.
Et ensuite nous allons effectuer une opération ET logique avec le registre
d'état. Si le résultat vaut 1, alors l'entrée correspondante n'est pas
actionnée, si le résultat vaut 0, alors l'entrée correspondante est actionnée.
Pour le bit /busy , il faut tenir un résultat inverse.

Exemple :
Dans cet exemple, on veut tester l'état de l'entée E4. On utilise un mot
(masque) qui contient un 1 à l'endroit se E4 et des 0 dans les autres cases.
On effectue une opération ET bit à bit , la valeur du résultat est 0 . Donc
l'entrée E4 est actionnée.

Autre exemple :

Dans cet exemple, on veut tester l'état de l'entrée E3.


On utilise un mot (masque) qui contient un 1 à l'endroit de E3 et des 0 dans
toutes les autres cases.
On effectue l'opération ET bit à bit . Le résultat est $20 ou 32 en décimal.
Cela signifie que l'entrée E3 n'est pas actionnée.

Nous allons maintenant transcrire tout cela en Turbo Pascal.

En premier lieu il faut déclarer les variables deE1 à E5. Le format du


registre résultat est de 1 octet, donc on déclare les variables entrées
comme "byte".
On va donc compléter le rubrique Var du programme.

Ensuite , nous allons écrire une procédure de calcul des entrées comme vu
précédemment.

Explication :

L'entrée E1 est à l'emplacement du bit3 du registre d'état.


Nous utilisons un mot masque qui comporte un 1 à l'emplacement du bit3
et des 0 dans les autres cases.
Le masque a pour valeur 23=8 , ou $08 en hexadécimal.
Si le résultat de l'opération ET (and) vaut 8 , cela signifie que le bit3 du
registre d'état est à 1 , donc que le capteur E1 n'est pas actionné, donc
E1=0.
Sinon (else) E1=0.

A la suite du test de E1 , suffit d'écrire le programme des autres entrées.


Il faut faire attention à l'entrée /busy qui est invesée par rapport aux autres
entrées.

Maintenant, il faut déclarer cette procédure dans le progamme principal.


Cette procédure doit être scrutée en permanence, donc placée dans la
boucle repeat ...until Keypressed.

Si certains points vous semblent obscurs, vous pouvez me contacter , je


me ferai un plaisir de vous répondre.

Visualisation de l'état des entrées sur l'ecran de supervision.

Il est intéressant de pouvoir superviser en temps réel l'état des entrées.


Pour ce faire nous allons élaborer un petit programme qui va afficher sur
l'écran de l'ordinateur l'état 1 ou 0 des entrées E1 à E5.
Nous allons écrire une procedure : Etat_ entrees .
L'instruction Gotoxy (colonne , ligne) permet de positionner le curseur à
une colonne et une ligne de l'écran .
Write est l'instruction qui permet d'écrire à l'endroit du curseur.
(Voir le manuel de programmation du Turbo Pascal).

Il faut déclarer la procédure dans le programme principal.

Après compilation et lancement du programme vous devez obtenir une


présentation de ce genre.

La démarche qui a été adoptée pour le port parallèle est applicable pour
toute carte d'entrées et sorties insérée dans un slot de l'ordinateur.
Ces cartes peuvent être au format ISA (devenues rares) ou au format PCI.
En principe , ces cartes sont livrées avec la notice technique qui doit
donner les adresses des différents registres.

Quelques petits programmes sur les entrées et sorties du port parallèle.

REGISTRE DE CONTROLE DU PORT PARALLELE

Le registre de contrôle du port parallèle à l'adresse $037A , permet de


disposer de 4 sorties supplémentaires ,tout ou rien 5V continu. Ce qui
donne un total de 12 sorties et 5 entrées.
La mise en oeuvre de ce registre est basée sur le même principe que le
registre de données (avec un petit plus de subtilités).
Nous aurons à écrire 8 procédures correspondant aux mises à 1 et à 0 de
chaque sortie.

Représentation schématique du registre de contrôle.


IL faut une attention particulière :
/strobe ; /autofeed et /selectInput sont inversés C'est-à-dire que pour
que les sorties S8 , S9 et S11 soient actives , il faut que ces trois signaux
soient au niveau bas (0V).
Pour que la sortie S10 soit active, il faut que Initialize soit au niveau haut
(+5V).
Ces inversions seront traitées en logique programmée dans les procédures
relatives au traitement de ces sorties.

Nous allons associer à chaque signal une sortie de S8 à S11 (suite des
sorties de S0 à S7 du registre de données).

Correspondance entre le registre d'état et le brochage du connecteur DB25 points femelle de


l'ordinateur.
Broche 1 : /Strobe
Broche 14 : /Autofeed
Broche 16 : Initialize
Broche 17 : /SelectInput.

Chaque sortie doit être amplifiée avec un circuit ULN2803 pour pouvoir
alimenter un relais 12V continu, dont un contact NO sera utilisé dans un
automatisme.

Schéma de câblage des sorties.


(Encore une fois, je m'excuse pour les traits qui ne sont pas droits. Mais
vous avez l'habitude maintenant.
Le principal est que le schéma soit compréhensible et juste.)

Comme pour les sorties du registre de données, il possible (et même


conseillé) de mettre une Led en parallèle sur chaque relais.

Etude des procédures en Turbo Pascal ,d'activation et de désactivation des sorties .

Prenons le cas de la sortie S8 qui correspond à /Strobe.


Pour que cette sortie soit active ,et sans modifier l'état des autres, nous
allons effectuer une opération ET logique sur mot de manière à positionner
/Strobe à 0.

Il faut fabriquer un mot (masque) comportant un 0 à l'emplacement de bit


b0, et des 1 aux autres emplacements. Ce mot prend la valeur $FE.
Ensuite on effectue un ET logique entre le registre d'adresse $037A et le
masque, puis on range le résultat à l'emplacement $037A qui correspond
au registre de contrôle.
De ce fait, /Strobe prend la valeur 0, et la sortie S8 est mise à 1. Les
autres sorties n'ont pas changé de valeur , car : ? ET 1 = ? (voir la table de
vérité de la fonction ET) .
Pour la mise à 0 de la sortie S8, on effectue une opération OU logique avec le mot $01 de
manière à positionner le bit b0 à 1 et ne pas modifier les autres bits du registre d'état.

Pour les autres sorties , je laisse le soin de vérifier les opérations.

Ecriture des procédures.


Dans un premier temps il faut déclarer dans la section "var" , le registre que
nous pouvons appeler : Sorties2.

Ensuite dans le programme principal nous allons définir la variable Sorties2.


Maintenant nous pouvons écrire les procédures de S8 à S11 à la suite des
procédures des sorties de S0 à S7.

Vous aimerez peut-être aussi