СОДЕРЖАНИЕ
2. Программная модель микропроцессора 8086
2.4. Способы задания операндов команды
3. Основные понятия языка ассемблера
3.2. Директивы определения данных
4. Сегментированная модель памяти
4.3. Общая структура программы
5.1. Соглашению по описанию команд
5.6. Команды организации циклов
5.11. Команды управления микропроцессором
7. Разработка одномодульной программы
7.1. Трансляция и компоновка программы
8. Разработка многомодульных программ
8.1. Принципы разработки модулей
8.2. Расширенное применение директивы сегментации
Программирование микропроцессорных устройств
10. Программирование системного таймера
10.1. Описание таймера-счетчика 8254
10.3. Структура регистров таймера
11. Программирование контроллера прерываний
11.1. Механизм обработки прерываний
11.4. Контроллер прерываний 8259
11.5. Идентификация прерываний
11.6. Прерывания bios и ms-dos
12. Программирование параллельного порта
12.2. Работа с параллельным портом на низком уровне
12.3. Стандартные средства работы с параллельным портом
13. Программирование последовательного порта
13.1. Основы последовательной передачи данных
13.2. Последовательный интерфейс rs-232c
13.3. Универсальный асинхронный приемо-передатчик 8250
13.4. Порты асинхронного адаптера
13.5. Стандартные средства программирования последовательного порта
Для организации последовательной передачи данных в асинхронном режиме разработаны специальные микросхемы UART (Universal Asynchronous Receiver-Transmitter, универсальный асинхронный приемо-передатчик). В режиме передатчика UART должен выполнить следующие операции:
принять символ (в параллельной форме) от ПК;
выполнить параллельно-последовательное преобразования символа;
сформировать кадр путем добавления к информационным разрядам стартового, стопового битов и бита четности;
передать кадр на интерфейс с требуемой скоростью;
сообщить о готовности приема следующего символа.
В режиме приемника UART должен выполнить следующие операции:
принять данные в последовательной форме от интерфейса;
проверить целостность кадра и при наличии ошибки кадрирования выдать сообщение;
выполнить проверку четности и в случае наличия ошибки четности выдать сообщение;
выполнить последовательно-параллельное преобразование и передать символ в ПК;
сообщить о готовности принятия следующего символа.
Первым адаптером последовательной связи являлась микросхема фирмы National Semiconductor 8250. Полным функциональным аналогом микросхемы является 16450. Упрощенная блок-схема УАПП 8250 показана на рис. 49.
Управление всеми операциями выполняется с помощью регистров микросхемы. Все регистры 8-разрядные, но не все разряды являются значимыми. Поэтому при выполнении операции чтения содержимого регистров, неопределенные разряды должны маскироваться.
Для простой последовательной связи необходимо только шесть регистров. Два регистра делителя скорости обмена содержат делитель опорной частоты. Регистр хранения передатчика THR содержит байт данных, который будет передан, а регистр данных приемника RBR – последний полученный байт данных. Доступ можно получить только к этим буферным регистрам, а копирование информации в сдвиговые регистры и процесс сдвига будет выполняется микросхемой 8250 автоматически.
Регистр управления линией LCR и регистр состояния линии LSR инициализируют и управляют линией связи. Регистр состояния модема MSR необходим только для связи через модем, а регистр разрешения прерывания IER и регистр идентификации прерывания IIR – только в процедурах, управляемых прерываниями.
Обычно коммуникационная процедура должна непрерывно проверять регистр статуса линии, ожидая вводимого символа или указания, что все готово для передачи следующего байта данных. Поскольку процессор работает быстро, по сравнению со скоростью передачи последовательных данных, такой метод напрасно расходует процессорное время, которое может использоваться для обработки поступающих или передаваемых данных.
По этой причине адаптер может быть установлен в режим, генерирующий прерывание при поступлении определенного события: появлении символа, возникновении ошибки и т.д. Прерывание передаст управление соответствующей процедуре обработки.
Все последующие модификации этих микросхем программно совместимы. Последовательные COM порты IBP PC основаны на микросхемах, совместимых на уровне регистров с UART 8250. Сравнительные характеристики УАПП, совместимых с микросхемой 8250, приведены в табл. 104.
С микросхемой 16550А совместимо подавляющее большинство микросхем – адаптеров COM портов. По сравнению с 8250 микросхемы 16550 и 16550А имеют дополнительные регистры. Многие биты, считающиеся в 8250 резервом, в 16550 задействованы для управления новыми функциями. Однако все регистры 8250 совпадают с соответствующими регистрами 16550, что обеспечивает совместимость.








