8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 33 34 35 36 37 38 39 ... 105

(•-Библиотека ресурсов № A3 (считывание данных в компьютер) -*) Function Read status port(P address integer) integer, export, var

bytel byte, begin

bytel =port(P address+1),(«Считывание байта из регистра состояния *)

bytel =byte1 and 120,(*01111000 (от старшего к младшему) and Odddd =

OddddOOO «)

Read status port =byte1 shr 3, («Сдвиг на 3 бита вправо, Read status port=0000hhhh «) end,

(*- Библиотека ресурсов № А4 (запись в регистр данных) -*)

Function Write data port(P address integer,port data integer) integer, export,

(«Биты регистра данных не инвертированы *)

begin

port(P address) =port data, («Ввод байта в регистр данных *)

end

(«-Библиотека ресурсов № А5 (запись данных в регистр управления компьютера) -*) Function Write control port(P address integer, port data integer) integer, export, («Биты 0, 1 и 3 инвертированы Требуются преобразования над битами *) begin

if port data and 1=1 then port data =port data and (255-1)

else port data =port data or 1, if port data and 2=2 then port data =port data and (255-2)

else port data =port data or 2 if port data and 8=8 then port data =port data and (255-8)

else port data =port data or 8 port(P address+2) =port data, («Ввод байта данных в порт управления *) end

(«-Библиотека ресурсов № А6 (определение базовых адресов СОМ-портов) -*) Function RS232(x integer) integer, export, {Универсальное средство определения адресов СОМ-портов } (* $0000 $0400 содержит базовый адрес порта С0М1,

$0000 $0402 содержит базовый адрес порта COM2,

$0000 $0404 содержит базовый адрес порта COM3,

$0000 $0406 содержит базовый адрес порта COM4,

$0000 $0411 содержит количество СОМ-портов •) var

number of C0M С0М1 COM2,COM3,COM4 integer, begin

Number of C0M =mem($0000 $0411) («Считывание количества СОМ-портов ♦) Number of C0M =(Number of C0M and (8+4+2)) shr 1, C0M1 =0, COM2 =0, COM3 =0, COM4 =0,

COM1 =memw($0000 $0400),(«Процедура считывания из памяти *)

COM2 =memw($0000 $0402), COM3 =memw($0000 $0404), COM4 =memw($0000 $0406),


Case х of

0:

RS232

=number of C0M;

1:

RS232

=С0М1;

2:

RS232

=С0М2;

3:

RS232

=С0МЗ;

4:

RS232

=С0М4;

end;

(«-Библиотека ресурсов № А7 (запись в регистр разрешения прерываний).-») Function write interrupt enable(RS232 address, output byte:integer); export; begin

port(RS232 address+1):=0utput byte; end;

(♦-Библиотека ресурсов № A8 (чтение из регистра идентификации прерываний).-*) Function read interrupt identification(RS232 address:integer).-integer; export; begin

read interrupt identification:=port(RS2132 address+2); end;

(•-Библиотека ресурсов № A9 (запись в регистр формата данных).-*)

Function Write data format(RS232 address, Baudx. Parity, Data bit, Stop bit:integer):integer;

export;

var

bytel,byte2, output byte:byte; divisor:integer; baud:longint; begin

baud:=baudx*100; divisor:=H5200 div Baud;

if divisor<=255 then begin bytel:=divisor; byte2:=0; end;

if divisor>255 then begin bytel:=divisor mod 256; byte2:=divisor div 256; end;

output byte:=(data bit-5)+4*(stop bit-1)+8*parity;

port(RS232 address+3):=128;{Загрузка формата последовательных данных,

первый бит регистра равен 1.} port(RS232 address+0):=byte1:{Младший байт делителя равен 1.}

port(RS232 address+1):=byte2;{Старший байт делителя равен 0.}

port(RS232 address+3):=output byte; {Загрузка делителя и других параметров.} end;

(•-Библиотека ресурсов № А10 (запись данных в буферный регистр передатчика).-*) Function write transmit buffer(RS232 address,output byte:integer).integer; Export begin

port(RS232 address):=output byte; end;

(•-Библиотека ресурсов № A11 (запись данных в регистр состояния модема).-*) Function write modem status(RS232 address, RTS, DTR:integer):integer;export; (*RTS и DTR инвертируются с помощью MAX238 на экспериментальной плате.*) (*RTS=6ht 1, DTR=6ht 0 регистра управления модемом, смещение 04п.*) begin

RTS:=1-RTS:


DTR:=1-DTR;

port(RS232 address+4):=RTS*2+DTR;(«Запись в регистр 04h.«)

end;

(♦-Библиотека ресурсов № А12 (чтение данных из буферного регистра приемника).-*)

Function read receive buffer(RS232 address:integer):integer;export;

begin

read receive buffer:=port(RS232 address); end;

(♦-Библиотека ресурсов № A13 (чтение данных из регистра состояния модема).-*) Function read modem status(RS232 address, х:integer):integer; export; («х=1 - выбор бита DCD, x=2 - выбор бита DSR, x=3 - выбор бита CTS.*) (*DCD=6ht 7, DSR=6ht 5, CTS=6ht 4 регистра состояния модема, смещение 06h.*) («Все биты инвертируются с помощью МАХ238 на экспериментальной плате.*) var

input byte:byte; begin

input byte:=port(RS232 address+6); case x of

1: Readjnodem status:=1-round((input byte and 128)/128); 2: Read modem status:=1-round((input byte and 32)/32); 3: Read modem status:=1-round((input byte and 16)/16);

end; end;

(•-Библиотека ресурсов № A14 (чтение регистра игрового порта).-*) Function read game port(bitx:integer):integer;export (•Адрес игрового порта: 201h.

Bitx (1-8) выбирает состояние AX. AY, BX. BY, BA1, BA2, BB1 и BB2.*) var

input byte:byte; begin

input byte:=port($20l);

read game port:=round((input byte and bit weight(bitx))/bit weight(bitx))); end;

(•-Библиотека ресурсов № A15 (запись в регистр игрового порта).-*)

Function write game port:integer; export;

(«Вводит 0 в игровой порт для запуска одновибратора.*)

begin

port($201):=0; end;

(•-Библиотека ресурсов № А16 (получение длительности периода одновибратора).-*) Function interval game port(x:integer):integer; export; (*x выбирает AX(x=1), AY(x=2), BX(x=3), BY(x=4).*) var

timel,time2,dummy:integer;

Procedure init 8253; (•Настройка 8253.«) begin



0 ... 33 34 35 36 37 38 39 ... 105