- •Системное программирование
- •Контрольные вопросы
- •2. Программная модель микропроцессора 8086
- •2.1. Представление информации
- •2.2. Регистры микропроцессора
- •2.3. Формат машинной команды
- •2.4. Способы задания операндов команды
- •Контрольные вопросы
- •3. Основные понятия языка ассемблера
- •3.1. Предложения
- •3.2. Директивы определения данных
- •3.3. Выражения
- •Контрольные вопросы
- •4. Сегментированная модель памяти
- •4.1. Сегментирование адресов
- •4.2. Директивы сегментации
- •4.3. Общая структура программы
- •4.4. Модели памяти
- •Контрольные вопросы
- •5. Основные группы команд
- •5.1. Соглашению по описанию команд
- •5.2. Команды пересылки данных
- •5.3. Арифметические команды
- •5.4. Логические команды
- •5.5. Команды переходов
- •5.6. Команды организации циклов
- •5.7. Команды обработки строк
- •5.8. Стековые команды
- •5.9. Команды ввода-вывода
- •5.10. Команды прерываний
- •5.11. Команды управления микропроцессором
- •Контрольные вопросы
- •6. Подпрограммы
- •Контрольные вопросы
- •7. Разработка одномодульной программы
- •7.1. Трансляция и компоновка программы
- •7.2. Отладка программы
- •Контрольные вопросы
- •8. Разработка многомодульных программ
- •8.1. Принципы разработки модулей
- •8.2. Расширенное применение директивы сегментации
- •9. Упражнения
- •Контрольные вопросы
- •Программирование микропроцессорных устройств
- •10. Программирование системного таймера
- •10.1. Описание таймера-счетчика 8254
- •10.2. Режимы работы таймера
- •10.3. Структура регистров таймера
- •10.4. Упражнения
- •Контрольные вопросы
- •11. Программирование контроллера прерываний
- •11.1. Механизм обработки прерываний
- •11.2. Типы прерываний
- •11.3. Приоритеты прерываний
- •11.4. Контроллер прерываний 8259
- •11.5. Идентификация прерываний
- •11.6. Прерывания bios и ms-dos
- •11.7. Упражнения
- •Контрольные вопросы
- •12. Программирование параллельного порта
- •12.1. Интерфейс Centronics
- •12.2. Работа с параллельным портом на низком уровне
- •12.3. Стандартные средства работы с параллельным портом
- •12.4. Упражнения
- •Контрольные вопросы
- •13. Программирование последовательного порта
- •13.1. Основы последовательной передачи данных
- •13.2. Последовательный интерфейс rs-232c
- •13.3. Универсальный асинхронный приемо-передатчик 8250
- •13.4. Порты асинхронного адаптера
- •13.5. Стандартные средства программирования последовательного порта
- •13.6. Упражнения
- •Контрольные вопросы
- •Литература
- •141 Кафедра Вычислительной Техники и Программирования Московского Государственного Открытого Университета
13.3. Универсальный асинхронный приемо-передатчик 8250
Для организации последовательной передачи данных в асинхронном режиме разработаны специальные микросхемы 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 бит/сек и более. |