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

 
 
 
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Русский | Українська



На правах рекламы:



Rambler's Top100 Рейтинг@Mail.ru
Микропроцессоры и микроконтроллеры :: Принципы программирования 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 соответствующего кварцевого резонатора.