Формат слова управления прерываниями

Бит Назначение
«1» – разрешает прерывание по окончании приема; «0» – запрещает прерывание
«1» – разрешает прерывание по окончании передачи; «0» – запрещает прерывание
«1» – разрешает прерывание при обнаружении сбоя на линии
«1» – разрешает прерывание по любому изменению входных управляющих сигналов
4..7 не используются

Base + 2 – регистр причины прерывания

Бит Назначение
«1» – нет запроса на прерывание; «0» – есть причина прерывания
1,2 00 – переполнение приемника, ошибка четности, ошибка формата; 01 – данные переданы, завершена передача; 10 – завершен прием; 11 – изменение управляющего сигнала;
3..7 не используются

Этот регистр доступен только для чтения.

 

Base + 3 – управляющий регистр.

Бит Назначение
0,1 Кодирует количество бит в информационном слове. «00» - 5 бит; «10» - 6 бит; «01» - 7 бит; «11» - 8 бит.
Количество стоповых битов (гарантированная пауза). «0» - 1 бит; «1» - 2 бита.
3,4 Режим контроля по паритету. «0Х» - не используется, т.е. не контролируется передача по паритету (понижается надежность передачи); «10» - контроль по нечетности; «11» - контроль по четности.
Принудительное формирование бита паритета. «0» - контрольный бит генерируется в соответствии с паритетом символа. «1» - постоянное значение бита паритета в соответствии с инверсным значением 4-го разряда этого регистра (Base + 3[4]).
«1» - устанавливает режим постоянной передачи нуля, т.е. +12 В (используется для отладки линии связи); «0» - нормальная передача символов.
управляющий бит режима портов Base и Base + 1.

Base + 4 – регистр управления модемом.

Бит Назначение
DTR (Data Terminal Ready) – сигнал готовности COM-порта.
RTS (Request To Send) – управление выходом запроса передачи.
Функции сигналов разные. (См. описание выходов линий RTS и DTR).
Состояние выхода OUT1.
Состояние выхода OUT2.
Используются при отладке аппаратуры.
4..7 Как правило не используются.

Base + 5 – регистр состояния линии (LSR – Line Status Register).

Организует работу COM-порта

.

Бит Назначение
«1» - данные получены и готовы для чтения. Сброс («0») этого разряда при чтении регистра данных.
Ошибка переполнения при приеме. Принят новый байт раньше, чем прочитан предыдущий. Предыдущий может быть потерян.
Ошибка паритета при приеме.
Ошибка синхронизации формата кадра. «1» - не принят стоповый бит.
Обнаружен обрыв линии (+12 В на входе приемника).
Характеристики передатчика. «1» - буферный регистр передатчика пустой, можно записывать следующий байт.
«1» - передача байта закончена.
«1» - ошибка режима FIFO (Согласованная скорость приемника и передатчика).

 

Base + 6 – регистр состояния модема.(Гук)

 

Base + 7 – не документирован.

4.8. Общий порядок программного обслуживания COM–порта.

1. Инициализация (установка режима).

2. Прием/передача.

Инициализация.

1. Установка режимов регистров с адресами Base и Base + 1 путем присвоения 7-ому разряду регистра Base + 3 значения 1 (Base + 3[7]=1).

Устанавливается скорость передачи данных Vпер.

Vпер.→ (Base),(Base + 1)

Lo Hi

2. Запись кода делителя частоты по адресам Base и Base + 1.

3. Восстановление значений регистров Base и Base + 1, как регистра данных и регистра управления частот.

Base + 3[7]=0

Управляющее слово регистра Base + 3 формируется с учетом требований к:

- длине слова;

- числу стоповых битов;

- режима контроля частоты.

4. Устанавливается режим управления прерываний, регистр Base + 1.

Если к –порту подключен модем, то нужно установить режим работы модема.

 

Прием/передача.

Общая часть для приемника и передатчика.

1. Убедиться , что буферный регистр передатчика пуст: опрос регистра (Base + 5)[5]=?

2. Запись данных в регистр N→Base. Начинается передача.

Прием.

1. Убедиться, что данные переданы (Base + 5[0]=?).

2. Чтение регистров данных с адресом Base позволяет записать в память прочитанный код.

Замечание: возможен дуплексный режим работы, благодаря тому, что выделено 2 линии.

4.9. Пример программирования COM –порта.

Требуется COM-порт с физическим адресом Base$3F8 подготовить к работе со скоростью V=9600 бод. Режим обслуживания – сканирование, т.е. прерывание запрещено. Статические сигналы управления TS/CTS – не используются. Длина информационного слова 8 бит. Пауза, т.е. число стоповых бит 2. Контроль по паритету отсутствует.

 

 

Оператор, позволяющий читать астрономическое время в Pascal:

Time:=MemW[$40:$6С]

Время измеряется в тактах системных часов Δτ = 55 мсек.

Time – Word {двухбайтное целое}

{Инициализация}

Base:=$378;

port[Base+3]:=$80; {1000’0000}

{v=9600 DN=$000C=1210}

port[Base]:=$0C;

port[Base+1]:=$00;

{0000’0111=$07=07}

port[Base +3]:=07;

port[Base +1]:=0; {запрет всех прерываний}