Для подготовки контроллера СОМ - порта к работе необходимо
Рассмотрим порты ввода-вывода СОМ1, имеющего базовый адрес 3F8h. Следует обратить внимание, что порты 3F8h и 3F9h имеют разное назначение в зависимости от бита 7 порта 3F8h (т. е. бит DLAB - Divisor Latch Access Bit).
Сигналом RI локальный модем сообщает компьютеру (коммуникационной программе), к которому он подключен, о поступлении телефонного вызова, т. е. о предстоящем сеансе связи.
COM – порты могут быть сконфигурированы различным образом. BIOS PC поддерживает до 4 последовательных интерфейсов. С конфигурацией двух как правило, проблем не возникает, тем более что стандартные установки на плате интерфейса обычно соответствуют оптимальным. Проблемы могут возникнуть при конфигурировании портов COM3 и COM4, поскольку для необходимо указать непересекающиеся с другими устройствами адреса и номера линий прерывания.
Стандартные значения адресов и IRQ для COM – портов приведены в таблице 2.2.
Имя порта
Адрес порта
Прерывание
COM 1
3F8h-3FFh
IRQ 4
COM 2
2F8h-2FFh
IRQ 3
COM 3
3E8h-3EFh
IRQ 4*
COM 4
2E8h-2EFh
IRQ 3*
Таблица 2.
*Хотя порты COM 3 и COM 4 могут совместно с портами COM 1 и COM 2 использовать прерывания IRQ 3 и IRQ 4, не рекомендуется конфигурировать порты таким образом. Если необходимы дополнительные последовательные порты, то лучше установить COM 3 на IRQ 5 или IRQ 10, а COM 4 на IRQ 11 (конечно, если эти прерывания не используются другими устройствами).
Таблица3
Порт
Операция
Описание
3F8h
Запись
Регистр передатчика – сюда засылается байт для передачи
Если DLAB = 1,то сюда засылается младший байт скорости обмена (см. порт 3F9h)
3F9h
Запись
Если DLAB=1, то сюда засылается старший байт скорости обмена. Скорость задается значением делителя, равным 115200/V, где V - скорость в бодах. Например, для скорости 9600 бод делитель равен 115200/9600=12=0Ch, поэтому нужно вывести 0Ch в порт 3F8h и 0 в порт 3F9h.
Запись
Регистр управления прерываниями (1 = разрешить прерывание):
7 6 5 4 3 2 1 0
┌──┬──┬──┬──┬──┬──┬──┬──┐
│0 │0 │0 │0 │ │ │ │ │ Бит:
└──┴──┴──┴──┴┬─┴┬─┴┬─┴┬─┘ ────
│ │ │ └─> 0: прерывание по
│ │ │ приему символа
│ │ └────> 1: прерывание по
│ │ завершению
│ │ передачи символа
│ └───────> 2: прерывание по
│ обрыву линии или
│ или ошибке в линии
└──────────> 3: прерывание по
изменению состояния
модема (любой из
линий CTS, DSR, RI
и DCD)
3FAh
Чтение
Регистр идентификации прерывания. Когда произошло прерывание, здесь содержится причина, вызвавшая его:
7 6 5 4 3 2 1 0
┌──┬──┬──┬──┬──┬──┬──┬──┐
│0 │0 │0 │ 0│ 0│ │ │ Бит:
└──┴──┴──┴──┴──┴──┼──┴┬─┘ ────
│ │
│ └──>0: 0=есть отложенные
│ прерывания
└──────>1-2:причина прерывания:
11=ошибка или обрыв линии; сбрасывается чтением регистра состояния линии (порт 3FDh)
10=принят символ; сбрасывается чтением приемника (порт 3F8h)
01=передан символ; сбрасывается записью символа в регистр передатчика (порт 3F8h)
00=изменение состояния модема(линий CTS, DSR, RI или DCD); сбрасывается чтением регистра состояния модема (порт 3FEh)
3FBh
Чтение/
Запись
Регистр управления линией
7 6 5 4 3 2 1 0
┌──┬──┬──┬──┬──┬──┬──┬──┐
│ │ │ │ │ │ │ Биты:
└┬─┴┬─┴┬─┴──┼──┴┬─┴──┼──┘ ─────
│ │ │ │ │ │
│ │ │ │ │ └> 0-1: число битов
│ │ │ │ │ данных: 00=5, 01=6,
│ │ │ │ │ 10=6, 11=8
│ │ │ │ └─────> 2: число стоп-битов:
│ │ │ │ 0=1, 1=1.5 при 5
│ │ │ │ битах данных и 2 в
│ │ │ │ противном случае
│ │ │ └─────────> 3-4: тип четности:
│ │ │ X0=нет,
│ │ │ 01=нечетная,
│ │ │ 11=четная
│ │ └──────────────> 5: постоянная
│ │ четность:
│ │ 0=отмена постоянной
│ │ четности
│ │ 1=постоянный бит
│ │ четности, зависит от
│ │ битов 3-4:
│ │ биты 3-4=01 - бит четности всегда 1
│ │ биты 3-4=11 - бит четности всегда 0
│ │ биты 3-4=X0 - без бита четности
│ └─────────────────> 6: 1=имитировать обрыв
│ линии(посылка нулей)
└────────────────────> 7: бит DLAB:
1=порты 3F8h и 3F9h
для загрузки
скорости обмена;
0=порты 3F8h и 3F9h
в обычном режиме
3FCh
Запись
Регистр управления модемом
7 6 5 4 3 2 1 0
┌──┬──┬──┬──┬──┬──┬──┬──┐
│ 0│ 0│ 0│ │ │ │ │ │ Бит:
└──┴──┴──┴┬─┴┬─┴┬─┴┬─┴┬─┘ ───
│ │ │ │ └>0: 1=установить выход DTR
│ │ │ └───>1: 1=установить выход RTS
│ │ └──────>2: 1=установить OUT1 (не
│ │ используется)
│ └─────────>3: 1=установить OUT2
│ (разрешить прерывания от
│ RS-232)
└────────────>4: 1=диагностический
режим (посылать выход на
вход стыка).
Регистр состояния модема. Биты 0-3 вызывают прерывание по изменению состояния модема, если оно разрешено:
7 6 5 4 3 2 1 0
┌──┬──┬──┬──┬──┬──┬──┬──┐
│ │ │ │ │ │ │ │ │ Бит:
└┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ───
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ └──> 0:1=изменилось состояние линии CTS
│ │ │ │ │ │ └─────> 1:1=изменилось состояние линии DSR
│ │ │ │ │ └────────> 2:1=изменилось состояние линии RI
│ │ │ │ └───────────> 3:1=изменилось состояние линии DCD
│ │ │ └──────────────> 4: состояние линии CTS
│ │ └─────────────────> 5: состояние линии DSR
│ └────────────────────> 6: состояние линии RI
└───────────────────────> 7: состояние линии DCD
Примечание: "Изменилось состояние линии..." означает, что
данная линия стыка RS-232 изменила свое состояние по сравнению с
последним чтением этого регистра.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление