Раздел: Документация
0 ... 10 11 12 13 14 15 16 ... 105 Следующие две процедуры написаны на языке ТР6 и выполняют те же функции. («Библиотека ресурсов № А10 (запись данных в буферный регистр передатчика).*) Procedure write transmit buffer(RS232 address,output byte:integer), begin port(RS232 address):=output byte; end; («Библиотека ресурсов № A12 (чтение данных из буферного регистра приемника) *) Function read receive buffer(RS232 address,output byte:integer):integer; begin read receive buffer:=port(RS232 address); end; Ниже приведены две функции, написанные на Turbo Pascal для Windows. («Библиотека ресурсов № А10 (запись данных в буферный регистр передатчика).*) Function write transmit buffеr(RS232 address,output byte integer).integer; export; begin port(RS232 address):=output byte; end; (Библиотека ресурсов № A11 (чтение данных из буферного регистра приемника).*) Function read reseive buffer(RS232 address,output byte:integer):integer, export; begin read reseive buffer:=port(RS232 address); end; Передача данных по линиям взаимодействия Для вывода данных через линии RTS и DTR в регистр управления модемом (смещение 04п) необходимо записывать биты 1 и 0, которые соответствуют сигналам RTS и DTR. Линии управляются процедурами на языках ТР6 и Turbo Pascal для Windows, требующими базовый адрес выбранного СОМ-порта и состояние этих линий - либо 0, либо 1. Причем RTS и DTR инвертируются перед подачей в порт с целью компенсации инверсии преобразователями TUI/RS232, которые также используются для трансформации уровня напряжения. (•-Библиотека ресурсов № А11 (запись данных в регистр состояния модема) -*) procedure write modeiri status(RS232 address, RTS. DTR:integer); (*RTS и DTR инвертируются с помощью MAX238 на экспериментальной плате *) («RTS=6ht 1, DTR=6ht 0 регистра управления модемом, смещение 04h.*) begin RTS.=1-RTS, DTR: =1 -DTR; port(RS232 address+4):=RTS*2+DTR;(*3апись в регистр 04h «) end; (♦-Библиотека ресурсов № A11 (запись данных в регистр состояния модема).-*) Function write modeiri status(RS232 address, RTS, DTR: integer): integer; export; (*RTS и DTR инвертируются с помощью MAX238 на экспериментальной плате.*) (*RTS=6mt 1, DTR=6mt 0 регистра управления модемом, смещение 04h.*) begin RTS:=1-RTS; DTR:=1-DTR; port(RS232 address+4):=RTS*2+DTR; («Запись в регистр 04h *) end, Чтобы считать данные с линий DSR, CTS и DCD, необходимо считать регистр состояния модема. Для этого служат нижеприведенные процедуры на языках ТР6 и TPW, требующие базовый адрес выбранного СОМ-порта. Линии DSR, CTS и DCD инвертируются для компенсации инверсии преобразователями Ti7I/RS232. («-Библиотека ресурсов № А13 (чтение данных из регистра состояния модема).-*) Function read modem status(RS232 address, х:integer);integer; (*х=1 - выбор бита DCD, х=2 - выбор бита DSR, х=3 - выбор бита CTS. *) (*DCD=6ht 7, DSR=6mt 5, СТБ=бит 4 регистра состояния модема, смещение 06h *) (*Все биты инвертируются с помощью МАХ238 на экспериментальной плате.*) var input byte byte; begin input byte:=port(RS232 add ress+6), case x of 1: Read modem 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; (*-Библиотека ресурсов № A13 (чтение данных из регистра состояния модема) -*) Function read modem status(RS232 address, х:integer).Integer; export; (*x=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: Read modem 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; 1.3. Игровой порт В большинстве настольных компьютеров есть встроенный игровой порт, куда подключаются один или два джойстика - с двумя цифровыми и двумя аналоговыми входными линиями (одно устройство) или с четырьмя цифровыми и четырьмя аналоговыми (два устройства). Цифровые линии позволяют считывать входные данные, а аналоговые - измерять подключенное к ним сопротивление (оно должно быть в пределах 0-100 кОм). Джойстик имеет два потенциометра 100 кОм для индикации координат X и Y, а также две нормально разомкнутые кнопки. На соответствующих им линиях порта устанавливается высокий уровень, а при нажатии на кнопку - низкий. 1.3.1. Разъем Порт имеет 15-контактную розетку D-типа. Назначение выводов и типовое соединение с джойстиком представлены на рис. 1.11. б) Джойстик А © © © © © © © © (И) © © © © © ![]() Y-потенииометр Х-потенциометр ®(Z)(!)©©®©6 14 13 12 11 Ю 9
А В2 у Х-погпенииом emp Y-потенииометр Джойстик Рис. 1.11. Назначение выводов и типовое соединение с джойстиком: а - 15-контактный гнездовой разъем D-типа, вид со стороны зодней стенки компьютере, б - соединение контоктов порто с внешними резисторами и переключотелями; в - назначение контактов игрового порта 1.3.2. Внутреннее аппаратное устройство Внутренняя блок-схема типового игрового порта изображена на рис. 1.12, а логическая структура - на рис. 1.13. Восьмибитовые линии шины данных состоят из четырех выходов микросхемы DD5a и четырех выходов микросхемы DD5b. Четыре входа состояния кнопок 0 ... 10 11 12 13 14 15 16 ... 105
|