Последовательный порт
Через универсальный асинхронный приёмопередатчик UART (Universal Asynchronous Receiver-Transmitter) происходит передача информации, представленной последовательным кодом (младшими битами вперед), в полном дуплексном режиме обмена. В состав UART, называемого часто последовательным портом, входят принимающий и передающий сдвигающие регистры, а также специальный буферный регистр (SBUF) приёмопередатчика.
Регистр SBUF. Представляет собой два независимых регистра: буфер приёмника и буфер передатчика. Загрузка байта в SBUF немедленно вызывает начало процесса передачи через последовательный порт. Когда байт считывается из SBUF, это значит, что его источником является приёмник последовательного порта. Запись байта в буфер приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Наличие буферного регистра приёмника позволяет совмещать операцию чтения ранее принятого байта с приёмом очередного байта. Если к моменту окончания приёма байта предыдущий байт не был считан, то он будет потерян.
Регистр SCON. Регистр предназначен для управления режимом работы UART. Регистр содержит управляющие биты и девятый бит принимаемых или передаваемых данных RB8 и TB8, а также биты прерывания приёмопередатчика RI и TI. Функциональное назначение битов указано в таблице 7.
Таблица 7 - Регистр управления/статуса SCON
Символ | Разряд | Имя и назначение |
SM0 | SCON.7 | Биты управления режимом работы UART. Устанавливаются/сбрасываются программно (см. ниже) |
SM1 | SCON.6 | |
SM2 | SCON.5 | Бит управления режимом UART. Устанавливается программно для запрета приёма сообщения, в котором девятый бит равен 0 |
REN | SCON.4 | Бит разрешения приёма. Устанавливается/сбрасывается программно для разрешения/запрета приёма последовательных данных. |
TB8 | SCON.3 | Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режиме UART 9 бит |
RB8 | SCON.2 | Приём бита 8. Устанавливается/сбрасывается аппаратно для фиксации девятого принимаемого бита в режиме UART -9 бит |
TI | SCON.1 | Флаг прерывания передатчика. Устанавливается аппаратно при окончании передачи байта. Сбрасывается программно после обслуживания прерывания |
RI | SCON.0 | Флаг прерывания приёмника. Устанавливается аппаратно при приёме байта. Сбрасывается программно после обслуживания прерывания |
SM0 | SM1 | Режим работы UART |
Сдвигающий регистр расширения ввода/вывода | ||
UART - 8 бит. Изменяемая скорость передачи | ||
UART - 9 бит. Фиксированная скорость передачи | ||
UART - 9 бит. Изменяемая скорость передачи |
Прикладная программа путём загрузки в два старших разряда SCON определяет режим работы UART. Последовательный порт может работать в четырех различных режимах.
Режим 0 -восемь бит данных передаются и принимаются через вход приёмника RхD. Выход передатчика TхD используется для выдачи импульсов синхронизации, которые сопровождают каждый бит. За один машинный цикл передаётся один бит. Частота передачи равна FРЕЗ/12.
Режим 1 -передаются или принимаются 10 бит данных в формате:
старт-бит=0, 8 бит данных, стоп-бит=1
Скорость приёма/передачи задаётся таймером.
Режим 2 -передаются или принимаются 11 бит данных в формате:
старт-бит=0, 8 бит данных, программируемый девятый бит В8, стоп-бит=1
Девятый бит может использоваться для повышения достоверности путём контроля чётности, в него можно записать значение признака паритета из PSW. Частота приёма/передачи выбирается программно и может быть равна FРЕЗ/32 или FРЕЗ/64 частоты резонатора в зависимости от состояния бита SMOD в регистре PCON.
Режим 3 -совпадает с режимом 2, но частота приёма/передачи задаётся таймером.
Во всех режимах передача инициируется любой командой, где SBUF указан как получатель байта. Приём в UART в режиме 0 происходит при условии RI=0 и REN=1. В режимах 1-3 приём начинается с приходом старт-бита, если REN=1.
В TB8 программно устанавливается значение девятого бита данных, который будет передан в режиме 2 или 3. В RB8 фиксируется в режимах 2 и 3 девятый принимаемый бит данных. В режиме 1, если SM2=0, в бит RB8 заносится стоп-бит. В режиме 0 RB8 не используется.
Флаг прерывания передатчика TI устанавливается аппаратно в конце периода передачи восьмого бита данных в режиме 0 и в начале периода передачи стоп-бита в режимах 1-3. Подпрограмма обслуживания этого прерывания должна сбрасывать бит TI.
Флаг прерывания приёмника RI устанавливается аппаратно в конце периода приёма восьмого бита данных в режиме 0 и в середине периода приёма стол-бита в режимах 1-3. Подпрограмма обслуживания прерывания должна сбрасывать бит RI.
Работа UART в мультиконтроллерных системах. В системах децентрализованного управления, которые используются для управления и регулирования в типологически распределенных объектах, возникает задача обмена информацией между множеством микроконтроллеров, объединенных в локальную вычислительно-управляющую сеть. Как правило, локальные сети на основе Intel 51 имеют магистральную архитектуру с разделяемым моноканалом (коаксиальный кабель, витая пара, оптическое волокно), по которому осуществляется обмен информацией между контроллерами.
Бит SM2 в SCON позволяет простыми средствами реализовать межконтроллерный обмен. Механизм обмена построен на том, что в режимах 2 и 3 программируемый девятый бит данных при приёме фиксируется в бите RB8. UART может быть запрограммирован таким образом, что при получении стоп-бита прерывание от приёмника будет возможно только при условии RB8=1. Ведущий контроллер всем ведомым передаёт широковещательное сообщение с байтом-идентификатором абонента, которое отличается от байтов данных только тем, что в его девятом бите содержится 1. Ведомые по этому признаку вызывают подпрограммы сравнения байта-идентификатора с кодом собственного сетевого адреса. Адресуемый контроллер сбрасывает свой SM2 и готовится к приёму блока данных. Остальные ведомые микроконтроллеры оставляют неизменными свои SM2=1 и передают управление основной программе. При SM2=1 информационные байты в сети прерывания не вызывают.
В режиме 1 автономного микроконтроллера SM2 используется для контроля истинности стоп-бита. В режиме 0 SM2 не используется и должен быть сброшен.
Скорость приёма/передачи. Скорость зависит от режима работы UART. В режиме 0 частота зависит только от резонатора: f0=fрез/12. За один машинный цикл передаётся один бит.
В режимах 1-3 скорость зависит от значения управляющего бита SMOD в регистре специальных функций PCON (таблица 8).
В режиме 2 частота передачи f2=(2SMOD/64)fрез.
В режимах 1 и 3 в формировании частоты передачи кроме управляющего бита SMOD принимает участие таймер 1. При этом частота передачи зависит от частоты переполнения (OVT1) и определяется следующим образом: f1,3=(2SMOD/32)fOVT1. Прерывание от таймера 1 в этом случае должно быть заблокировано. Сам T/C1 может работать и как таймер, и как счётчик событий в любом из трёх режимов. Однако наиболее удобно использовать режим таймера с автоперезагрузкой (старшая тетрада TMOD=0010В). При этом частота передачи определяется выражением
f1,3=(2SMOD/32)(fрез/12)(256-(TH1)).
Таблица 8 - Регистр управления мощностью PCON
Символ | Разряд | Наименование и функция |
SMOD | PCON.7 | Удвоенная скорость передачи. Если бит установлен в 1, то скорость передачи вдвое больше, чем при SMOD=0 |
- | PCON.6-4 | Не используются |
GF1 | PCON.3 | Флаги, специфицируемые пользователем (флаги общего назначения) |
GF0 | PCON.2 | |
PD | PCON.1 | Бит пониженной мощности. При установке в 1 микроконтроллер переходит в режим пониженного энергопотребления |
IDL | PCON.0 | Бит холостого хода. Если бит установлен в 1, то микроконтроллер переходит в режим холостого хода |
Примечание. При одновременной записи 1 в PD и IDL бит PD имеет преимущество. Сброс PCON выполняется путем загрузки в него кода 0XXX0000.
Дата добавления: 2015-05-21; просмотров: 1043;