Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПОРТ ПОСЛЕДОВАТЕЛЬНОЙ ПЕРЕДАЧИ ДАННЫХ

.doc
Скачиваний:
13
Добавлен:
01.05.2014
Размер:
43.52 Кб
Скачать

ПОРТ ПОСЛЕДОВАТЕЛЬНОЙ ПЕРЕДАЧИ ДАННЫХ

Основные понятия.

Компьютер IBM PC имеет по крайней мере один порт последователь-

ной передачи данных, поддерживающий интерфейс RS-232-C (точнее,

подмножество сигналов этого интерфейса). Простота этого интерфейса

и его высокая помехоустойчивость способствуют его широкому примене-

нию для подключения к ПЭВМ как стандартных (мышь, модем, ...), так

и нестандартных периферийных устройств.

При последовательной передаче данные передаются по одному про-

воду поочередно бит за битом. Передача данных сопровождается на-

чальным стартовым синхробитом, битом контроля четности, следующим

за битами данных, и одним или двумя стоповыми битами в конце посыл-

ки (Рис.1).

──┐ ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬───

├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤ │ │

Ст 0 1 2 3 4 5 6 7 К Стоп

│мл. Биты данных ст.│

Рис. 1.

Количество передаваемых в посылке бит данных, наличие или от-

сутствие контрольного бита К, вид контроля (четность/нечетность),

количество стоповых бит, скорость передачи могут изменяться при

настройке порта. Естественно, эти параметры должны быть одинаковыми

на передающей и приемной сторонах.

Аппаратная реализация.

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

хема Intel 8250 - универсальный асинхронный приемопередатчик. Мик-

росхема имеет несколько внутренних регистров, адресуемых командами

ввода/вывода. Внешние устройства подключаются к линиям интерфейса

через разъемы, имеющие 9 или 25 контактов. Уровни напряжений на ли-

ниях: -15 вольт для логического нуля и +15 вольт для логической

единицы. Распределение линий по контактам разъемов приведено в

Табл. 1. Управление сигналами на линиях и опрос их состояния прог-

раммируются.

.

- 2 -

Табл. 1.

───────────┬──────────────────────────────────────────────┬────────

25 9 │ Назначение контакта │вход или

конт. конт.│ │выход

─────┬─────┼──────────────────────────────────────────────┼────────

1 │ - │ Защитное заземление (корпус) │ -

2 │ 3 │ Передаваемые данные TxD (Transmitted Data) │ Выход

3 │ 2 │ Принимаемые данные RxD (Received Data) │ Вход

4 │ 7 │ Запрос для передачи RTS (Request To Send) │ Выход

5 │ 8 │ Сброс для передачи CTS (Clear To Send) │ Вход

6 │ 6 │ Готовность данных DSR (Data Set Ready) │ Вход

7 │ 5 │ Сигнальное заземление SG (Signal Ground) │ -

8 │ 1 │ Детектор принимаемого с линии сигнала DCD │ Вход

│ │ (Data Carrier Detect) │

20 │ 4 │ Готовность выходных данных (DTR) │ Выход

│ │ (Data Terminal Ready) │

22 │ 9 │ Индикатор вызова RI (Ring Indicator) │ Вход

─────┴─────┴──────────────────────────────────────────────┴────────

Порты асинхронного адаптера.

Первый адаптер COM1 имеет базовый адрес 3F8h и занимает диапа-

зон адресов от 3F8h до 3FFh. Второй адаптер COM2 имеет базовый ад-

рес 2F8h и занимает диапазон адресов от 2F8h до 2FFh.

Асинхронные адаптеры подключены к линиям прерывания: COM1 к

IRQ4 (соответствует INT 0Ch), COM2 к IRQ3 (соответствует INT 0Bh).

Рассмотрим назначение портов адаптера.

Порт 3F8h соответствует регистрам данных. При передаче в него

заносятся передаваемые данные, при приеме из него читаются принятые

данные. Следует заметить, что это два разных регистра. В режиме

инициализации адаптера через этот порт передается младший байт де-

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

Порт 3F9h в рабочем режиме используется для установки регистра

управления прерываниями. В режиме инициализации адаптера через этот

порт передается старший байт делителя частоты для установки скорос-

ти передачи. Формат этого регистра в рабочем режиме:

биты 0=1 - разрешение прерывания при готовности принимаемых данных;

1=1 - разрешение прерывания после передачи байта;

- 3 -

2=1 - разрешение прерывания по обнаружении состояния "BREAK"

или по ошибке;

3=1 - разрешение прерывания по изменению состояния входных ли-

ний CTS,DSR,RI,DCD на разъеме;

4-7 - не используются, должны быть равны 0.

Порт 3FAh связан с регистром идентификации прерываний. Формат

регистра:

биты 0 = 1 - нет прерываний, ожидающих обслуживания;

2,1 = 00 - прерывание по линии состояния приемника, возникает

при переполнении приемника, ошибках четности или

