Рассмотрим назначение регистров COM-порта.
При инициализации задается режим и параметры передачи работы (длина передаваемого слова, число стоповых бит и т.д.). Они заносятся в регистр управления и регистр скорости передачи. Некоторые регистры имеют одинаковые адреса. Поэтому конкретное обращение к регистрам с одинаковыми адресами зависит от регистра управления и начинать инициализацию следует с него.
B7=1 B7=0
B7=1 RxD
B7=0
TxD
B7=0
Назначение регистров БИС UART.
Передатчик - промежуточный регистр данных передатчика (только для записи). Данные, записанные в регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала #CTS. Бит 0 передается (и принимается) первым. При длине посылки менее 8 бит старшие биты игнорируются.
Приемник - буферный регистр принимаемых данных (только для чтения). Данные, принятые входным сдвигающим регистром, откуда они могут быть считаны процессором. Если к моменту окончания приема очередного символа предыдущий не был считан из регистра, фиксируется ошибка переполнения. При длине посылки менее 8 бит старшие биты в регистре имеют нулевое значение.
Регистр младшего байта делителя частоты (скорости передачи). Делитель определяется формуле D=115200/V, где V- скорость передачи (бит/с). Входная частота синхронизации 1,8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных.
Регистр старшего байта делителя частоты (скорости передачи).
Регистр разрешения прерываний и регистр идентификации прерываний используются только в процедурах, в которых необходимо использовать режим прерывания при передаче данных по интерфейсу RS-232C.
Регистр разрешения прерываний. Единичное значение бита разрешает прерывание от соответствующего источника. Назначение бит регистра разрешения прерываний:
• биты [7 : 4] = 0 - не используются;
• бит 3 - по изменению состояния модема (любой из линий #CTS, #DSR, RI, DCD);
• бит 2 - по обрыву (ошибке) линии;
• бит 1 - по завершении передачи (передатчик свободен);
• бит 0 - по приему символа (получены данные в приемнике).
Если прерывания разрешены, то при появлении соответствующей ситуации, заданной в регистре разрешения прерываний, в регистр идентификации прерываний в биты В2 и В1 заносится тип прерывания (00 – изменение состояние модема; 01 – передан символ и передатчик пуст; 10 – получены данные для приема микропроцессором; 11 – поступило условие обрыва линии или ошибка приема. При этом бит В0 устанавливается в «1», и формируется аппаратное прерывание (сигнал на линиях IRQ3 или IRQ4). Регистр идентификации прерываний используется только для чтения. Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по четырехуровневой системе приоритетов. Порядок приоритетов (по убыванию): состояние линии, прием символа, освобождение регистра передатчика, состояние модема. При возникновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника.
Регистр управления обменом (регистр настройки параметров передачи по интерфейсу).
· бит В7 – управление доступом к регистрам с одинаковыми адресами;
· бит В6 – формирование обрыва линии (посылка нулей);
· бит В5 – принудительное формирование бита паритета:
а) В5=0 – контрольный бит генерируется в соответствии с заданными условиями паритета выводимого символа;
б) В5=1 – постоянное значение контрольного бита (при В4=1 – нулевое, при В4= 0 – единичное);
· бит В4 – выбор типа контроля: 0 – контроль на нечетность, 1 – контроль на четность;
· бит В3 – разрешение контрольного бита: 0 – контрольный бит запрещен, 1 – контрольный бит разрешен;
· бит В2 – количество стоп- бит: 0 – 1 стоп-бит, 1 – 2 стоп – бита.
· биты [1 : 0] – количество бит данных: 00 – 5 бит, 01 – 6 бит, 10 – 7 бит, 11 – 8 бит.
Регистр состояния обмена. Формат регистра:
· бит В7=1 – тайм-аут (ошибка принятых данных в режиме FIFO). В режиме не FIFO бит В7 всегда равен 0;
· бит В6=1 – регистр передатчика пуст, передача закончена, данных для передачи нет;
· бит В5=1 – буферный регистр передачи пуст и готов принять данные для передачи;
· бит В4=1 – обнаружен обрыв линии (постоянная передача нулей);
· бит В3=1 – ошибка кадра (неверный стоп-бит);
· бит В2=1 – ошибка паритета (ошибка контрольного бита);
· бит В1=1 – ошибка переполнения при приеме (принят очередной символ раньше, чем прочитан предыдущий, при этом предыдущий символ теряется);
· бит В0=1 – полученные данные готовы для чтения процессором.
Регистр управления модемом. Формат регистра:
• биты [7:5]=0 – не используются;
• бит В4 – режим работы UART: 0 – рабочий, 1 – диагностический;
• бит В3 – разрешение прерываний с помощью внешнего выхода OUT2;
• бит В2 - управление выходным сигналом OUT1 (в рабочем режиме не используется);
• бит В1 - управление выходом #RTS;
• бит В0 - управление выходом #DTR.
Регистр состояния модема.. Регистр фиксирует состояние и изменение состояний линий управления интерфейса. Формат регистра:
· бит В7 – состояние линии DCD;
· бит В6 – состояние линии RI;
· бит В5 – состояние линии #DSR;
· бит D4 – состояние линии #CTS;
· бит В3 – изменение состояния линии DCD;
· бит В2 – изменение состояния линии RI;
· бит В1 – изменение состояния линии #DSR ;
· бит В0 - изменение состояния линии #CTS.
Признаки изменения биты [3:0] сбрасываются по чтению регистра.
16.. Назначение сигналов внешнего интерфейса RS 232C.
Сигналы интерфейса RS–232C подразделяются на следующие классы.
Последовательные данные (например, TXD, RXD). Интерфейс RS–232C обеспечивает два независимых последовательных канала данных: первичный (главный) и вторичный (вспомогательный). Оба канала могут работать в дуплексном режиме, т.е. одновременно осуществляют передачу и прием информации.
Управляющие сигналы квитирования (например, RTS, CTS). Сигналы квитирования — средство, с помощью которого обмен сигналами позволяет 1устройству начать диалог с другим до фактической передачи или приема данных по последовательной линии связи.
Сигналы синхронизации (например, TC, RC). В синхронном режиме (в отличие от более распространенного асинхронного) между устройствами необходимо передавать сигналы синхронизации, которые упрощают синхронизм принимаемого сигнала в целях его декодирования.
На практике вспомогательный канал RS–232C применяется редко, и в асинхронном режиме вместо 25 линий используются 9 линий:
RXD — принимаемые данные (входные последовательные данные);
TXD — передаваемые данные (выходные последовательные данные);
RTS — (OUT) сигнал запроса в приемник на прием данных. Активен во все время передачи.
CTS — (IN)сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника выдавать данные.
DTR — готовность передатчика выдавать данные приемнику.
DSR (IN) — готовность данных. Используется для задания режима модема.
DCD(IN) — сигнал обнаружения несущей данных. Детектор принимаемого линии сигнала.
RI — индикатор вызова. Говорит о приеме модемом сигнала вызова
FG - защитное заземление (экран).
SG - сигнальное заземление, нулевой провод.
17. Драйвер (программа обслуживания) внешнего интерфейса RS 232. Операции программы и их назначение.
COM-порты поддерживаются сервисом BIOS (программой прерывания INT 14H). Эта программа может выполнять четыре операции, определяемые содержимым регистра АН МП:
1) АН=0 – инициализация порта (установка скорости передачи и формата посылок);
2) АН=1 – вывод символа;
3) АН=2 – ввод символа;
4) AH=3 - чтение состояния линии и модема ( чтение регистров LSR и MSR).
При работе с программой INT 14Н в регистре DX необходимо предварительно установить номер COM-порта (0- СОМ1, 1-СОМ2, 2- СОМ3, 3- СОМ4).
При выполнении каждой операции в регистр АН возвращается состояние линии (состояние регистра LSR). При выполнении операции» Чтение состояния» в регистр АН также возвращается состояние линии, а также в регистр AL – состояние модема (состояние регистра MSR).
Приведем пример инициализации последовательного контроллера, когда устанавливаются все его параметры. Длина слова инициализации -1 байт. Назначения битов этого байта следующие (в скобках даны конкретные значения для примера):
· биты 0-1 - длина слова (11-8 бит);
· бит 2 - число стоп-битов (1-2 бит);
· биты 3-4 - контроль (11 - на четность);
· биты 5-7 - скорость обмена (010 - 300 бод).
В состав ПК может входить несколько контроллеров последовательного интерфейса. Поэтому необходимо задавать номер контроллера, к которому происходит обращение.
;инициализация последовательного контроллера
mov dx,0 ;выбор контроллера (порт СОМ1)
mov al,01011111B ;установка параметров инициализации
mov ah,0 ;задание операции инициализации
int 14H ;инициализация контроллера
Прежде чем передать или принять код данных, необходимо прочитать содержимое регистра состояния обмена и проанализировать его. В следующем примере приводится процедура выдачи центральным процессором данных для передачи их через последовательный интерфейс. Для этого проверяется бит 5 регистра состояния, информирующий о выдаче в интерфейс предыдущего кода. Затем посылается код очередного символа.
mov dx,0 ;выбор контроллера
M: mov ah,3 ;задание операции “Чтение состояния”
int 14H ;выполнение операции
test al,00100000B ;данные переданы?
jz M ;если нет – повторение операции
mov al,char ;запись кода символа
mov ah,1 ;задание операции “Посылка одного символа”
int 14H ;выполнение операции
Аналогично организуется прием данных центральным процессором. В отличие от рассмотренной процедуры анализируются биты регистра состояния, информирующие о поступлении очередного кода и безошибочности его передачи.
18. Назначение и организация интерфейса RS 232C. Суть асинхронного режима передачи данных по интерфейсу.
Интерфейс RS-232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и другое периферийное оборудование), а также для связи компьютеров между собой. Если устройства находятся на небольшом расстоянии, то соединение двух устройств выглядит так:
RS-232C
Если устройства находятся на значительно большем расстоянии, то в роли аппаратуры каналов данных обычно выступает модем, полная схема подсоединения выглядит так:
RS232C RS232C
Канал связи
Длина кабеля интерфейса около 18м. Скорость обмена 19 200 бит/сек (20 Кбит/сек).
Интерфейс позволяет исключить канал удаленной связи вместе с парой устройств (модемов), соединив устройства непосредственно с помощью нуль-модемного кабеля.
RS232C
Нуль-модем
Данные в RS-232C передаются в последовательном коде побайтно. Каждый байт обрамляется стартовым и стоповыми битами. Данные могут передаваться как в одну, так и в другую сторону (дуплексный режим).
Компьютер имеет 25-контактный (DB25P) или 9-контактный (DB9P) разъем для подключения RS-232C. Назначение контактов разъема приведено в таблице.
Назначение сигналов следующее:
FG — защитное заземление (экран).
TxD — данные, передаваемые компьютером в последовательном коде (логика отрицательная).
RxD — данные, принимаемые компьютером в последовательном коде (логика отрицательная).
RTS — сигнал запроса передачи. Активен во все время передачи.
CTS — сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника.
DSR — готовность данных. Используется для задания режима модема.
SG — сигнальное заземление, нулевой провод.
DCD — обнаружение несущей данных (детектирование принимаемого сигнала).
DTR — готовность выходных данных.
RI — индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети.
Обмен по RS-232C осуществляется с помощью обращений по специально выделенным для этого портам COM1 (адреса 3F8h...3FFh, прерывание IRQ4), COM2 (адреса 2F8h...2FFh, прерывание IRQ3), COM3 (адреса 3F8h...3EFh, прерывание IRQ10), COM4 (адреса 2E8h...2EFh, прерывание IRQ11).
Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи. Данные передаются в инверсном коде (1 соответствует низкий уровень, 0 — высокий уровень).
Типы передач:
1) токовая петля
2) синхронная передача
3) асинхронная передача
Асинхронный режим
Рис. Формат асинхронной передачи RS-232C
Асинхронный режим передачи является байт-ориентированным (символьно-ориентированным): минимальная пересылаемая единица информации — один байт (один символ). Формат посылки байта иллюстрирует рис.
Передача каждого байта начинается со старт-бита, сигнализирующего приемнику о начале посылки, за которым следуют биты данных и, возможно, бит четности (Parity). Завершает посылку стоп-бит, гарантирующий паузу между посылками. Старт-бит следующего байта посылается в любой момент после стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение («0»), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена, измеряемой в количестве передаваемых бит в секунду. Внутренний генератор синхронизации приемника использует счетчик-делитель опорной частоты, обнуляемый в момент приема начала старт-бита.
Старт бит | Биты данных | Бит контроля | Стоп биты |
При отсутствии данных в линии передачи будет находится «1». Появление «0» информирует о начале передачи слова. Передачу можно организовывать с контролем и без.
Возможности:
1) скоростей передачи данных: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200 бит/с.
2) количество бит данных может составлять 5, 6, 7 или 8 бит
3) возможность контроля (нет контроля; контроль на четность; контроль на нечетность)
4) количество стоп-бит может быть 1, 1,5 или 2 (“полтора бита” означает только длительность стопового интервала).
Формат асинхронной посылки позволяет выявлять возможные ошибки передачи:
· Если принят перепад, сигнализирующий о начале посылки, а по стробу старт-бита зафиксирован уровень логической единицы, старт-бит считается ложным и приемник снова переходит в состояние ожидания. Об этой ошибке формата приемник может и не сообщать.
· Если во время, отведенное под стоп-бит(ы), обнаружен уровень логической единицы, фиксируется ошибка стоп-бита (тоже ошибка формата).
· Если применяется контроль четности (паритета), то после посылки бит данных (перед стоп-битом) передается контрольный бит. Этот бит дополняет количество единичных бит данных до четного или нечетного в зависимости от принятого соглашения. Прием байта с неверным значением контрольного бита при включенном контроле паритета приводит к фиксации ошибки принятых данных.
19. Драйвер монитора (программа INT 10h). Формирование цветов в графическом режиме для видеосистемы VGA.
Int 10h — видеосервис — предназначен для работы с графическим адаптером. Его первичной задачей является управление видеорежимом (BIOS Video Mode), определяющим формат экрана. BIOS адаптера должна выполнять программирование всех стандартных и специфических управляющих регистров для установки (смены) требуемого видеорежима и выбранных параметров развертки — кроме нее о способах этих переключений остальное ПО может и не знать.
В пределах возможностей установленного видеорежима видеосервис предоставляет возможности отображения информации на различных уровнях. Простейший для программиста телетайпный режим позволяет посылать поток символов, которые будут построчно отображаться на экране с отработкой символов возврата каретки, перевода строки, обеспечивая «прокрутку» изображения при заполнении экрана. Есть функции и для полноэкранной работы с текстом, при которой доступны и атрибуты символа. В графическом режиме имеется возможность чтения и записи пикселя с указанными координатами. Однако видеосервисом Int 10h программисты пользуются далеко не всегда, поскольку работает он довольно медленно.
Операции int10h можно разделить на следующие группы:
Операции общего назначения.
Очистка экрана