program capimp;
uses dos,crt;
const adr1=$3BD;(*prise imprimante normale LPT1:*)
adr2=$379;(* prise imprimante LPT2:*)
adr3=$279;(*prise imprimante LPT3:*)
delai=10;
const tabmasque : array[0..7] of byte
= (1,2,4,8,16,32,64,128);
var adresse:word;
function litcappar(numbit:byte):word;
var i:word;
test:word;
begin
test:=port[adresse] ;end;
i:=0;
port[adresse+1]:=port[adresse+1] or tabmasque[numbit];
repeat inc(i) until (i>3999) or (port[adresse]<>test);
port[adresse+1]:=port[adresse+1] and (not tabmasque[numbit]);
litcappar:=i;
begin
adresse:=adr2;end.
repeat
write(litcappar(0),' ');delay(delai);
write(litcappar(1),' ');delay(delai);
write(litcappar(2),' ');delay(delai);
writeln(litcappar(3));delay(delai);
until keypressed;
Remarque : le petit délai introduit entre chaque mesure est destiné
à permettre au condensateur de se décharger complètement.
Sa valeur dépend de votre montage, et en particulier des valeurs
de la résistance et du condensateur. La valeur numérique
renvoyée par la fonction LitCappar dépend de la rapidité
du microprocesseur de votre ordinateur. Même si la résistance
est nulle, la valeur renvoyée par LitCappar ne le sera pas, car
il y a une résistance interne dans l'ordinateur, qui empêche
que le condensateur soit rechargé instantanément. Cette valeur
n'est pas identique selon les différentes broches. Si, au contraire,
la résistance est infinie (lorsque les broches ne sont pas connectées),
les valeurs renvoyées par la fonction sont aberrantes, puisqu'il
n'y a ni charge, ni décharge de condensateur.
Mise à jour: 26/02/1998
Auteur : Pierre DIEUMEGARD