Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Назначение битов регистра состояния модема

Номер бита Назначение
Состояние линии DCD. Единица означает, что модемом получена несущая частота. Заметим, что при выполнении аналогового теста (Analog test) этот бит должен содержать единицу. Если это не так, то возможно, что модем исправен (для внешних модемов), но кабель, соединяющий модем и компьютер, не полностью соответствует стандарту RS-232
Состояние линии RI. Единица означает, что модем обнаружил звонок на телефонной линии
Состояние линии DSR. Эта линия используется совместно с линией DTR при аппаратной реализации подтверждения связи
Состояние линии CTS. Эта линия используется совместно с линией RTS при реализации аппаратного управления потоком данных
=1 - Линия DCD изменила свое состояние. Некоторые коммуникационные программы определяют по состоянию этого бита, детектировал ли модем несущую частоту на телефонной линии
=1 - Линия RI изменила состояние. Некоторые коммуникационные программы определяют по состоянию этого бита наличие звонка на телефонной линии
=1 - Линия DSR изменила состояние
=1 - Линия CTS изменила состояние

 

Инициализация асинхронного адаптера.Первое, что должна сделать программа, работающая с асинхронным адаптером, - установить формат и скорость передачи данных. После загрузки операционной системы для асинхронных адаптеров устанавливается скорость 2400 бод, не выполняется проверка на четность, используются один стоповый бит и восьмибитовая длина передаваемого символа. Выполнив чтение из управляющего регистра, программа может получить текущий режим адаптера. Для установки нового режима необходимо изменить нужные поля и записать новый байт режима обратно в управляющий регистр.

Если надо задать новое значение скорости обмена данными, перед записью байта режима необходимо установить старший бит этого байта в 1, при этом регистр данных и управляющий регистр используются для задания скорости обмена. Затем последовательно двумя командами загрузить делитель частоты тактового генератора. Младший байт записать в регистр данных, а старший - в регистр управления прерываниями.

Перед началом работы необходимо также проинициализировать регистр управления прерываниями (порт 3F9h), даже если в программе не используются прерывания от асинхронного адаптера. Для этого сначала надо перевести регистр данных и регистр управления прерываниями в обычный режим, записав ноль в старший бит управляющего регистра. Затем можно устанавливать регистр управления прерываниями. Если прерывания не нужны, необходимо записать в этот порт нулевое значение.

Передача данных. Перед записью байта данных в регистр передатчика необходимо убедиться в том, что регистр хранения передатчика свободен, то есть убедиться в том, что передача предыдущего символа завершена. Признаком того, что регистр передатчика свободен, является установленный в 1 бит 5 регистра состояния линии с адресом base_adr + 5.



Прием данных. Аналогично передаче данных перед чтением символа из регистра данных (адрес base_adr) необходимо убедиться в том, что бит 0 регистра состояния линии (адрес base_adr + 5) установлен в 1. Это означает, что символ принят из линии и находится в буферном регистре приемника.

Использование прерываний. Так как процесс последовательной передачи данных протекает достаточно медленно, имеет смысл выполнять его в фоновом режиме, используя прерывания по окончании передачи или приема символа. Порту COM1 соответствует аппаратное прерывание INT 0Ch, а COM2 - INT 0Bh. Для разрешения прерываний необходимо установить в 1 биты регистра управления прерываниями, соответствующие тем прерываниям, которые необходимо обрабатывать.

Когда произошло прерывание, программа-обработчик прерывания должна проанализировать причину прерывания, прочитав содержимое регистра идентификации прерывания с адресом base_adr + 2.

В конце обработчика аппаратного прерывания должна находиться последовательность команд:

mov al, 20h

out 20h, al

iret

для сброса контроллера прерываний.

Может случиться так, что одновременно произойдет несколько прерываний. В этом случае бит 0 регистра идентификации прерывания будет установлен в 1. Если такая ситуация имеет место, перед завершением обработки прерывания надо снова прочитать регистр идентификации прерывания и обработать следующее прерывание. Так следует поступать до тех пор, пока бит 0 регистра идентификации прерывания не станет равным нулю.



Последовательная передача в диагностическом режиме. Для наблюдения за результатами и процессом приема/передачи можно воспользоваться диагностическим режимом адаптера. В этом режиме выход передатчика замкнут внутри адаптера на вход приемника. Для включения диагности­ческого режима необходимо установить в единицу бит 4 регистра управления модемом, который подключен к порту со смещением четыре. После этого запись в регистр данных автоматически запускает вывод (передачу) записанного зна­чения. При работе вручную передача кажется мгновенной; при начальной загрузке BIOS настраивает последовательные адаптеры на скорость 2400 бит/с, поэтому передача байта вместе со служебными битами занимает не более 5 мсек. После этого бит готовности приемника установлен - передача завершена. Готовность приемника сохраняется до тех пор, пока принятые данные не будут прочитаны.

Функции языка Си для работы с портами ввода/вывода.Для чтения данных из порта можно использовать функции:

int inport(int port);

unsigned char inportb(int port);

Для записи данных в порт можно использовать функции:

void outport(int port, int val);

void outportb(int port, unsigned char val);

Аргумент этих функций port - номер порта ввода-вывода. Функции inport и inportb возвращают прочитанное из порта значение, а в функциях outport и outportb записываемое в порт значение задается аргументом val. Функции inportb и outportb работают с однобайтными, а inport и outport - с двухбайтными портами.

 


mylektsii.ru - Мои Лекции - 2015-2019 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал