Автоматизированные системыконтроля и управления РЭС, задания к контрольной и лабораторным работам, страница 23

  readln(zz);

  for i:=1 to zz+1 do

  {errno:=MeasDMA(n+1,addr(signal1_),DSYNC,DMA_I_CHAN,ovf);}

  Meas(n,addr(signal1_),RUN,ovf);

        { запретить запрос ПДП }

  SetDRQ2(0);

        { запретить работу канала 1 таймера }

  SetET1(1);

  if errno<>0 then

    begin

      textcolor(4);

      writeln('Ошибка инициализации ПДП.');

      writeln('Номер ошибки ',dma_errno);

      textcolor(2);

      goto Exit;

    end;

               { вывод считанного сигнала }

  signal2_[1]:=signal2_[1] and S_BIN;

  gr1;

            { Обработка считанного сигнала }

m3:clrscr;

   Km:=trunc(n/(2*p*(Ka/Kc)));

   writeln('Максимальный номер гармоники Km=',Km);

   writeln('Введите начальный номер гармоники');

   readln(k);

   writeln('Введите конечеый номер гармоники(не более',Km,')');

   readln(k1);

   writeln('Подтвердить?(Y/N)');

   readln(ts);

   if ts='n' then goto m3;

   if k1>=Km then k1:=Km;

   clrscr;

   writeln('Номер гармоники         Амплитуда            Фаза');

   writeln('');

   step:=2*pi*p*(Ka/Kc)/n;

   t:=0;

   for j:=k to k1 do

    begin

    Xre:=0;

    Xim:=0;

    for i:=1 to n do

     begin

      Xre_[i]:=signal1_[i]*cos(step*(i-1)*j);

      Xre:=Xre+Xre_[i];

      Xim_[i]:=signal1_[i]*sin(step*(i-1)*j);

      Xim:=Xim+Xim_[i];

     end;

    norm:=A_SCALE/A_BIN;

    Xm:=(2/n)*sqrt(sqr(Xre)+sqr(Xim))*norm;

   if Xre=0 then

      begin

        if Xim>=0 then fi:=pi/2

        else fi:=-pi/2;

        goto exit;

      end;

   fi:=arctan(Xim/Xre);

   if fi>0 then

     begin

       if Xre<0 then fi:=fi+pi

     end;

   if fi<0 then

     begin

       if Xre>0 then fi:=fi+3*pi/2

       else fi:=fi+pi/2;

     end;

   fi:=fi*180/pi;

   if t=20 then begin t:=0;

   textcolor(2);

   writeln('');

   writeln('Для продолжения нажмите клавишу "ввод"');