Регистр
делителя скорости
передачи
MSB
LSB






MR DDIS RD,RD WR,WR CS0 CS1 CS2 A2-A0 3 ADS 3 DTR RTS OUT1 OUT2 DSR CTS DCD SOUT BAUDOUT RCLK SIN INTR Данные D7-D0 8 8 ПК-интерфейс Регистр
управления модемом Регистр
состояния модема
Схема
управления модемом Буферный
регистр приемника Сдвигающий
регистр приемника Регистр
управления линией Синхронизация
и управление приемником Контроллер-генератор Регистр
состояния линии Регистр
хранения передатчика Сдвигающий
регистр передатчика Буфер
шины данных Регистр
разрешения прерываний Схема
управления прерываниями Регистр
ввода-вывода прерываний Регистр сверхоперативной
памяти
Схема
выбора кристалла Схема
выбора регистра
Схемы
выбора режима
записи-считывания и управления Синхронизация
и управление передатчиком Коммуникационный
интерфейс RI














































Рис. 49. Структурная схема УАПП 8250/16450.
Табл. 104. Характеристики 8250-совместимых УАПП.
|
УАПП |
Характеристики |
|
8250 |
Считается базовой, самая простая по возможностям. Имеет ошибки, приводящие к возможности появления ложных прерываний. |
|
8250А |
Модернизированная 8250. Устранена некоторые ошибки, непригоден в АТ для скорости 9600 бит/с, несовместим с XT BIOS. |
|
8250B |
Исправлены ошибки 8050 и 8050А, совместим с XT BIOS. |
|
16450 |
Быстродействующая версия 8250 для AT. Не имеет ошибок, присущих 8250. |
|
16550 |
Развитие 16450. Имеет FIFO буфер, однако, с ошибками, не позволяющими корректно его использовать. Поддержка режима прямого доступа в память DMA. |
|
16550А |
Исправленная версия 16550, имеет корректно работающий 16-ти байтный FIFO буфер и DMA, которые должны применяться для работы на скоростях 9600 бит/сек и более. |
Асинхронный адаптер ПК обычно содержит несколько портов, через которые можно подключать внешние устройства. Каждому порту соответствует несколько регистров, через которые программа получает к нему доступ.
В зависимости от версии, BIOS инициализирует первые два или четыре порта коммуникации. Каждому порту отводится по одной микросхеме UART. Базовый адрес – это двухбайтовый адрес порта, который является младшим из группы адресов портов, дающих доступ к UART. Базовые адреса портов хранятся в ячейках, начиная с адреса 0040:0000h. При выполнении BIOS начальной загрузки каждому порту присваивается логическое имя COM1÷COM4.
Базовый адрес порта определяется путем чтения переменных BIOS, адреса которых приведены в табл. 105. Перед работой с портом рекомендуется определить его адрес путем чтения переменной BIOS, а не использовать стандартное значение.
Табл. 105. Адреса переменных BIOS для COM портов.
|
Имя порта |
Адрес BIOS |
Диапазон адресов |
Описание |
|
COM1 |
0040:0000h |
3F8…3FFh |
Базовый адрес порта COM1 3F8h. Если переменная равна 0, то порт не найден. |
|
COM2 |
0040:0002h |
2F8…2FFh |
– |
|
COM3 |
0040:0004h |
3E8…3EFh |
– |
|
COM4 |
0040:0006h |
2E8…2EFh |
– |
Порту соответствует также определенная линия прерывания IRQ для уведомления об изменении его состояния. Архитектура IBM PC обеспечивает управление прерываниями для двух последовательных портов COM1 (IRQ4, соответствует INT 0Ch) и COM2 (IRQ3 соответствует INT 0Bh), и оставляет место в таблице прерываний еще для COM3 и COM4.
Микросхема 8250 содержит 11 программируемых однобайтовых регистров, с помощью которых управляется и контролируется последовательный порт. Адреса регистров, соответствующих каждому порту, вычисляются путем добавления смещений к базовому адресу.