Главная » Ассемблер, Железо » Программирование порта последовательной передачи данных

0

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

Последовательный порт передает и принимает информацию в асинхронном режиме. Формат передачи данных последовательного порта в обобщенном виде представлен на рис. 5.1.

Рис. 5.1. Формат передачи данных последовательного порта

Передача данных начинается посылкой стартового бита, за которым следует от 5 до 8 бит данных. Если используется контроль по четности, то за битами данных следует бит паритета. Завершает посылку стоповый сигнал длительностью в 1, 1,5 или 2 тактовых интервала. Мышь может быть подключена к одному из двух последовательных портов IBM-совместимого компьютера: СОМ1 или COM2. Порт СОМ1 имеет базовый адрес 3F8h и занимает в пространстве ввода- вывода диапазон адресов 3F8h-3FFh. Он может вырабатывать прерывание IRQ4. Базовый адрес порта COM2 — 2F8h, диапазон адресов — 2F8h-2FFh, вырабатываемое прерывание — IRQ3. Чтобы избежать повторений, в дальнейшем для адресов регистров будут использоваться обозначения вида xF…h, где х соответствует 3 для порта СОМ1 и 2 для порта COM2.

Адрес xF8h разделяют три регистра: регистр данных передатчика (THR), доступный только для записи, регистр данных приемника (RBR), доступный только для считывания, и регистр младшего байта делителя частоты (DLL).

Адрес xF9h разделяют два регистра: регистр управления прерываниями (1ER) к регистр старшего байта делителя частоты (DLM). Формат регистра управления прерываниями показан на рис. 5.2. Разряды этого регистра имеют следующее назначение:

•     бит 0 — прерывание при поступлении байта данных (0 — запрещено, 1 — разрешено);

•     бит 1 — прерывание при завершении передачи байта данных (0 — запрещено, 1 — разрешено); ^

•     бит 2 — прерывание по ошибке или обрыву линии (0 — запрещено, 1 — разрешено);

•     бит 3 — прерывание по сигналу от модема (0 — запрещено, 1 — разрешено);

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

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

Регистр идентификации прерывания (IIR) расположен по адресу xFAh. Формат регистра показан на рис. 5.3. Разряды регистра имеют следующее назначение:

•     бит 0 — запрос прерывания (0 — нет запроса, 1 — есть запрос);

•     биты 1 и 2 идентифицируют источник сигнала прерывания: о 00 — изменение состояния модема;

о 01 — завершение передачи байта;

о 10 — завершение приема байта;

о 11 — ошибка при приеме данных или обрыв линии;

•     бит 3 — прерывание по тайм-ауту;

•     биты 4 и 5 — не используются (установлены в 0);

•     биты 6 и 7 — признак режима FIFO: о 00 — обычный режим;

о 10 – режим FIFO 16550; о 11 – режим FIFO 16550А.

Рис. 5.3. Формет регистра идентификеции прерывений

Регистр управления линией (LCR) находится по адресу xFBh. Формат регистра приведен на рис. 5.4. Назначение разрядов регистра следующее:

•     биты 0 и 1 — длина передаваемого слова: о 00-5 бит;

о 01 — 6 бит; о 10 —7 бит; о И-8 бит;

•     бит 2 — число стоповых битов: (0 — один бит, 1 — два бита);

•     бит 3 — наличие контроля по четности (0 — бит паритета отсутствует, 1 — присутствует);

•     бит 4 — тип контроля (0 — контроль на нечетность, 1 — на четность);

•     бит 5 — имитация контроля четности (0 — нормальный контроль паритета, 1 — имитация контроля — контрольный бит генерируется на основании полученного сигнала);

•     бит 6 — формирование сигнала «Обрыв линии»;

•     бит 7 — управление регистрами xF8h и xF9h (при установке в О этого бита данные регистры используются как регистр данных и регистр управления прерываниями соответственно, а при установке 1 — для загрузки делителя частоты тактового генератора).

Рис. 5.4. Формат регистра управления линией

Скорость приема-передачи задается делением частоты встроенного тактового генератора (115 200 Гц) на значение, записываемое в регистры xF8h и xF9h. Перед записью делителя необходимо переключить эти регистры в соответствующий режим, установив в единицу бит 7 регистра управления линией xFBh. Для установки используемой мышью скорости 1200 бод необходимо записать число 96 (60h) в регистр младшего байта делителя частоты и 0 — в регистр старшего байта. После записи делителя нужно вернуть регистры в исходное состояние, сбросив в ноль бит 7 регистра управления.

Регистр управления модемом (MCR) расположен по адресу xFCh. Формат регистра показан на рис. 5.5. Разряды регистра имеют следующее назначение:

•     бит 0 — управление сигналом готовности выходных данных DTR;

•     бит 1 — управление сигналом готовности к приему данных RTS;

•     бит 2 — управление выходным сигналом OUT1;

•     бит 3 — управление выходным сигналом OUT2;

•     бит 4 — запуск самотестирования контроллера последовательного порта (0 — нормальный режим, 1 — режим самодиагностики);

•     биты 5-7 — зарезервированы и должны быть установлены в 0.

Рис. 5.5. Формат регистра управления модемом

Регистр состояния приемопередатчика (LSR) находится по адресу xFDh. Формат регистра показан на рис. 5.6. Назначение разрядов следующее:

•     бит 0 — готовность данных (устанавливается в 1, когда данные получены приемником и готовы для считывания);

•     бит 1 — переполнение (устанавливается в 1 при ошибке переполнения приемника);

•     бит 2 — ошибка паритета (устанавливается в 1 при обнаружении ошибки по четности);

•     бит 3 — ошибка кадра (устанавливается в 1 при сбое синхронизации);

•     бит 4 — обнаружение сигнала «Обрыв линии» (устанавливается в 1, если сигнал на входе приемника длительное время находится в состоянии 0);

•     бит 5 — регистр данных передатчика пуст (устанавливается в 1, когда завершена передача байта данных и в регистр можно записывать следующий байт);

•     бит 6 — регистр сдвига передатчика пуст (устанавливается в 1, когда свободны все регистры передатчика);

•     бит 7 — ошибка в буфере FIFO (устанавливается в 1, если буфер содержит хотя бы один байт, принятый с ошибкой).

Разряды 1-4 после считывания информации из регистра состояния сбрасываются. Разряд 0 сбрасывается при чтении данных из регистра xF8h.

Рис. 5.6. Формат регистра состояния приемопередатчика

Регистр состояния модема (MSR) находится по адресу xFEh. Формат регистра показан на рис. 5.7. Разряды регистра имеют следующее назначение:

•     бит 0 — изменение состояния линии CTS;

•     бит 1 — изменение состояния линии DSR;

•     бит 2 — изменение состояния линии RI;

•     бит 3 — изменение состояния линии DCD;

•     бит 4 — состояние линии CTS;

•     бит 5 — состояние линии DSR;

•     бит 6 — состояние линии RI;

•     бит 7 — состояние линии DCD.

Рис. 5.7. Формат регистра состояния модема

Признаки изменения состояния сигналов на линиях (биты 0-3) сбрасываются после считывания информации из регистра.

Источник: Кулаков В. К90 Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. — СПб.: Питер, 2003. — 847 е.: ил.

По теме:

  • Комментарии