![]() ![]() ![]() ![]() |
|
|
![]() |
Через универсальный асинхронный приемопередатчик осуществляются прием и передача информации, представленной последовательным кодом (младшими битами вперед), в полном дуплексном режиме обмена. В состав приемопередатчика, называемого часто последовательным портом входят принимающий и передающий сдвигающие регистры, а также специальный буферный регистр (SBUF) приемопередатчика.
Кроме того, работой последовательного порта управляют два служебных регистра -
Запись байта в буфер приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с приемом очередного. Но если к моменту окончания приема байта предыдущий не был считан из SBUF, то он будет потерян.
Последовательный порт 8051 может работать в четырех различных режимах.
Во всех случаях передача инициализируется инструкцией, в которой данные перемещаются в SBUF. Прием инициализируется при обнаружении перепада из 1 в 0 на входе приемника. При этом в режиме 0 этот переход должен сопровождаться выполнением условий R1 = 0 и REN= 1 (см. табл. 8), а для остальных режимов - REN = 1.
Управление режимом работы приемопередатчика осуществляется через специальный регистр с символическим именем SCON. Этот регистр содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых данных (RB8 и ТВ8) и биты прерывания приемопередатчика (R1 и Т1).
Функциональное назначение бит регистра управления/статуса приемопередатчика SCON.
Символ | Позиция | Имя и назначение | |||||||||||||||
SM0 | SCON.7 | Биты управления режимом работы приемопередатчика. Устанавливаются/сбрасываются программно см. примечание 1
| |||||||||||||||
SM1 | SCON.6 | ||||||||||||||||
SM2 | SCON.5 | Бит управления режимом приемопередатчика. Устанавливается программно для запрета приема сообщения, в котором девятьй бит имеет значение 0 | |||||||||||||||
REN | SCON.4 | Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных | |||||||||||||||
TB8 | SCON. 3 | Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режиме 9-битового передатчика | |||||||||||||||
RB8 | SCON.2 | Прием бита 8. Устанавливается/сбрасывается аппаратно для фиксации девятого принимаемого бита в режиме 9-битового приемника | |||||||||||||||
TI | SCON. 1 | Флаг прерывания передатчика. Устанавливается аппаратно при окончании передачи байта. Сбрасывается программно после обслуживания прерывания | |||||||||||||||
RI | SCON.0 | Флаг прерывания приемника. Устанавливается аппаратно при приеме байта. Сбрасывается программно после обслуживания прерывания |
Прикладная программа путем загрузки в старшие биты регистра SCON двухбитного кода определяет режим работы приемопередатчика. Во всех четырех режимах работы передача инициализируется любой командой, в которой буферный регистр SBUF указан как получатель байта. Как уже отмечалось, прием в режиме 0 осуществляется при условии, что R1 = 0 и REN = 1, в остальных режимах - при условии, что REN = 1.
В бите ТВ8 программно устанавливается значение девятого бита данных, который будет передан 8 режиме 2 или 3. В бите RB8 в этих режимах фиксируется девятый принимаемый бит данных. В режиме 1 в бит RB8 заносится стоп-бит. В режиме 0 бит RB8 не используется.
Флаг прерывания передатчика ТI устанавливается аппаратно в конце периода передачи стоп-бита во всех режимах. Соответствующая подпрограмма обслуживания прерывания должна сбрасывать бит TL.
Флаг прерывания приемника RI устанавливается аппаратно в конце периода приема восьмого бита данных в режиме 0 и в середине периода приема стоп-бита в режимах 1, 2 и 3. Подпрограмма обслуживания прерывания должна сбрасывать бит RI.
Скорость приема/передачи, т.е. частота работы приемопередатчика в различных режимах, определяется различными способами.
В режиме 0 частота передачи зависит только от резонансной частоты кварцевого резонатора f РЕЗ:
f=fРЕЗ/12.
За машинный цикл последовательный порт передает один бит информации. В режимах 1, 2 и 3 скорость приема/передачи зависит от значения управляющего бита SMOD в регистре специальных функций PCON.
Регистр управления мощностью PCON
Символ | Позиция | Наименование и функция |
SMOD | PCON.7 | Удвоенная скорость передачи. Если бит установлен в 1, то скорость передачи вдвое больше, чем при SMOD = 0. По сбросу SMOD = 0. |
PCON.6 | Не используется | |
PCON.5 | Не используется | |
PCON.4 | е используется | |
GF1 GF0 | PCON.3 PCON.2 | Флаги, специфицируемые пользователем (флаги общего назначения) |
PD | PCON.1 | Бит пониженной мощности. При установке бита в 1 микро-ЭВМ переходит в режим пониженной потребляемой мощности |
IDL | PCON.0 | Бит холостого хода. Если бит установлен в 1, то микро-ЭВМ переходит в режим холостого хода |
Примечание. При одновременной записи 1 в PD и IDL бит PD имеет преимущество. Сброс содержимого PCON выполняется путем загрузки в него кода 0XXX0000.
В режиме 2 частота передачи определяется выражением
f =2SMODfРЕЗ/64.
Иными словами, при SMOD = 0 частота передачи равна 1/64 частоты fРЕЗ, а пои SMOD = 1 ? 1/32 частоты fРЕЗ.
В режимах 1 и 3 в формировании частоты передачи, кроме управляющего бита SMOD, принимает участие таймер 1. При этом частота передачи f зависит от частоты переполнения f OVLTи определяется следующим образом:
f=2SMODfOVTL1/32
Прерывание от таймера 1 в этом случае должно быть заблокировано. Сам же таймер может работать как в режиме таймера, так и в режиме счетчика. Номер режима (0, 1, 2) роли не играет. Наиболее типично использование его в режиме таймера с автоперезагрузкой (старшая татрада TMOD = 0010В). При этом частота передачи определяется выражением:
f = 2SMODfРЕЗ/(32х12х(256 -ТН1)).
Настройка таймера 1 для управления частотой работы приемопередатчика
Частота приема/передачи (BAUD RATE) | Частота резонатора МГц | Таймер/счетчик 1 | |||
SMOD | С/Т | Режим (MODE) | Перезагружаемое число | ||
Режим 0, макс: 1 МГц | 12 | X | X | X | X |
Режим 2, макс: 375 Кгц | 12 | 1 | X | X | X |
Режим 1, 3: 62,2 Кгц | 12 | 1 | 0 | 2 | 0FFH |
19,2 Кгц | 11,059 | 1 | 0 | 2 | 0FDH |
9,6 Кгц | 11,059 | 0 | 0 | 2 | 0FDH |
4,8 Кгц | 11,059 | 0 | 0 | 2 | 0FAH |
2,4 Кгц | 11,059 | 0 | 0 | 2 | 0F4H |
1,2 Кгц | 11,059 | 0 | 0 | 2 | 0F4H |
137,5 Гц | 11,059 | 0 | 0 | 2 | 1DH |
110 Гц | 6 | 0 | 0 | 2 | 72H |
110 Гц | 12 | 0 | 0 | 1 | 0FЕЕВН |
Отметим, что скорости приема и передачи могут различаться.
Предельно низких частот приемопередачи можно достичь при использовании таймера в режиме 1 (16-битный таймер) и разрешении прерываний от таймера (старший полубайт TMOD = 0001В). Перезагрузка 16-битного таймера должна осуществляться программным путем.