Для обращения к регистрам ВУ среде программирования BorlandPascal имеются два предварительно объявленных массива с именами Port и PortW:
varPort: array /0. 65 535/ of byte; PortW: array jO. 65 534/ of word;
Индексы массивов соответствуют абсолютным адресам регистров ВУ. При обращении к элементам PortW используется указанный в выражении адрес и следующий за ним, больший на единицу. Присвоение значения элементу массива Port или PortW приведет к записи в регистр с указанным адресом. Упоминание элемента Port или PortW в правой части выражения приведет к чтению из регистра с указанным адресом.
Примеры:
- • J:=Port I$ 211; {Чтение регистра масок контроллера прерываний ЭВМ.};
- • PortW [$ 300] := 4048; {Запись в регистр данных ЦАП 16-разрядного числа для установки напряжения 5 В на его выходе.}.
Программирование канала управления при безусловном способе обмена данными.
Генерация синусоидального сигнала амплитудой 5 В, с максимально возможной частотой на выходе ЦАП:
где t/max = 5 В, число точек на периоде сигнала М = 100.
Формула {/вых = А (/* (КОД — 2048) связывает КОД, записываемый в ЦАП, и напряжение на его выходе. КОД=1!(1)/Аи +2048 = 2048 + (Umax/AU) * sin (2i/M) должен быть округлен до целого значения:
Program Demo_Sin;
uses crt; const M = 100; F = 2*pi/M;
var U: array [ 1. M] of integer; i, j{, step}: integer;
Procedure Wait (i: word); varj: word; begin for j:=1 to i do; end;
Begin for i:= 1 to M do U[i]: = Round (2048+2000*sin (F* (i-1))); i:=1; repeat {Wait (n);}
PortW[$ 300]: =U[i]; inc (i); if i > M then dec (i, M); until keypressed; while keypressed do readkey; End.