Через универсальный последовательный порт микроконтроллера осуществляются прием и передача информации, представленной в последовательном коде (младшими битами вперед). Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с приемом очередного. Но если к моменту окончания приема байта предыдущий не был считан из SBUF, то он будет потерян. Работой последовательного порта управляют три регистра:

— регистр управления/статуса приемопередатчика SCON;

— регистр управления мощностью PCON, бит SMOD;

— буферный регистр приемопередатчика SBUF.

Последовательный порт может работать в четырех различных режимах:

— режим 0, синхронный;

— режим 1 асинхронный 8-битовый обмен;

— режим 2, асинхронный 9-битовый обмен с фиксированной скоростью передачи;

— режим 3, асинхронный 9-битовый режим.

Управление режимами работы приемопередатчика осуществляется через специальный регистр с символическим именем SCON. Он содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых данных (RB8 и ТВ8) и биты прерывания приемника/передатчика (R1 и T1). Формат регистра управления последовательным портом приведен на рис. 6.22.

Рис. 6.22.Формат регистра управления последовательным портом

Прикладная программа путем загрузки в старшие биты регистра SCON двухбитного кода задает режим работы приемопередатчика. Во всех четырех режимах передача инициализируется любой командой, в которой буферный регистр SBUF указан как получатель байта. Как уже отмечалось, прием в режиме 0 осуществляется при условии, что R1 = 0 и REN = 1, в остальных режимах — при условии, что REN = 1.

В бите ТВ8 программно устанавливается значение девятого бита данных, который будет передан в режиме 2 или 3 в составе 9-битового поля данных кадра передачи. В бите RB8 в этих режимах запоминается девятый принимаемый бит данных. В режиме 1 в бит RB8 заносится значение стоп-бита. В режиме 0 бит RB8 не используется.

Флаг прерывания передатчика T1 устанавливается аппаратно после передачи стоп-бита во всех режимах. Подпрограмма, обслуживающая прерывания или опрашивающая флаг, должна сбрасывать бит T1.

Флаг прерывания приемника R1 устанавливается аппаратно после приема восьмого бита данных в режиме 0 и в середине периода приема стоп-бита в режимах 1, 2 и 3. Подпрограмма обслуживания прерывания должна сбрасывать бит RI.

Скорость приема/передачи информации через последовательный порт

Скорость приема/передачи в различных режимах, задается различными способами.

В режиме 0 частота передачи зависит только от резонансной частоты кварцевого резонатора fрез:

f = fрез/12.

При этом за машинный цикл последовательный порт передает/передает/принимает один бит информации.

В режимах 1, 2 и 3 скорость приема/передачи зависит от значения управляющего бита SMOD в регистре специальных функций PCON. Формат регистра управления питанием, в котором расположен бит управления скорости передачи, приведен на рис. 6.23.

Рис. 6.23.Формат регистра управления питанием

В режиме 2 частота приема/передачи определяется выражением

f = (2SMOD x fрез)/64.

Иными словами, при SMOD = 0 частота передачи равна 1/64 частоты кварцевого резонатора/рез, а при SMOD = 1 частота передачи равна 1/32 частоты кварцевого резонатора/рез.

В режимах 1 и 3 в формировании частоты приема/передачи, кроме управляющего бита SMOD, принимает участие таймер 1. При этом частота приема/передачи f зависит от частоты переполнения таймера fovlT1 и определяется следующим образом:

f = (2SMOD x fovlT1)/32.

При использовании таймера 1 для тактирования последовательного порта прерывания от этого таймера должны быть запрещены. Таймер может быть использован как в режиме 16-разрядного таймера, так и в режиме таймера с автозагрузкой. Обычно используется режим таймера с автозагрузкой (старшая тетрада регистра TMOD = 0010В). При этом скорость передачи последовательного порта определяется выражением:

f = (2SMOD x fрез)/(32 x 12 x (256 — TH1)).

Предельно низких скоростей приема и передачи по последовательному порту можно достичь при использовании таймера в режиме 1 (старший полубайт TMOD = 0001В). Перезагрузка 16-битного таймера должна осуществляться программным путем. При этом для того, чтобы можно было, кроме приема/передачи, выполнять дополнительные задачи, необходимо использовать механизм обработки прерываний и для этого разрешить прерывания от таймера 1.

Отметим, что для старших моделей семейства MCS-51 при использовании для синхронизации последовательного порта таймеров 1 и 2 скорости приема и передачи информации по последовательному порту могут различаться.

Режим 0. Синхронный режим работы последовательного порта
Перейти на страницу:

Поиск

Похожие книги