Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эл_издание.doc
Скачиваний:
0
Добавлен:
14.12.2019
Размер:
1.15 Mб
Скачать

Инициализация последовательного порта.

При инициализации порта коммуникации ("открытии") устанавливаются все его параметры. Эти параметры определяют длину слова, число стоп-битов, установку четности и скорость обмена. Длина слова это число битов, которое образует основную единицу данных. Если мы работаем с привычными порциями по 8 битов, то 7 битов достаточны для стандартных файлов ASCII (в которых все символы имеют коды, не превышающие АSСII 128), в то время как для передачи численных данных достаточно порций по 4 бита.

Функция 0 прерывания 14H BIOS инициализирует порт коммуникации. B DX должен даваться номер коммуникационного канала (СОM1 = 0, СОM2 = 1). B AL должен содержаться байт инициализационных данных, значение битов которого следующее:

биты 1-0: длина слова. Значения: 10 = 7 битов, 11 = 8 битов.

Бит 2: число стоп-битов. Значения: 0 = 1, 1 = 2.

Биты 4-3: четность. Значения: 00 или 10 = нет, 01 = нечет., 11 = чет.

Биты 7-5: скорость обмена. Значения:

000 = 110 бод

001 = 150 бод

010 = 300 бод

011 = 600 бод

100 = 1200 бод

101 = 2400 бод

110 = 4800 бод

111 = 9600 бод

Независимо от того, занимаемся ли мы вводом или выводом, как минимум 4 регистра микросхемы 8250 должны быть инициализированы для операций обмена. Это регистры делителя скорости обмена, регистр контроля линии и регистр разрешения прерывания. Делитель скорости обмена – это число, на которое надо разделить частоту системных часов, чтобы получить желаемую скорость обмена. Например, для скорости обмена 1200 бод делитель скорости обмена должен быть равен 96, поскольку 1190000/96 приближенно равно 1200. Чем больше делитель, тем меньше скорость обмена. Скорости обмена 300 и меньше требуют двухбайтного числа для делителя. Старший байт посылается в 3F9H (или 2F9H), а младший в 3F8H (2F8H). B обоих случаях бит 7 регистра управления линии должен быть установлен в 1 перед засылкой значений; в противном случае по этим двум адресам значения будут адресованы в другие регистры.

Установка текущего коммуникационного порта.

Имеются два способа, которыми программа может определить, какой из коммуникационных портов должен использоваться. Один из способов состоит в указании номера канала в операторе программы. Bторой способ состоит в написании программы для обмена через порт СОM1, но изменении коммуникационного адаптера, доступ к которому идет через СОM1.

Область данных BIОS содержит место для четырех 2-х байтных переменных, которые содержат базовые адреса коммуникационных каналов (MS DОS поддерживает только первые два из них). Базовый адрес порта – это младший из группы адресов портов, через которые можно получить доступ к данному коммуникационному каналу. Базовый адрес для СОM1 хранится в ячейке 0040:0000, а для СОM2 – в ячейке 0040:0002. Для смены коммуникационных портов надо просто поменять эти два значения. Повторная смена значений приведет к первоначальному назначению портов.

Инициализация и управление модемом.

Имеется 6 базовых линий, по которым модемы связываются с компьютером (усовершенствованные модели могут иметь добавочные линии по интерфейсу RS232). Вот их названия, сокращения и функции:

От компьютера к модему:

Data Terminal Ready (DTR): Информирует модем, что компьютер в состоянии «Готовность», включен и готов к связи.

Request To Send (RTS): Информирует модем, что компьютер в состоянии «Запрос на посылку», ожидает посылки данных.

От модема к компьютеру:

Data Set Ready (DSR): Информирует компьютер, что модем в состоянии «Готовность модема», включен и готов.

Clear To Send (СTS): Информирует компьютер, что модем в состоянии «Готовность к посылке», готов начать передачу данных.

Data Carrier Detect (DСD): Информирует компьютер, что модем в состоянии «Обнаружен носитель данных», связан с другим модемом.

Ring Indicator (RI), «Индикатор звонка»: Информирует компьютер, что телефонная линия, по которой присоединен модем, имеет звонок.

Сначала компьютер устанавливает сигнал DTR, а затем инструктирует модем связаться с удаленной станцией. После того, как модем установил связь, он устанавливает сигнал DSR. Этот сигнал информирует компьютер, что модем готов к связи и в этот момент компьютер может установить сигнал RTS. Когда модем ответит сигналом СTS, то передача начинается. Две стандартные линии, по которым компьютер управляет модемом, доступны через регистр контроля модема микросхемы UАRT 8250.

Передача данных проще, чем прием, поскольку программа имеет полный контроль над составом данных и скоростью, с которой они должны посылаться. Тем не менее, процедуры передачи могут быть достаточно сложными, если они обрабатывают данные по мере того, как они посылаются. Могут быть также проблемы с синхронизацией при использовании протокола XON/XOFF. Этот протокол использует коды ASCII 17(XON) и 19(XOFF), для того чтобы сигнализировать принимающей станции, что передатчик хочет продолжить передачу временно прерванного потока данных. Чтобы принять эти сигналы, программа должна непрерывно анализировать принимаемые символы при передаче (в полнодуплексном режиме, в котором обычно работают модемы, сигналы одновременно идут в обе стороны по телефонному каналу).