Как превратить персональный компьютер в измерительный комплекс | страница 39
10 REM — ADC 10 —
20 KEY OFF: CLS
30 B=&H378: REM LPT1:
40 N=8: REM число разрядов
50 OUT В, 2
60 FOR T=0 TO 100: NEXT T
70 OUT B,254
80 FOR T=0 TO 500: NEXT T
90 GOTO 200
100 OUT B,252: D=0: REM получение данных
110 FOR F=0 TO N-1
120 OUT B,253
130 E=INP(B+1) AND 128
140 OUT B,252
150 IF E=0 THEN D=D+2>^(N-1-F)
160 NEXT F
170 D=5*D/(2^N-1)
180 OUT B,2: RETURN
190 REM (c) 1997 Patrick GUEULLE
Шестнадцатеричная величина 378 в строке 30 предполагает, что ADC 10 подключен к параллельному порту LPT1. Чтобы подключить ADC 10 к порту LPT2 (если таковой имеется), надо заменить эту величину на 278 или на любую другую величину, соответствующую установкам BIOS используемого компьютера.
Разработана также версия на языке TurboPASCAL, которая пригодится, если нужна более высокая частота дискретизации.
Исходный текст ADC10.PAS представляет собой не просто драйвер. В качестве примера он содержит небольшую прикладную программу вывода на экран результатов двадцати последовательных измерений, проводимых с интервалом в 500 мсек.
program adc10;
uses crt;
var n,f,e: byte;
b,g: integer;
d: real;
procedure init;
begin
b:=$378; n:=8;
port [b]:=2;
delay(100);
port [b]:=254;
delay(500);
end;
procedure acquisition;
begin
port[b]:=252; d:=0;
for f:=0 to n-1 do
begin
delay(2); port[b]:=253;
e:=port[b+1]: and 128;
port[b]:=252;
if e=0 then d:=d+exp((n-1-f) *ln(2));
end;
d:=(5*d)/(exp((n)*In(2))-1);
port[b]:=2;
end;
procedure affiche;
begin
acquisition;
d:=(int(100*d))/100;
writeln(d);
delay(500);
end;
begin
clrscr;
init;
for g:=1 to 20 do
begin
affiche;
end;
end.
(* COPYRIGHT 1997 Patrick GUEULLE *)
Устройство на базе МАХ 1243 также требует особого драйвера, версия которого на языке BASIC называется MAXIM8.BAS. Он определяет 8-разрядный режим работы для данного компонента, вообще-то представляющего собой 10-разрядное устройство.
10 REM — MAXIM8 —
20 KEY OFF: CLS
30 B=&H3F8: REM COM1:
40 N=8:REM число разрядов
50 OUT B+4,1
60 FOR T= 0 TO 100: NEXT T
70 OUT B+3,64
80 FOR T=0 TO 500: NEXT T
90 GOTO 200
100 OUT B+4,0: D=0: REM ACQUISITION
105 OUT B+4,2: OUT B+4,0
110 FOR F=0 TO N-1
120 OUT B+4,2
130 E=INP(B+6) AND 16
140 OUT B+4,0
150 IF E=16 THEN D=D+2^(N-1-F)
160 NEXT F
170 D=5*D/(2^N-1)
180 OUT B+4 1: RETURN
190 REM (c) 1997 Patrick GUEULLE
Шестнадцатеричная величина 3F8 в строке 30 предполагает, что устройство подключено к последовательному порту СОМ1. Чтобы иметь возможность использовать COM2 вместо СОМ1, надо заменить эту величину на 2F8, а при использовании COM3 или COM4 рекомендуется предварительно проверить установки BIOS по экрану настройки SETUP, выводимому на дисплей при включении ПК.