Микропроцессоры и микроконтроллеры

 
 
 
«Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.»
Rick Cook
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы программирования MSC-51 :: Описание режимов работы УАПП

Описание режимов работы УАПП

Режим 0 - синхронизированный от МК ввод-вывод байта. В этом режиме вывод RxD применяется как для приема, так и для передачи информации. Через вывод TxD выдаются синхроимпульсы сдвига, которые сопровождают каждый бит (импульсы с активным уровнем "0"). Информация выдается младшими битами вперед.

Частота (скорость) передачи зависит от тактовой частоты резонатора :

на один бит.

Передача данных инициируется любой командой, которая записывает байт данных в SBUF, например, MOV SBUF,A. После этого байт информации автоматически переписывается в сдвигающий регистр передачи, а схема управления генерирует синхроимпульсы сдвига, которые поступают на сдвигающий регистр передачи и на вывод TxD. При этом содержимое регистра передачи сдвигается вправо и очередной бит информации поступает на вывод RxD. В разряды, которые освобождаются, записываются нули. Таким образом, передаваемый байт данных превращается в последовательный код схемами УАПП и синхронно с этим может превращаться в параллельный код внешним сдвигающим регистром. При завершении передачи схема управления устанавливает флаг TI (SCON.1). Общий цикл передачи составляет десять машинных циклов.

Прием данных начинается при установке REN=1, если был снят запрос на прерывание, сформированный на предшествующем цикле приема (то есть RI=0). После программной установки бита REN блок управления включает схему формирования синхроимпульсов сдвига, которые поступают синхронно на сдвигающий регистр приема и на вывод TxD.

В сдвигающем регистре приема начинает формироваться байт данных, значения бит которого считываются с входа RxD в фазе S5P2 любого МЦ. В начале десятого МЦ содержимое сдвигающего регистра переписывается в SBUF и устанавливается флаг запроса прерывание RI (SCON.0).

В данном режиме к выводам RxD и TxD МК51 могут быть подключены внешние сдвигающие регистры, которые будут формировать параллельный код при выдаче информации из МК, или будут превращать параллельный код в последовательный при приеме данных в МК. Таким образом, разработчики контроллера на основе МК51 получают в распоряжение "медленный" параллельный порт.

Подобная логика преобразования информации характерна также для режимов 1, 2 и 3, но вывод TxD используется только для передачи данных, а вывод RxD - только для приема.

Режим 1 - в этом режиме передаются через TxD или принимаются с RxD десять битов информации: старт-бит("0"), 8 бит данных и стоп-бит("1"). Структура кодовой посылки показана на схеме (рис.15.3):

Скорость приема-передачи изменяется программным путем и зависит от значения бита управления PCON.7 (SMOD), и от частоты переполнения таймера 1, которая обозначенна FOVT1:

Прерывание от таймера 1 в этом случае должно быть заблокировано. Сам Т/С1 может работать в любой из конфигураций 0,1,2. Однако самой удобной является конфигурация 2 – автоперезагрузка стартового числа (TMOD(7-4) = 0010B). При этом частота передачи:

Передача инициируется любой командой, в которой адрес назначения указан как SBUF (например, MOV SBUF,A).

Прием начинается после программной установки бита REN в "1" при обнаружении перехода сигнала на RxD из "1" в "0" (старт-бит). МК51 автоматически выполняет настройку внутреннего счетчика соответственно с границами периодов битов, которые принимаются. В каждом периоде представления бита вход RxD опрашивается трижды, и значение бита, который принимается, определяется по правилу мажоритирования - "два из трех". При приеме данных значение стоп-бита ("1") фиксируется в бите RB8 регистра SCON, и используется для автоматического контроля завершения приема.

Режим 2 - в этом режиме передаются через TxD или принимаются через RxD 11 битов информации: старт-бит("0"), 8 бит данных, программно задаваемый бит контроля (так называемый "девятый" бит) и стоп-бит("1"). Структура кодовой посылки показана на схеме (рис.15.4):

При передаче "девятый" бит может использоваться, например, для контроля чётности количества "1" в байте данных, который передается, то есть для проверки достоверности полученной информации. При приеме "девятый" бит поступает в разряд RB8 регистра SCON, а стоп-бит игнорируется.

Частота передачи зависит от бита SMOD и тактовой частоты МК:

Режим 3 отличается от режима 2 только возможностью программного изменения скорости приема-передачи в широком диапазоне в зависимости от частоты переполнения таймера 1, так же, как в режиме 1.

Условие нормального завершения приема:

- режим 1 - в последнем такте сдвига должно выполняться условие (стоп-бит)=1 при установлении SM2=1;

- режимы 2,3 - ("девятый" бит)=1 при установлении SM2=1.

В случае, если установлен SM2=0, стоп-бит (для режима 1) или "девятый" бит (для режимов 2,3) фиксируется в разряде RB8.

Кроме того, для любого режима к моменту завершения приема очередной кодовой посылки программным путем должно быть выполнено RI = 0.

При невыполнении указанных условий принятая информация теряется.

Таким образом, установка SM2=1 позволяет игнорировать кодовую посылку, в которой "девятый" бит равняется "0", то есть проводить селекцию информации. Это используют при построении протоколов обмена информацией в микроконтроллерной сети.

Важно отметить, что реализация стандартных скоростей передачи, в частности, для связи с последовательным портом ПЭВМ, не может быть достигнута на типовой тактовой частоте МК51, равной 12 МГц. Так, наиболее популярные скорости передачи 9600 бит/сек и 19200 бит/сек точно реализуются при тактовой частоте МК51, равной 11,0592 МГц, стартовом числе для таймера Т1, равном 253 и значении бита SMOD, равном 0 или 1 соответственно для указанных скоростей. Приведенное значение тактовой частоты МК51 может быть обеспечено путем подключения к МК51 соответствующего кварцевого резонатора.