Интерфейсы периферийных устройств. Ключев А.О - 234 стр.

UptoLike

233
Б.3 Лабораторная работа 3
«Последовательный интерфейс RS-232. UART»
Б.3.1 Задание
Разработать и написать драйверы последовательного канала для учебно-
лабораторного стенда SDK-1.1 с использованием и без использования
прерываний. Написать тестовую программу для разработанных драйверов,
которая выполняет определенную вариантом задачу.
Б.3.2 Особенности последовательного интерфейса в микроконтроллере с
ядром MCS-51
Последовательный порт в микроконтроллерах MCS-51 позволяет
осуществлять последовательный дуплексный ввод-вывод в синхронном и
асинхронном режимах с разными скоростями обмена. Помимо обычного ввода-
вывода, в нем предусмотрена аппаратная поддержка взаимодействия
нескольких микроконтроллеров.
Схематически контроллер последовательного порта представлен на рис.
130. Как видно из рисунка, регистр SBUF, доступный пользователю для чтения
и записи, есть на самом деле два регистра, в один из которых можно только
записывать, а
из другогочитать. Контроллер позволяет дуплексный обмен
данными, т.е. одновременно может передавать и принимать информацию по
линиям TxD (P3.1) и RxD (P3.0) соответственно.
SBUF
SBUF
TI
RI
Сдвиговый регистр
Сдвиговый регистр
SIO
TxD
RxD
Рис. 130. Схема контроллера UART МК ADuC812
Передача инициируется записью в SBUF байта данных. Этот байт
переписывается в сдвиговый регистр, из которого пересылается бит за битом.
Как только байт будет переслан целиком, устанавливается флаг TI,
сигнализирующий о том, что контроллер готов к передаче очередного байта.
Прием осуществляется в обратном порядке: после начала процесса приема
принятые биты данных последовательно сдвигаются в
сдвиговом регистре, пока
не будет принято их установленное количество, затем содержимое сдвигового
регистра переписывается в SBUF и устанавливается флаг RI. После этого
возможен прием следующей последовательности бит. Необходимо отметить,
что запись принятого байта из сдвигового регистра в SBUF происходит только
при условии, что RI=0, поэтому при заборе пользовательской программой
очередного байта из SBUF ей необходимо
сбрасывать этот флаг, иначе