За машинный цикл последовательный порт передает один бит информации. В режимах 1, 2 и 3 скорость приема/передачи зависит от значения управляющего бита SMOD в регистре специальных функций PCON.
Таблица 5- Функции управления мощностью PCON
Символ |
Позиция |
Наименование и функция |
SMOD |
PCON.7 |
Удвоенная скорость передачи. Если бит |
|
|
установлен в 1, то скорость передачи вдвое |
|
|
больше, чем при SMOD = 0. По сбросу SMOD = 0. |
|
PCON.6 |
Не используется |
|
PCON.5 |
Не используется |
|
PCON.4 |
е используется |
GF1 |
PCON.3 |
Флаги, специфицируемые пользователем |
GF0 |
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 для тактирования последовательного порта прерывания от этого таймера должны быть запрещены. Таймер может быть использован как в режиме шестнадцатиразрядного таймера, так и в режиме таймера с автозагрузкой. Обычно используется режим таймера с автозагрузкой (старшая тетрада регистра TMOD = 0010В). При этом скорость передачи последовательного порта определяется выражением:
27
f = 2SMODfРЕЗ/(32х12х(256 -ТН1)).
Предельно низких скоростей приема и передачи по последовательному порту можно достичь при использовании таймера в режиме 1 (старший полубайт TMOD = 0001В). Перезагрузка 16-битного таймера должна осуществляться программным путем. При этом для того, чтобы можно было независимо от передачи выполнять дополнительные задачи, необходимо использовать механизм обработки прерываний и для этого разрешить прерывания от таймера 1.
Таблица 6 - Настройка таймера 1 для управления скоростью работы последовательного порта.
|
Частота |
|
Часто |
|
Таймер/счетчик 1 |
|
|||
приема/переда |
та |
|
SMO |
|
С/ |
Режи |
Перезагружаем |
||
чи |
(BAUD |
резонатора |
D |
|
Т |
|
м (MODE) |
ое число |
|
RATE) |
|
МГц |
|
|
|
|
|
|
|
|
Режим 0, |
12 |
|
X |
|
X |
X |
X |
|
макс: 1 МГц |
|
|
|
|
|
|
|
|
|
|
Режим 2, |
12 |
|
1 |
|
X |
X |
X |
|
макс: 375 КГц |
|
|
|
|
|
|
|
||
|
Режим |
1, |
12 |
|
1 |
|
0 |
2 |
0FFH |
3: 62,2 Кгц |
|
|
|
|
|
|
|
|
|
|
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ЕЕВН |
Для старших моделей семейства MCS-51 при использовании для синхронизации последовательного порта таймеров 1 и 2 скорости приема и передачи информации по последовательному порту могут различаться.
28
Устройство таймеров микропроцессоров MCS-51
В базовых моделях семейства имеются два программируемых 16-битных таймера/счетчика (T/C0 и T/C1), которые могут быть использованы как в качестве таймеров, так и в качестве счетчиков внешних событий. Каждый из них состоит из двух 8-битных регистров TH0 (старший байт) и TH0 (младший байт) для таймера 0 или TH1 (старший байт) и TH1 (младший байт) для таймера
1.
Врежиме таймера содержимое соответствующего таймера/счетчика инкрементируется в каждом машинном цикле, т.е. через каждые 12 периодов колебаний кварцевого резонатора.
Врежиме счетчика содержимое соответствующего таймера/счетчика инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого на вывод микроконтроллера T0 или T1. Так как на распознавание периода требуются два машинных цикла, максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. На длительность периода входных сигналов ограничений сверху нет. Для гарантированного прочтения входной сигнал должен удерживать значение 1, как минимум, в
течение одного машинного цикла микро-ЭВМ.
Схемы управления таймерами идентичны. Таймер 0 и Таймер 1 могут
работать в четырех режимах работы:
режим 0: 13-битный таймер;
режим 1: 16-битный таймер;
режим 2: 8-битный автоперезагружаемый таймер;
режим 3: Таймер 0 как 2 раздельных 8-битных таймера.
Кроме того, Таймер 1 можно использовать для задания скорости передачи
(baud rate) последовательного порта.
Для переключения режимов работы таймеров используются биты M0 и M1 регистра специальной функции TMOD. Название образовано от сокращения
29
двух английских слов: T(timer)- таймер и mode - режим. Имена и расположение битов приведено на рисунке 9:
Рисунок 9 - Формат регистра управления режимами работы таймеров
TMOD.
Таблица 7- Назначение битов таймеров
Символ |
Позиция |
|
|
|
|
Имя и назначение |
|
||
|
бита |
|
|
|
|
|
|
|
|
GATE |
TMOD.7 |
Управление блокировкой таймера от ножки |
|||||||
|
для таймера 1 и |
INTx. Если бит установлен в 1, то таймер/счетчик |
|||||||
|
TMOD.3 |
для |
"x" разрешен до тех пор, пока на входе "lNTx" |
||||||
|
таймера 0 |
|
высокий уровень и бит управления "TRx" |
||||||
|
|
|
установлен. Если бит сброшен в 0, то Т/С |
||||||
|
|
|
разрешается, как только бит управления "TRx" |
||||||
|
|
|
устанавливается в 1. |
|
|
||||
С/Т |
TMOD.6 |
Бит выбора режима таймера или счетчика |
|||||||
|
для таймера 1 |
исобытий. Если |
|
бит сброшен в 0, то таймер |
|||||
|
TMOD.2 |
дляработает от |
|
внутреннего |
генератора, |
если |
|||
|
таймера 0 |
|
установлен в 1, то работает от внешних сигналов |
||||||
|
|
|
на входе "Tx" |
|
|
|
|
|
|
M1 |
TMOD.5 |
Выбор режима работы таймера |
|
||||||
|
для таймера 1 и |
M1 |
|
M0 |
|
|
|
||
|
TMOD.1 |
для |
0 |
|
0 |
|
13 битный таймер/счетчик |
||
|
таймера 0 |
|
|
|
|
|
"TLx" работает как 5-битный |
||
M0 |
TMOD.4 |
|
|
|
|
предварительный делитель |
|
||
|
для Т/С1 и |
0 |
|
1 |
|
16 |
битный |
||
|
TMOD.0 |
для |
|
|
|
|
таймер/счетчик. "THx" и "TLx" |
||
|
Т/С0 |
|
|
|
|
|
включены последовательно |
|
|
|
|
|
1 |
|
0 |
|
8-битный |
|
|
|
|
|
|
|
|
|
автоперезагружаемый |
|
|
|
|
|
|
|
|
|
таймер/счетчик. "THx" хранит |
||
|
|
|
|
|
|
|
значение, которое должно быть |
||
|
|
|
|
|
|
|
перезагружено в "TLx" каждый |
||
|
|
|
|
|
|
|
раз по переполнению |
|
|
|
|
|
1 |
|
1 |
|
Таймер/счетчик |
1 |
|
|
|
|
|
|
|
|
останавливается. |
|
|
|
|
|
|
|
|
|
|
|
|
30
Символ |
Позиция |
|
|
Имя и назначение |
||
|
бита |
|
|
|
|
|
|
|
|
|
Таймер/счетчик 0: TL0 работает |
||
|
|
|
|
как 8-битный таймер/счетчик, и |
||
|
|
|
|
его |
режим |
определяется |
|
|
|
|
управляющими битами таймера |
||
|
|
|
|
0. TH0 работает только как 8 |
||
|
|
|
|
битный таймер, и его режим |
||
|
|
|
|
определяется |
управляющими |
|
|
|
|
|
битами таймера 1 |
||
Режим 0. В нулевом режиме таймер работает как 13-битный суммирующий счётчик. Этот счётчик состоит из 8 бит регистра ТНх и младших
5 бит регистра TLx, где x в обозначении регистра заменяется на 0 или 1 в
зависимости от того таймера, которым мы управляем. Старшие 3 бита регистров TLx не определены и игнорируются. Установка запускающего таймер флага TR0 или TR1 не очищает эти регистры. Работе таймера 0 или таймера 1 в режиме 0 соответствует схема:
Рисунок 10 - Схема таймеров 0 или 1 в режиме 0.
Этот режим был введён для совместимости с устаревшим семейством микроконтроллеров MCS-48 для облегчения переноса уже разработанных программ на новые процессоры и поэтому в настоящее время не используется.
Когда содержимое счетчика изменяется из состояния все "1" в состояние все "0" , то устанавливается (принимает значение "1") флаг прерывания таймера
TF0 или TF1.
Обычно пользователя интересует не максимальный интервал времени, а
свой конкретный интервал времени. Для уменьшения интервала времени в регистры таймера можно предварительно занести число и тем самым сформировать произвольный интервал времени.
31