формата данных или при состоянии "BREAK";

сбрасывается после чтения состояния линии из порта

3FDh;

01 - данные приняты и доступны для чтения, сбрасывается

после чтения данных из порта 3F8h;

10 - буфер передатчика пуст, сбрасывается после записи

данных в порт 3F8h;

11 - состояние модема, устанавливается при изменении

состояния входных линий CTS, RI, DCD, DSR, сбрасы-

вается после чтения состояния модема из порта 3FEh;

7..3 - не используются, равны 0.

Порт 3FBh соответствует регистру управления и доступен по запи-

си и чтению. Формат регистра:

биты 1,0 = 00 - 5 бит │ длина слова в битах;

01 - 6 бит │

10 - 7 бит │

11 - 8 бит │

2 = 0 - 1 бит │ количество стоповых бит;

1 - 2 бита │

4,3 = x0 - контроль на четность не используется;

01 - контроль на нечетность;

11 - контроль на четность;

5 - фиксация четности. При установке этого бита бит четности

всегда принимает значение 0, если биты 4,3 = 11, или 1,

если биты 4,3 = 01;

6 - установка перерыва. Вызывает вывод строки нулей в ка-

честве сигнала "BREAK" для подключенного устройства;

7 = 1 - порты 3F8h и 3F9h используются для загрузки делителя

- 4 -

частоты;

0 - порты используются как обычно для рабочего режима.

Порт 3FCh соответствует регистру управления модемом. Он управ-

ляет состоянием выходных линий DTR и RTS, а также специфических для

модемов линий OUT1 и OUT2, и запуском диагностики. Формат порта:

биты 0 - линия DTR;

1 - линия RTS;

2 - линия OUT1; │ резервные линии;

3 - линия OUT2; │

4 - запуск диагностики при входе замкнутом на выход адаптера;

7..5 - не используются, должны быть равны 0.

Порт 3FDh связан с регистром состояния линии. Формат порта:

биты 0 - данные получены и готовы для чтения, сбрасывается при чте-

нии данных;

1 - ошибка переполнения; был принят новый байт данных, а пре-

дыдущий еще не был считан программой (потерян);

2 - ошибка четности, сбрасывается после чтения состояния линии;

3 - ошибка синхронизации;

4 - обнаружен запрос на прерывание передачи "BREAK" длинная

строка нулей;

5 - регистр хранения передатчика пуст, в него можно записать

новый байт данных;

6 - регистр сдвига передатчика пуст;

7 - тайм-аут (устройство не связано с компьютером).

Порт 3FEh связан с регистром состояния модема. Формат порта:

биты 0 - линия CTS изменила состояние;

1 - линия DSR изменила состояние;

2 - линия RI изменила состояние;

3 - линия DCD изменила состояние;

4 - состояние линии CTS;

5 - состояние линии DSR;

6 - состояние линии RI;

7 - состояние линии DCD.

Программирование асинхронного адаптера.

Для программирования асинхронного адаптера будем использовать

перечисленные выше порты ввода/вывода.

- 5 -

Вначале нужно выполнить инициализацию асинхронного адаптера,

т.е. задать его программируемые параметры: скорость передачи, коли-

чество бит в слове, параметры контроля четности, количество стопо-

вых бит. Текущее значение этих параметров можно узнать, прочитав

порт 3FBh. Для установки нового режима нужно изменить соответствую-

щие поля байта режима и записать его в порт 3FBh. Для установки за-

данной скорости обмена нужно вначале установить старший бит этого

байта в 1. Затем последовательно двумя командами вывода нужно заг-

рузить делитель частоты. Младший байт записывается в порт 3F8h,

старший - в порт 3F9h. Соответствие скорости передачи и содержимого

делителя частоты приведено в Табл.2.

Табл. 2.

─────────────┬────────────────────╥───────────┬────────────────────

Делитель │Скорость передачи ║ Делитель │Скорость передачи

│ в бодах ║ │ в бодах

─────────────┼────────────────────╫───────────┼────────────────────

1040 │ 110 ║ 24 │ 4800

768 │ 150 ║ 12 │ 9600

384 │ 300 ║ 6 │ 19200

192 │ 600 ║ 3 │ 38400

96 │ 1200 ║ 2 │ 57600

48 │ 2400 ║ 1 │ 115200

После установки скорости передачи нужно установить старший бит

байта режима в 0. Кроме этого, необходимо проинициализировать ре-

гистр управления прерыванием (порт 3F9h), даже если в программе не

используется прерывание, в него нужно записать 0. На этом инициали-

зация заканчивается.

Передача данных. Перед записью байта данных в регистр передат-

чика нужно убедиться, что регистр хранения передатчика свободен.

Признаком этого является установленный в 1 бит 5 регистра состояния

линии (3FDh).

Прием данных. Перед вводом байта из регистра приемника следует

убедиться, что он принят из линии. Признаком этого является уста-

новленный в 1 бит 0 бит регистра состояния линии (3FDh).