- •5.2 Последовательный асинхронный адаптер
- •5.2.1 Физический уровень интерфейса последовательного порта
- •5.2.2 Подключение к порту.
- •5.2.3 Структурная схема порта
- •Таким образом для процессора порт
- •5.2.4 Функции регистров порта
- •5.2.4.2 Регистр управления прерывания
- •5.2.4.3 Регистр идентификации прерываний
- •5.2.4.4 Управляющий регистр (ххв)
- •5.2.4.5 Регистр управления модемом (xxc)
- •5.2.4.6 Регистр состояния линии
- •5.2.4.7 Регистр состояния модема
- •Вопросы к разделу 5.2.4
- •5.2.5 Управление потоком в интерфейсе rs-432
- •Вопросы к разделу 5.2.5
- •5.2.6 Программное управление потоком
- •5.6.2.1 Алгоритм процесса передачи
- •5.6.2.2 Алгоритм процесса приема
- •Контрольные вопросы к разделу 5.6.2
- •5. 7. Телефонная сеть общего пользования.
- •5.7.1 Сеть абонентского доступа
5.2.4 Функции регистров порта
Базовая система ввода вывода отводит для портов 4 области по 8 последовательно расположенных адресов нулевомсегменте: 2E8-2EF, 2F8-2FF, 3E8-3EF и 3F8-3FF. Номер регистра в каждой области определяется значением последней цифры. Поэтому далее номера регистров будут определяться обозначением ХХi, где i номер регистра 8,9,A,..,E (рассматриваются функции 7-ми регистров). Номер первого регистра в области ХХ8 называютбазовым адресом порта. Базовый адрес и все остальные адреса регистров порта больше 256, поэтому он задается в регистре DX. Для обращения к порту используются команды
in DX,AL– чтение из регистра, указанного DX в регистр процессора AL
out DX,AL– запись в регистр, указанный DX, из регистра процессора AL.
На лабораторных занятиях мы, для обращения к регистрам порта, будем пользоваться программой debug (отладчик), которая является интерпретатором инструкций отладчика (команд отладчика). Например, инструкция отладчика
o 3F8 55
будет интерпретироваться командами
mov DX, 3F8h ; Загрузка адреса регистра порта в регистр процессора DX
mov AL, 55h ; Загрузка байта 55h в регистр процессора AL
out DX, AL ; Запись содержимого AL, в реистр порта с адресом из DX
а инструкция отладчика
i 3F8
будет интерпретироваться командами
mov DX, 3F8
in AL,DX
Размерность операнда, который записывается или считывается из регистров определяется размерностью указанного в команде регистра процессораAL, AXили EAX.
5.2.4.1 Регистр данных ХХ8– используется для обмена данными с портом и записи младших разрядов константы - делителя частоты тактового генератора, которая определяет скорость передачи (после ввода в управляющий регистр байта с установленным старшим битом). Для записи в порт и передачи кода 0101 0101b=55h необходимо выпорнить инструкцию o 3F8 55.

Зависимость скорости передачи от значения делителя частоты приведена в таблице 5.
Таблица 5
|
Делитель (10) |
Делитель (16) |
Скорость бит/сек |
|
1040 |
600h |
110 |
|
768 |
300h |
150 |
|
368 |
180h |
300 |
|
192 |
0C0h |
600 |
|
96 |
60h |
1200 |
|
48 |
30h |
2400 |
|
24 |
18h |
4800 |
|
12 |
0Ch |
9600 |
|
6 |
6h |
19200 |
|
3 |
3h |
38400 |
|
2 |
2 |
57600 |
|
1 |
1 |
115200 |
5.2.4.2 Регистр управления прерывания
Этот регистр используется либо для управления прерываниями от порта либо (после ввода в управляющий регистр байта с установленным старшим битом) для ввода старшего бита делителя частоты тактового генератора.

Например, если необходимо формировать прерывания при приеме каждого очередного байта, то необходимо записать в регистр управления прерываниями код 01h (0000 0001b). Если прерывания не используются, то этот регистр должен иметь значение 00h.
5.2.4.3 Регистр идентификации прерываний
В
этот регистр порт записывает причину
формирования прерывания. Считывая
состояние этого регистра, программа
может определить причину прерывания.
Если необходимо узнать причину возникшего прерывания, то нужно выполнит инструкцию i 3FA и проанализировать результат. Например, если разрешено прерывание при готовности данных и после возникновения прерывания прочитан код 04h, то приемном буфере (регистре данных 3F8h) находиться принятый код. После чтения состояния линии (регистра 3FD) значение в этом регистре сбрасывается.
