Как превратить персональный компьютер в измерительный комплекс | страница 40
Версия на языке TurboPASCAL называется MAXIM8.PAS и также включает небольшую прикладную часть, выводящую на экран результаты двадцати измерений.
program maxim.8;
uses crt;
var n,f,e: byte;
b,g: integer;
d: real;
procedure init;
begin
b:=$3F8; n:=8;
port[b+4]:=1;
delay(100);
port[b+3]:=64
delay(500);
end;
procedure acquisition;
begin
port[b+4]:=0; d:=0;
port[b+4]:=2;port[b+4]:=2;
port[b+4]:=2;port[b+4]:=0;
for f: =0 to n-1 do
begin
port[b+4]:=2;
e:=port[b+6] and 16;
port[b+4]:=0;
if e=16 then d:=d+exp((n-1-f)*ln(2))
end;
d: = (5*d)/(exp((n)*ln(2)) -1);
port[b+4]:=1;
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 *)
Драйвер на языке BASIC, предназначенный для устройств на базе TLC 549 (рис. 4.1 и 4.13), называется 8BITS.BAS. Он также предназначен для работы с последовательным портом СОМ 1 (3F8h).
10 REM — 8BITS —
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
110 FOR F=0 TO N-1
120 OUT B+4,2
>… В OCR-файле отсутствуют стр. 80, 81…
b:=$3F8; n:=10;
port[b+4]:=1;
delay(100);
port[b+3]:=64;
delay(500);
end;
procedure acquisition;
begin
port[b+4]:=0; d:=0;
for f:=0 to n-1 do
begin
port[b+4]:=2;
e:=port[b+6] and 16;
port [b+4]: =0;
if e=16 then d:=d+exp((n-1-f)*ln(2));
end;
d:=(5*d)/(exp((n)*ln(2))-1);
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 требует особого драйвера MAXIM10.BAS и также предназначено для работы с последовательным портом СОМ1 (3F8h).
10 REM — MAXIM10 —
20 KEY OFF: CLS
30 B=&H3F8: REM COM1:
40 N=10: 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
Его версия на языке TurboPASCAL называется MAXIM 10.PAS.
program dixbits;
uses crt;
var n,f,e: byte;
b,g: integer;
d: real;
procedure init;
begin
b:=$3F8; n:=10;
port[b+4]:=1;
delay(100);
port[b+3]:=64;
delay(500);
end;
procedure acquisition;
begin
port[b+4]:=0; d:=0;
for f:=0 to n-1 do