Добавил:
Fragga
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:GEL
.PASprogram gel; { Їа®Ја ¬¬ § «ЁўЄЁ ЈҐ«п }
uses
crt,dos;
label ss;
const
Shag=0.0124;
Shag1=0.0062;
type
Koord=record
Xbeg, zasl, Xend, Ybeg, Yend : real;
end;
var
c,d,e:word;
a,b,u, f,l,Place , Lim,R00,R01,R08:byte ;
smeX, smeY:real;
k:byte;
FlPr,number,r,Mash,Mash1:integer;
Sp,Sp1, { NumberKomm, } Sp0:byte;
ttime:byte; { ўаҐ¬п б ¬®¬Ґв а §¬ҐиЁў Ёп ЈҐ«п }
Time_Zal:integer; { а ббзЁв ®Ґ ўаҐ¬п ®¤®Ј® Їа®е®¤ § «ЁўЄЁ }
Temp:byte; { ⥬ЇҐа вга ®Єаг¦ о饣® ў®§¤ге }
Start_Step: integer; { бЄ®«мЄ® и Ј®ў а §Ј® ®бв «®бм }
Start_Time:integer ; { ЇҐаҐ¬Ґ п ¤«п а §Ј® }
NumberPoddon:byte; { ®¬Ґа Ї®¤¤® , Є®в®ал© § «Ёў Ґ¬ }
NumberMax:integer; { Є®«ЁзҐбвў® Є®¬¬гв в®а®ў Ї®¤¤®Ґ }
oll_full:byte; { Є®«ЁзҐбвў® Ї®«®бвмо § «Ёвле Є®¬¬гв в®а®ў Ї®¤¤®Ґ }
Time_Gel : word; { Є®«ЁзҐбвў® Їа®е®¤®ў § «ЁўЄЁ ЈҐ«п }
KoordYPlace, KoordXPlace : real; { ᬥ饨Ґ Ї®¤¤® ®в®бЁвҐ«м® з « Є®®а¤Ё в }
massiv1:file of integer; { д ©« б Є®«ЁзҐбвў®¬ Є®®а¤Ё в }
massiv:file of real; { д ©« б Є®®а¤Ё в ¬Ё }
KoordX,KoordY:real; { Є®®а¤Ё вл ў бв®п饥 ўаҐ¬п }
Mass1 : Array [1..1000] of Koord; { ¬ ббЁў Є®®а¤Ё в }
err:byte; { ЇаЁ§ Є ¦ вЁп Є®ЇЄЁ Ћ‘’ ў® ўаҐ¬п ¤ўЁ¦ҐЁп }
Speed: Array [0..9] of byte; { бЄ®а®бвм § «ЁўЄЁ Є®¬¬гв в®а }
flag_stop:byte; { ЇаЁ§ Є ¦ вЁп Є®ЇЄЁ бв®Ї }
flag_ost:byte; { ЇаЁ§ Є ¦ вЁп Є®ЇЄЁ ®бв ®ўЄ }
flag_pusk:byte; { ЇаЁ§ Є ¦ вЁп Є®ЇЄЁ ЇгбЄ }
flag_prod:byte; { ЇаЁ§ Є ¦ вЁп Є®ЇЄЁ Їа®¤®«¦ҐЁҐ }
avt:byte; { ЎЁв ᢥ⮤Ё®¤ ўв®¬ вЁзҐбЄ®© а Ў®вл }
man:byte; { ЎЁв ᢥ⮤Ё®¤ агз®© а Ў®вл }
poddon:byte; { ®¬Ґа Ї®¤¤® }
podd:byte; { ЎЁв ᢥ⮤Ё®¤ Ї®¤¤® }
litr:byte; { ЎЁв ᢥ⮤Ё®¤ «Ёва }
litr_bottl:byte; { ®Ўкс¬ Ўгвл«ЄЁ }
OutLitr:byte; { ЇҐаҐ¬Ґ п ¤«п ўлў®¤ ®Ўкс¬ Ўгвл«ЄЁ }
new_bottl:word; { ¬ ЄбЁ¬ «м®Ґ Є®«ЁзҐбвў® § «Ёў Ґ¬ле Є®¬¬гв в®а®ў }
ostatok: word; { Є®«ЁзҐбвў® ЈҐ«п ў Ўгвл«ЄҐ }
Led_ostatok:byte; { ЎЁв ᢥ⮤Ё®¤ бЄ®«мЄ® ®бв «®бм }
Led_ready: byte; { ЎЁв ᢥ⮤Ё®¤ Ј®в®ў }
h, min , s , ms , time: word; { ЇҐаҐ¬ҐлҐ ўаҐ¬ҐЁ }
Led_time:byte; { ЎЁв ᢥ⮤Ё®¤ ўаҐ¬п }
{************************************************************************}
{ з⥨Ґ д ©« б ¤ЁбЄ }
procedure Read_File;
begin
{ ®Ўг«ҐЁҐ ¬ ббЁў Є®®а¤Ё в }
for r:=1 to 1000 do
begin
Mass1[r].Xbeg:=0;
Mass1[r].Ybeg:=0;
Mass1[r].Xend:=0;
Mass1[r].Yend:=0;
Mass1[r].zasl:=0;
end;
number:=1;
assign (Massiv1, 'a:\tp\1gel.jkl' );
reset(massiv1);
read(massiv1,numberMax);
close(massiv1);
assign (Massiv,'a:\TP\gel.jkl');
reset(massiv);
read(massiv,smeX);
read(massiv,smeY);
for r:=1 to numberMax do
begin
read(massiv,Mass1[r].Xbeg);
read(massiv,Mass1[r].Ybeg);
read(massiv,Mass1[r].Xend);
read(massiv,Mass1[r].Yend);
read(massiv,Mass1[r].zasl);
end;
close(massiv);
{§¤Ґбм бзЁвлў овбп ¤ лҐ б ¤ЁбЄ }
end;
{***********************************************************************}
{***********************************************************************}
procedure tormoz;
begin
{ ЇаЁЎл«Ё в®зЄг , в®а¬®§Ё¬ ¤ўЁЈ ⥫ﬨ }
{ ўЄ«о票Ґ ¤ўЁЈ ⥫Ґ© }
Port[$301]:=19+128;
Port[$300]:=a;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=b;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
Port[$301]:=20+128;
{ § ¤Ґа¦Є в®а¬®¦ҐЁҐ ¤ўЁЈ ⥫Ґ¬ }
Delay(25);
{ ўлЄ«о票Ґ ¤ўЁЈ ⥫Ґ© }
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
Port[$301]:=20+128;
{ ®бв ®ўЁ«Ёбм в®зЄҐ }
{ ўлЄ«о票Ґ ўлб®Є®Ј® Їа殮Ёп ¤ўЁЈ ⥫Ё }
Port[$301]:=153;
Port[$300]:=1;
Port[$301]:=137;
Port[$301]:=153;
{ 㤥ঠЁҐ в®зЄҐ б Ї®¬®ймо ¤ўЁЈ ⥫Ґ© }
{ ўЄ«о票Ґ ¤ўЁЈ ⥫Ґ© }
Port[$301]:=19+128;
Port[$300]:=a;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=b;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
Port[$301]:=20+128;
delay(100);
end;
{*********************************************************************}
{ ўлў®¤ бЁЈ «®ў гЇа ў«ҐЁп и Ј®ўл¬Ё ¤ўЁЈ ⥫ﬨ }
procedure V_UP;
begin
if b=1 then b:=3
else if b=3 then b:=2
else if b=2 then b:=6
else if b=6 then b:=4
else if b=4 then b:=12
else if b=12 then b:=8
else if b=8 then b:=24
else if b=24 then b:=16
else if b=16 then b:=48
else if b=48 then b:=32
else if b=32 then b:=33
else if b=33 then b:=1;
end;
procedure V_DOWN;
begin
if b=1 then b:=33
else if b=33 then b:=32
else if b=32 then b:=48
else if b=48 then b:=16
else if b=16 then b:=24
else if b=24 then b:=8
else if b=8 then b:=12
else if b=12 then b:=4
else if b=4 then b:=6
else if b=6 then b:=2
else if b=2 then b:=3
else if b=3 then b:=1;
end;
procedure Rig_ht;
begin
if a=1 then a:=3
else if a=3 then a:=2
else if a=2 then a:=6
else if a=6 then a:=4
else if a=4 then a:=12
else if a=12 then a:=8
else if a=8 then a:=9
else if a=9 then a:=1;
end;
procedure Le_ft;
begin
if a=1 then a:=9
else if a=9 then a:=8
else if a=8 then a:=12
else if a=12 then a:=4
else if a=4 then a:=6
else if a=6 then a:=2
else if a=2 then a:=3
else if a=3 then a:=1;
end;
{***************************************************************************}
{***************************************************************************}
{ ¤ўЁ¦ҐЁҐ ®¤Ё и Ј }
procedure Step;
begin
case k of
8: begin
V_UP;
KoordY:=KoordY+Shag;
end;
2: begin
V_DOWN;
KoordY:=KoordY-Shag;
end;
4: begin
Le_ft;
KoordX:=KoordX-Shag;
end;
1: begin
Rig_ht;
KoordX:=KoordX+Shag;
end;
128: begin
V_UP;
Rig_ht;
KoordY:=KoordY+Shag;
KoordX:=KoordX+Shag;
end;
32: begin
V_DOWN;
Le_ft;
KoordY:=KoordY-Shag;
KoordX:=Koordx-Shag;
end;
64: begin
V_UP;
Le_ft;
KoordY:=KoordY+Shag;
KoordX:=KoordX-Shag;
end;
16: begin
V_DOWN;
Rig_ht;
KoordY:=KoordY-Shag;
KoordX:=KoordX+Shag;
end;
end;
{ ўЄ«о票Ґ ¤ўЁЈ ⥫Ґ© }
Port[$301]:=19+128;
Port[$300]:=a;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=b;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
port[$301]:=20+128;
{ § ¤Ґа¦Є ўа 饨Ґ ¤ўЁЈ ⥫п }
{ а §Ј® ¤ўЁЈ вҐ«п ў з «Ґ ¤ўЁ¦ҐЁп }
if Start_Step<>1 then
begin
Start_Step:=Start_Step - 1;
delay(Start_Step);
end;
Delay(1);
{ ўлЄ«о票Ґ ¤ўЁЈ ⥫Ґ© }
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
port[$301]:=20+128;
{ Їа®ўҐаЄ ¦ вЁп Є®Ї®ЄЁ Ћ‘’ }
Port[$301]:=152;
Port[$301]:=136; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R08:=Port[$300];
Port[$301]:=152;
if (( R08 and 4 ) = 4 ) then
begin
err:=4;
exit;
end;
end;
{***************************************************************************}
{************************************************************************}
{ Ї®¤Їа®Ја ¬¬ ў®§ўа йҐЁп ў в®зЄг 0,0 }
procedure GOTO_00;
begin
Start_Step:=Start_Time; { гбв ®ўЄ и Ј®ў ¤«п а §® }
{ ў®§ўа в ў в®зЄг 0,0 }
writeln('goto00');
Port[$301]:=144;
Port[$301]:=128; { бзЁвлў Ґ¬ ¤ взЁЄЁ Xmin Ё Ymin }
R00:=Port[$300];
Port[$301]:=144;
Repeat
case ( R00 and 3 ) of
1: begin
k:=2;
Step; { § ¬Єгв в®«мЄ® ¤ взЁЄ X }
end;
2: begin
k:=4;
Step; { § ¬Єгв в®«мЄ® ¤ взЁЄ Y }
end;
0: begin
k:=32;
Step; { Ё ®¤Ё ¤ взЁЄ Ґ § ¬Єгв }
end;
end;
Port[$301]:=16+128;
Port[$301]:=128; { бзЁвлў Ґ¬ ¤ взЁЄЁ Xmin Ё Ymin }
R00:=Port[$300];
Port[$301]:=16+128;
until ( R00 and 3 ) =3;
KoordX:=0; { ®Ўг«ҐЁҐ Є®®а¤Ё в }
KoordY:=0;
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
Port[$301]:=20+128;
end;
{*********************************************************************}
procedure CUT(Xn,Yn,Xk,Yk:real);
var
Napr:byte;
Ugol:real;
tt:word;
Nstep:LongInt;
begin
Start_Step:=Start_Time; { гбв ®ўЄ и Ј®ў ¤«п а §® }
{ ®ЇаҐ¤Ґ«ҐЁҐ ®б®ў®Ј® Їа ў«ҐЁп ¤ўЁ¦ҐЁп }
if abs(Xk-Xn) >= abs(Yk-Yn) then
{ ®б®ў®Ґ ¤ўЁ¦ҐЁҐ Ї® ®бЁ X }
if Xk >= Xn then Napr:=1 else Napr:=4
else { ®б®ў®Ґ Їа ў«ҐЁҐ ¤ўЁ¦ҐЁп Ї® ®бЁ Y }
if Yk >= Yn then Napr:=8 else Napr:=2;
case Napr of
1: begin { Їа ў«ҐЁҐ ¤ўЁ¦ҐЁп Ї® ®бЁ +X }
if Yk >= Yn then { Їа ў«ҐЁҐ Ї® ®бЁ +X +Y }
begin
Ugol:=(Yk-Yn)/(Xk-Xn);
Nstep:= Trunc((Xk-Xn)/ Shag );
for tt:=1 to Nstep do
begin
if ((KoordY+Shag)-(Yn+(KoordX-Xn+Shag)*Ugol))<= Shag1 then
begin
k:=128;
Step;
if err=4 then exit;
end
else
begin
k:=1;
Step;
if err=4 then exit;
end;
end ; { For tt }
end
else { Їа ў«ҐЁҐ Ї® ®бЁ +X -Y }
begin
Ugol:=(Yk-Yn)/(Xk-Xn);
Nstep:= trunc((Xk-Xn)/ Shag);
for tt:=1 to Nstep do
begin
if ((Yn+(KoordX-Xn+Shag)*Ugol) - (KoordY-Shag))<= Shag1 then
begin
k:=16;
Step;
if err=4 then exit;
end
else
begin
k:=1;
Step;
if err=4 then exit;
end ; { if }
end ; { for tt }
end ; { else }
end; { case 1 }
4: begin { Їа ў«ҐЁҐ ¤ўЁ¦ҐЁп Ї® ®бЁ -X }
if Yk >= Yn then { Їа ў«ҐЁҐ Ї® ®бЁ -X +Y }
begin
Ugol:=(Yk-Yn)/(Xn-Xk);
Nstep:= Trunc((Xn-Xk)/ Shag );
for tt:=1 to Nstep do
begin
if ((KoordY+Shag)-(Yn+(Xn-KoordX-Shag)*Ugol))<= Shag1
then
begin
k:=64;
Step;
if err=4 then exit;
end
else
begin
k:=4;
Step;
if err=4 then exit;
end ;
end ; { for tt }
end
else { Їа ў«ҐЁҐ Ї® ®бЁ -X -Y }
begin
Ugol:=(Yn-Yk)/(Xn-Xk);
Nstep:= trunc((Xn-Xk)/ Shag);
for tt:=1 to Nstep do
begin
if ((Yn-(Xn-KoordX+Shag)*Ugol) - (KoordY-Shag))<= Shag1
then
begin
k:=32;
Step;
if err=4 then exit;
end
else
begin
k:=4;
Step;
if err=4 then exit;
end; { if }
end ; { for tt }
end; { else }
end; { case 4 }
8: begin { Їа ў«ҐЁҐ ¤ўЁ¦ҐЁп Ї® ®бЁ +Y }
if Xk >= Xn then { Їа ў«ҐЁҐ Ї® ®бЁ +X +Y }
begin
Ugol:=(Xk-Xn)/(Yk-Yn);
Nstep:= Trunc((Yk-Yn)/ Shag );
for tt:=1 to Nstep do
begin
if ((KoordX+Shag)-(Xn+(KoordY-Yn+Shag)*Ugol))<= Shag1
then
begin
k:=128;
Step;
if err=4 then exit;
end
else
begin
k:=8;
Step;
if err=4 then exit;
end;
end;
end
else { Їа ў«ҐЁҐ Ї® ®бЁ +Y - X }
begin
Ugol:=(Xn-Xk)/(Yk-Yn);
Nstep:= trunc((Yk-Yn)/ Shag);
for tt:=1 to Nstep do
begin
if ((Xn-(KoordY-Yn+Shag)*Ugol) - (KoordX-Shag))<= Shag1
then
begin
k:=64;
Step;
if err=4 then exit;
end
else
begin
k:=8;
Step;
if err=4 then exit;
end ;
end;
end ;
end;
2: begin { Їа ў«ҐЁҐ ¤ўЁ¦ҐЁп Ї® ®бЁ -Y }
if Xk >= Xn then { Їа ў«ҐЁҐ Ї® ®бЁ -Y +X }
begin
Ugol:=(Xk-Xn)/(Yn-Yk);
Nstep:= Trunc((Yn-Yk)/ Shag );
for tt:=1 to Nstep do
begin
if ((KoordX+Shag)-(Xn+(Yn-KoordY+Shag)*Ugol)) <= Shag1
then
begin
k:=16;
Step;
if err=4 then exit;
end
else
begin
k:=2;
Step;
if err=4 then exit;
end ; { if }
end; { for tt }
end
else { Їа ў«ҐЁҐ Ї® ®бЁ -Y -X }
begin
Ugol:=(Xn-Xk)/(Yn-Yk);
Nstep:= trunc((Yn-Yk)/ Shag);
for tt:=1 to Nstep do
begin
if ((Xn-(Yn-KoordY+Shag)*Ugol) - (KoordX-Shag))<= Shag1
then
begin
k:=32;
Step;
if err=4 then exit;
end
else
begin
k:=2;
Step;
if err=4 then exit;
end;
end;
end ;
end;
end;
end; { Є®Ґж Ї®¤Їа®Ја ¬¬л }
{***********************************************************************}
{***********************************************************************}
{ ўлў®¤ Ё¤ЁЄ в®а Є®«ЁзҐбвў Ё«Ё ®¬Ґа Є®¬¬гв в®а }
procedure OutNumber(NumberKomm:Word);
var
M2,M1,M0,M21:byte;
begin
M2:=NumberKomm div 100;
M1:=(NumberKomm - M2*100) div 10;
M0:=NumberKomm - M2*100 -M1*10;
M21:=(M1 shl 4 ) + M0;
Port[$300]:= M21;
Port[$301]:=150;
Port[$301]:=134;
Port[$301]:=150;
Port[$300]:=M2;
Port[$301]:=151;
Port[$301]:=135;
Port[$301]:=151;
end;
{**************************************************************************}
{***********************************************************************}
{ ўлў®¤ Ё¤ЁЄ в®а ⥪г饣® ўаҐ¬ҐЁ § «ЁўЄЁ ЈҐ«п }
procedure OutSpeed(ps:byte);
begin
Port[$301]:=149;
Port[$300]:=ps;
delay(1);
Port[$301]:=133;
Port[$301]:=149;
end;
{*********************************************** **************************}
{ Їа®Ја ¬¬ § ¦ЁЈ Ёп ᢥ⮤Ё®¤®ў }
procedure Led;
begin
Port[$301]:=146;
Port[$300]:=avt+man+podd+litr+Led_ready+Led_ostatok+Led_time;
delay(1);
Port[$301]:=130;
Port[$301]:=146;
if Led_ready =128 then
begin
Port[$301]:=28+128;
Port[$300]:=14;
Port[$301]:=12+128;
Port[$301]:=28+128;
end;
end;
{*************************************************************************}
procedure Zalivka;
{ а бзҐв ўаҐ¬ҐЁ § «ЁўЄг Є®¬¬гв в®а }
begin
Gettime(h,min,s,ms);
ttime:=(h*60+min)+15;
{ Є®а४жЁп ўаҐ¬ҐЁ § «ЁўЄЁ Ї® ўаҐ¬ҐЁ }
case ttime of
0..5: Time_Zal:=50;
6..8: Time_Zal:=51;
9..12: Time_Zal:=52;
13..14: Time_Zal:=53;
15..16: Time_Zal:=54;
17..18: Time_Zal:=55;
19..20: Time_Zal:=56;
21..22: Time_Zal:=57;
23..24: Time_Zal:=58;
25..26: Time_Zal:=58;
27..28: Time_Zal:=59;
29..30: Time_Zal:=60;
31..32: Time_Zal:=60;
33..34: Time_Zal:=60;
35: Time_Zal:=61;
36: Time_Zal:=61;
37: Time_Zal:=61;
38: Time_Zal:=62;
39: Time_Zal:=62;
40: Time_Zal:=62;
41: Time_Zal:=63;
42: Time_Zal:=63;
43: Time_Zal:=63;
44: Time_Zal:=64;
45: Time_Zal:=64;
46: Time_Zal:=66;
47: Time_Zal:=67;
48: Time_Zal:=68;
49: Time_Zal:=70;
50: Time_Zal:=72;
51: Time_Zal:=73;
52: Time_Zal:=75;
53: Time_Zal:=76;
54: Time_Zal:=77;
55: Time_Zal:=79;
56: Time_Zal:=80;
57: Time_Zal:=82;
58: Time_Zal:=84;
59: Time_Zal:=86;
60: Time_Zal:=88;
61: Time_Zal:=89;
62: Time_Zal:=90;
63: Time_Zal:=91;
64: Time_Zal:=92
end;
{ Є®а४жЁп ўаҐ¬ҐЁ § «ЁўЄЁ ЇаЁ ®Є®з ЁЁ ЈҐ«п ў Ўгвл«ЄҐ }
case new_bottl of
1: Time_Zal:= round(Time_Zal*1.25);
2: Time_Zal:= round(Time_Zal*1.24);
3: Time_Zal:= round(Time_Zal*1.23);
4: Time_Zal:= round(Time_Zal*1.22);
5: Time_Zal:= round(Time_Zal*1.20);
6: Time_Zal:= round(Time_Zal*1.18);
7: Time_Zal:= round(Time_Zal*1.16);
8: Time_Zal:= round(Time_Zal*1.14);
9: Time_Zal:= round(Time_Zal*1.12);
10: Time_Zal:= round(Time_Zal*1.10);
11: Time_Zal:= round(Time_Zal*1.08);
12: Time_Zal:= round(Time_Zal*1.06);
13: Time_Zal:= round(Time_Zal*1.04);
14: Time_Zal:= round(Time_Zal*1.02)
end;
end;
{*************************************************************************}
{ Їа®жҐ¤га § «ЁўЄЁ ЈҐ«п Ї®¤¤® }
procedure full_poddon;
begin
Zalivka; { вг⠡㤥⠧ ¤Ґа¦Є а ббзЁвлў вмбп }
for r:=oll_full to numberMax do
begin
Cut(KoordX,KoordY,Mass1[r].Xbeg+KoordXPlace,Mass1[r].Ybeg+KoordYPlace);
{ Ґб«Ё Ўл« ¦ в Є®ЇЄ Ћ‘’ в® ўл室Ё¬ Ё§ Ї®¤Їа®Ја ¬¬л }
if err=4 then exit;
tormoz;
{ ®бв ®ўЁ«Ёбм в®зЄҐ а §«Ёў ЈҐ«п }
{ Їа®ўҐаЄ ¦ вЁп Є®Ї®ЄЁ Ћ‘’ }
Port[$301]:=152;
Port[$301]:=136; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R08:=Port[$300];
Port[$301]:=152;
if (( R08 and 4 ) = 4 ) then
begin
err:=4;
exit;
end;
{ ўЄ«о票Ґ Є« Ї ®вЄалў Ёп ЈҐ«п }
Port[$301]:=28+128;
Port[$300]:=5;
Port[$301]:=12+128;
Port[$301]:=28+128;
{ з «® § «ЁўЄЁ }
for Time_Gel:=0 to Speed[Sp] do
begin
{ ®Є®з ЁҐ § «ЁўЄЁ Ї® Є®ЇЄ ¬ }
{ Їа®ўҐаЄ ¦ вЁп Є®Ї®ЄЁ Ћ‘’ }
Port[$301]:=152;
Port[$301]:=136; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R08:=Port[$300];
Port[$301]:=152;
if (( R08 and 4 ) = 4 ) then
begin
err:=4;
{ ўЄ«о票Ґ Є« Ї § Єалў Ёп ЈҐ«п }
Port[$301]:=28+128;
Port[$300]:=6;
Port[$301]:=12+128;
Port[$301]:=28+128;
exit;
end;
delay(Time_Zal );
end; { Є®Ґж § «ЁўЄЁ ЈҐ«п }
oll_full:=oll_full+1;
{ ўЄ«о票Ґ Є« Ї § Єалў Ёп ЈҐ«п Ї®б«Ґ Ї®«®© § «ЁўЄЁ }
Port[$301]:=28+128;
Port[$300]:=6;
Port[$301]:=12+128;
Port[$301]:=28+128;
{ ўлЄ«о票Ґ ¤ўЁЈ ⥫Ґ© : Є®Ґж 㤥ঠЁп }
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
Port[$301]:=20+128;
{ ЇҐаҐў®¤ Ёбв®зЁЄ ЇЁв Ёп ўлб®Є®Ґ Їа殮ЁҐ }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
{ Ї®¤бзсв Ё ўлў®¤ Є®«ЁзҐбвў Є®¬¬гв в®а®ў, Є®в®алҐ ¬®¦® а §«Ёвм }
New_bottl:= New_bottl-1;
OutNumber( New_bottl );
if New_bottl<2 then
begin
tormoz;
err:=4;
exit;
end;
end; { ®зҐаҐ¤®© Є®¬¬гв в®а § «Ё«Ё }
end;
{**************************************************************************}
{ Їа®Ја ¬¬ § «ЁўЄЁ ЈҐ«п }
procedure Gell;
begin
{ Ј 襨Ґ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=0;
Led;
{ ўЄ«о票Ґ ўлб®Є®Ј® Їа殮Ёп ¤ўЁЈ ⥫Ё }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
{ ў®§ўа 饨Ґ ў в®зЄг 00 }
GOTO_00;
case poddon of
1: begin { § «Ёў Ґвбп в®«мЄ® ЇҐаўл© Ї®¤¤® }
KoordXPlace:=0;
KoordYPlace:=0;
full_poddon;
if err=4 then
begin
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
exit;
end;
{ ў®§ўа 饨Ґ ў в®зЄг 00 }
GOTO_00;
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
end;
2: begin { § «Ёў Ґвбп в®«мЄ® ўв®а®© Ї®¤¤® }
KoordXPlace:=0;
KoordYPlace:=158;
full_poddon;
if err=4 then
begin
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
exit;
end;
{ ў®§ўа 饨Ґ ў в®зЄг 00 }
GOTO_00;
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
end;
3: begin { § «Ёў Ґвбп в®«мЄ® ваҐвЁ© Ї®¤¤® }
KoordXPlace:=193;
KoordYPlace:=158;
full_poddon;
if err=4 then
begin
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
exit;
end;
{ ў®§ўа 饨Ґ ў в®зЄг 00 }
GOTO_00;
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
end;
4: begin { § «Ёў Ґвбп в®«мЄ® зҐвўсавл© Ї®¤¤® }
KoordXPlace:=193;
KoordYPlace:=0;
full_poddon;
if err=4 then
begin
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
exit;
end;
{ ў®§ўа 饨Ґ ў в®зЄг 00 }
GOTO_00;
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
end;
5: begin { § «Ёў овбп ўбҐ Ї®¤¤®л Ї®®зҐаҐ¤Ё }
writeln('ўбҐ');
if NumberPoddon= 1 then
begin
{ § «Ёў Ґвбп ЇҐаўл© Ї®¤¤® }
KoordXPlace:=0;
KoordYPlace:=0;
full_poddon;
if err=4 then
begin
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
exit;
end;
NumberPoddon:=2;
oll_full:=1;
end;
if NumberPoddon=2 then
begin
{ § «Ёў Ґвбп ўв®а®© Ї®¤¤® }
KoordXPlace:=0;
KoordYPlace:=158;
full_poddon;
if err=4 then
begin
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
exit;
end;
NumberPoddon:=3;
oll_full:=1;
end;
goto_00;
if NumberPoddon =3 then
begin
writeln('3');
{ § «Ёў Ґвбп ваҐвЁ© Ї®¤¤® }
KoordXPlace:=193;
KoordYPlace:=158;
full_poddon;
if err=4 then
begin
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
exit;
end;
NumberPoddon:=4;
oll_full:=1;
end;
if NumberPoddon =4 then
begin
{ § «Ёў Ґвбп зҐвўсавл© Ї®¤¤® }
KoordXPlace:=193;
KoordYPlace:=0;
full_poddon;
if err=4 then
begin
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ ѓЋ’Ћ‚ }
Led_ready:=128;
Led;
exit;
end;
end; { ў®§ўа 饨Ґ ў в®зЄг 00 }
GOTO_00;
end
end; { case }
{ ўбҐ Ї®¤¤®л § «Ёвл }
end; { gell }
{***************************************************************************}
procedure Manual;
label aa,bb;
begin
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
Port[$301]:=20+128;
man:=1;
avt:=0;
Led;
Port[$301]:=17+128;
Port[$301]:=1+128; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R01:=Port[$300];
Port[$301]:=17+128;
case R01 of
2 : begin { 㬥м襨Ґ бЄ®а®бвЁ § «ЁўЄЁ }
if Sp=9 then Sp:=0;
Sp:=Sp+1;
OutSpeed(Sp);
Delay(1000);
end;
32 : begin { гЄ § ЁҐ а Ў®зЁ© Ї®¤¤® }
{ § ¦ЁЈ ЁҐ ᢥ⮤Ё®¤ Ї®¤¤® }
podd:=2;
Led;
{ ўлў®¤ ®¬Ґа Ї®¤¤® }
aa: if poddon < 5 then
begin { Ј бЁ¬ Ґг¦лҐ Ё¤ЁЄ в®ал Ё ўлў®¤Ё¬ ®¬Ґа Ї®¤¤® }
Port[$300]:= 240+poddon;
Port[$301]:=150;
Port[$301]:=134;
Port[$301]:=150;
Port[$300]:=15;
Port[$301]:=151;
Port[$301]:=135;
Port[$301]:=151;
end
else { ўлў®¤Ё¬ 1 4}
begin
Port[$300]:= 244;
Port[$301]:=150;
Port[$301]:=134;
Port[$301]:=150;
Port[$300]:=1;
Port[$301]:=151;
Port[$301]:=135;
Port[$301]:=151
end;
delay(1000);
Port[$301]:=17;
Port[$301]:=1; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R01:=Port[$300];
Port[$301]:=17;
if ((R01 and 32) =32) then
begin { ўбс Ґйс ¦ в Є®ЇЄ Ї®¤¤® }
{ зЁ Ґ¬ Ё§¬Ґпвм ®¬Ґа Ї®¤® }
if poddon=5 then poddon:=1 else poddon:=poddon+1;
goto aa;
end;
delay(1000);
podd:=0;
Led;
OutNumber(New_bottl);
exit;
end;
8: begin { гбв ®ўЄ с¬Є®бвЁ Ўгвл«ЄЁ }
litr:=4;
Led;
bb: if litr_bottl < 5 then
begin { Ј бЁ¬ Ґг¦лҐ Ё¤ЁЄ в®ал Ё ўлў®¤Ё¬ ®Ўкс¬ Ўгвл«ЄЁ }
case litr_bottl of
1: OutLitr:=5;
2: OutLitr:=16;
3: OutLitr:=21;
4: OutLitr:=32
end;
Port[$300]:= OutLitr;
Port[$301]:=150;
Port[$301]:=134;
Port[$301]:=150;
Port[$300]:=15;
Port[$301]:=151;
Port[$301]:=135;
Port[$301]:=151;
end ;
delay(1000);
Port[$301]:=17;
Port[$301]:=1; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R01:=Port[$300];
Port[$301]:=17;
if ((R01 and 8) =8) then
begin { ўбс Ґйс ¦ в Є®ЇЄ «Ёва }
{ зЁ Ґ¬ Ё§¬Ґпвм ®¬Ґа «Ёва }
if litr_bottl= 4 then litr_bottl:=1 else litr_bottl:= litr_bottl+1;
goto bb;
end;
delay(1000);
litr:=0;
Led;
case litr_bottl of
1: New_bottl:=55;
2: New_bottl:=160;
3: New_bottl:=245;
4: New_bottl:=320;
end;
OutNumber(New_bottl);
exit;
end;
16: begin { бЎа®б в ©¬Ґа беў влў Ёп ЈҐ«п }
{ гбв ®ўЄ ¬ ЄбЁ¬ «м®Ј® Є®«ЁзҐбвў Є®¬¬гв в®а®ў }
SetTime(0,0,0,0);
Led_ostatok:=16;
Led;
case litr_bottl of
1: New_bottl:=55;
2: New_bottl:=160;
3: New_bottl:=245;
4: New_bottl:=320;
end;
delay(1000);
led_ostatok:=0;
Led;
OutNumber(New_bottl);
exit;
end;
4: begin { ўлў®¤ ўаҐ¬ҐЁ, ®б⠢襣®бп ¤® беў влў Ёп ЈҐ«п }
Led_time:=8;
Led;
Gettime(h,min,s,ms);
time:=120-(h*60+min);
OutNumber(time);
delay(1000);
Led_time:=0;
Led;
OutNumber(New_bottl);
exit;
end;
64: begin { ¦ «Ё Є®ЇЄг ўЇҐас¤ }
err:=0;
writeln('ghj');
if oll_full< NumberMax then
begin
Led_Ready:=0;
Led;
{ ўЄ«о票Ґ ўлб®Є®Ј® Їа殮Ёп ¤ўЁЈ ⥫Ё }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
writeln('ghj');
Cut(KoordX,KoordY,Mass1[oll_full+1].Xbeg+KoordXPlace,Mass1[oll_full+1].Ybeg+KoordYPlace);
oll_full:=oll_full+1; { 㢥«ЁзҐЁҐ ®¬Ґа Ї®§ЁжЁЁ }
tormoz;
Led_Ready:=128;
Led;
end;
end;
128:begin { ¦ «Ё Є®ЇЄг § ¤ }
err:=0;
if oll_full > 1 then
begin
Led_Ready:=0;
Led;
{ ўЄ«о票Ґ ўлб®Є®Ј® Їа殮Ёп ¤ўЁЈ ⥫Ё }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
Cut(KoordX,KoordY,Mass1[oll_full-1].Xbeg+KoordXPlace,Mass1[oll_full-1].Ybeg+KoordYPlace);
oll_full:=oll_full-1; { 㬥м襨Ґ ®¬Ґа Ї®§ЁжЁЁ }
{ ЇаЁЎл«Ё в®зЄг , в®а¬®§Ё¬ ¤ўЁЈ ⥫ﬨ }
tormoz;
Led_Ready:=128;
Led;
end;
end;
end; { case }
end;
{***************************************************************************}
{***************************************************************************}
procedure Avtom;
label TT;
begin
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
Port[$301]:=20+128;
avt:=64;
man:=0;
Led;
Port[$301]:=152;
Port[$301]:=136; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R08:=Port[$300];
Port[$301]:=152;
case ( R08 and 31 ) of
1:begin { ¦ «Ё ЇгбЄ, зЁ Ґ¬ а §«Ёў вм ЈҐ«м }
{ Їа®ўҐаЄ ®б⠢襣®бп ўаҐ¬ҐЁ }
Gettime(h,min,s,ms);
time:=(h*60+min);
if time > 118 then { ўаҐ¬ҐЁ ®бв «®бм ¬ «® }
begin { ўв®¬ вЁзҐбЄЁ а §«Ёў вм Ґ«м§п }
Led_time:=8;
Led;
delay(100);
Led_time:=0;
Led;
delay(100);
exit;
end;
err:=0;
oll_full:=1;
NumberPoddon :=1;
gell;
end;
2:begin { ¦ «Ё бв®Ї, ў®§ўа й Ґ¬бп ў в®зЄг 00 }
err:=0;
{ ўЄ«о票Ґ ўлб®Є®Ј® Їа殮Ёп ¤ўЁЈ ⥫Ё }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
{ ў®§ўа 饨Ґ ў в®зЄг 00 }
GOTO_00;
oll_full:=1; { бЎа®б Є®«ЁзҐбвў а §«Ёвле Є®¬¬гв в®а®ў }
{ зЁ Ґ¬ ўбс б з « }
NumberPoddon:=Poddon; { гбв ў«Ёў Ґ¬ гЄ § вҐ«м Ї®¤¤® }
{ з «мл© Ї®¤¤® }
end;
4:begin { ¦ «Ё ®бв ®ўЄ }
{ вгв ўЄ«о票Ґ ¤ўЁЈ ⥫Ґ© 㤥ঠЁҐ : ЇҐаҐў®¤ Ёбв®зЁЄ ЇЁв Ёп }
{ Ё§Є®Ґ Їа殮ЁҐ }
Port[$301]:=153;
Port[$300]:=1;
Port[$301]:=137;
Port[$301]:=153;
{ ўЄ«о票Ґ ¤ўЁЈ ⥫Ґ© }
Port[$301]:=19+128;
Port[$300]:=a;
Port[$301]:=3+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=b;
Port[$301]:=4+128; { ўлў®¤ гЇа ў«ҐЁп ¤ўЁЈ ⥫м Y }
Port[$301]:=20+128;
end;
16: begin { гбв ®ўЄ ⥬ЇҐа вгал }
OutNumber(Temp); { ўлў®¤ ⥬ЇҐа вгал }
delay(1500);
tt: Port[$301]:=152;
Port[$301]:=136; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R08:=Port[$300];
Port[$301]:=152;
if ((R08 and 16) =16) then
begin { ўбс Ґйс ¦ в Є®ЇЄ ⥬ЇҐа вга }
{ зЁ Ґ¬ Ё§¬Ґпвм ⥬ЇҐа вгаг }
if Temp= 29 then Temp:=15 else Temp:= Temp+1;
OutNumber(Temp); { ўлў®¤ ⥬ЇҐа вгал }
delay(1500);
goto tt;
end;
delay(1000);
OutNumber(New_bottl);
exit;
end;
8:begin { ¦ «Ё Їа®¤®«¦ҐЁҐ }
err:=0;
gell;
end
end; {case}
end;
{***************************************************************************}
{ Џ ђ Ћ ѓ ђ Ђ Њ Њ Ђ }
begin
{ ЇҐаҐў®¤ Ёбв®зЁЄ ЇЁв Ёп ўлб®Є®Ґ Їа殮ЁҐ }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
Temp:=20;
Start_Time:=10; { ЇҐаўлҐ и ЈЁ б г᪮२Ґ¬ }
a:=1;
b:=1;
goto_00;
Read_File;
Sp:=3; { з «м п бЄ®а®бвм § «ЁўЄЁ }
avt:=0;
man:=0;
podd:=0;
litr:=0;
Led_ready:=0;
Led_ostatok:=0;
time:=120;
Led_time:=0;
{ а Ў®зЁ© ЇҐаўл© Ї®¤¤® }
poddon:=1;
{ Ўгвл«Є 0.5 « }
litr_bottl:=1;
Led_ready:=128;
OutSpeed(sp);
port[$301]:=128; { ўЄ«о票Ґ ЁбЇ®«ЁвҐ«мле гбва®©бвў }
Speed[4]:= 50;
Speed[5]:= 63;
Speed[6]:= 78; { гбв ®ўЄ ᮮ⢥вбвўЁп бЄ®а®б⥩ § «ЁўЄЁ }
Speed[7]:= 93;
Speed[8]:= 110;
Speed[9]:= 130;
Speed[0]:= 25;
Speed[1]:= 30;
Speed[2]:= 35;
Speed[3]:= 42;
a:=1;
b:=1;
New_bottl:=100;
OutNumber(New_bottl);
ss:
{ OutNumber(New_bottl); }
tormoz;
Port[$301]:=24;
Port[$301]:=8; { бзЁвлў Ґ¬ Є®ЇЄЁ гЇа ў«ҐЁп }
R08:=Port[$300];
Port[$301]:=24;
if ((R08 and 32)=32) then Avtom else Manual;
goto ss;
end.
{ Їа®ўҐаЄ ®б⠢襣®бп ЈҐ«п }
if New_bottl < 1 then
begin
led_ostatok:=16;
Led;
delay(1000);
led_ostatok:=0;
Led;
delay(1000);
end;
{
repeat
ss:
read(a);
{ ўЄ«о票Ґ ўлб®Є®Ј® Їа殮Ёп ¤ўЁЈ ⥫Ё }
Port[$301]:=153;
Port[$300]:=a;
Port[$301]:=137;
Port[$301]:=153;
goto ss;
until keypressed;
Port[$301]:=153;
Port[$300]:=1;
Port[$301]:=137;
Port[$301]:=153;
exit;
}
