
- •Глава 3. Однокристальные микроконтроллеры семейства mcs51
- •Микропроцессоры и микроконтроллеры
- •Микроконтроллеры семейства mcs51
- •А. Общие характеристики и назначение выводов
- •Б. Организация памятимикроконтроллера
- •В. Таймеры-счетчики мк
- •Г. Приемо-передатчик
- •Д. Системапрерываний микроконтроллера
- •Е. Системакоманд мк
- •3.3. Супервизорные схемы
В. Таймеры-счетчики мк
МК содержит два шестнадцати разрядных таймера-счетчика: нулевой Т/С0 и пер- вый Т/С1. Они предназначены для счета времени (машинных циклов) либо внешних им- пульсов через выводы Т0 и Т1 микроконтроллера и способны работать в различных ре- жимах параллельно с МК, не отвлекая его от выполнения предписанных инструкций.
В пространстве RSF с таймерами счетчиками связано шесть регистров специальных функций:
TMOD – регистр режимов работы таймеров-счетчиков (MODe);
TCON - регистр управления работой таймеров-счетчиков (CONtrol);
TL0 – младший байт нулевого таймера-счетчика;
TH0 – старший байт нулевого таймера-счетчика;
TL1 – младший байт первого таймера-счетчика;
TH1 – старший байт первого таймера-счетчика.
В соответствующих регистрахTL и TH и производится счет. Они инкрементируют- ся и реализуют предписанные таймеру-счетчику режимы работы. Доступны для чтения и записи из программы пользователя.
Назначение отдельных битов регистров TMOD и TCON приведено в табл. 3.10.
Таблица 3.10.
Бит № |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TMOD |
Gate1 |
C/T1` |
M1.1 |
M0.1 |
Gate0 |
C/T0` |
M1.0 |
M0.0 |
TCON |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
Регистр TMOD функционально разделяется на две одинаковые тетрады, относя- щиеся к первому и нулевому таймеру счетчику, поэтому опишем назначение только младших четырех бита.
Бит Gate0 – предназначен для управления таймером-счетчиком от вывода прерываний INT0 – для нулевого таймера-счетчика, INT1 – для первого таймера-счетчика) и позволяет запускать и останавливать Т/С.
Бит C/T0` - назначает счет или машинных циклов (1 машинный цикл – двенадцать тактов осциллятора) или внешних импульсов с вывода Т0 (Т1 для С/Т1). При установке в единицу считает циклы, в нуль – внешние импульсы.
Биты M0.0, М1.0 – устанавливают один из четырех режимов работы
(подробнее см. далее).
Старшие четыре бита аналогичны по функциям, но относятся к первому таймеру- счетчику.
В таблице 3.11. обобщено краткое описание битов регистра TMOD.
Таблица 3.11
Биты |
Обозна- чение |
Назначение битов |
Примечание | |||||
0-1 4-5 |
М0 – М1 |
Определяет один из 4-х режимов работы, отдельно для Т/С 1 и Т/С 0 |
Все биты устанав- ливаются про- граммно:
| |||||
|
М1 |
М0 |
Режим |
|
| |||
0 |
0 |
0 |
| |||||
0 |
1 |
1 |
| |||||
1 |
0 |
2 |
| |||||
1 |
1 |
3 |
| |||||
2,6 |
C/T0, C/T1 |
Определяют работу в качестве: С/Т0, С/Т1 = 0 - таймера С/Т0, С/Т1 = 1 - счетчика | ||||||
3, 7 |
GATE0, GATE1 |
Разрешает управлять таймером от вывода МК (INT0 - для Т/С0, INT1- для Т/С 1). GATE = 0 - управление запрещено GATE = 1 - управление разрешено |
Регистр TCON – управление Т/С.
Биты TF1, TF0 – 7-ой и 5-ый биты - флаги переполнения первого и нулевого таймерасчетчика. Устанавливаются в единицу аппаратно при переполнении. Могут вызывать прерывания, доступны для чтения.
Биты TR1, TR0 - 6-ой и 4-ый биты – разрешают управление счетом от вывода INT1
и INT0 для первого и нулевого таймера-счетчика соответственно.
Остальные четыре бита регистра TCON управляют внешними прерываниями и бу- дут подробно рассмотрены в соответствующем разделе.
В таблице 3.12. обобщено краткое описание битов регистра TCON.
Таблица 3.12
Биты |
Обозна- чение |
Назначение битов |
Примечание |
6 |
TR1 |
Биты включения - выключения |
Биты устанавливаются и сбра- |
4 |
TR0 |
Т/С, отдельно для Т/С 0 и Т/С 1. |
сываются программно. Доступ- |
TR=0 - выключен, |
ны по чтению. | ||
TR=1 - включен. | |||
7 |
ТF1 |
Флаги переполнения Т/С. |
Биты сбрасываются и устанав- |
5 |
ТF0 |
ливаются аппаратно и про- | |
граммно. Доступны по чтению. | |||
2 |
IT1 |
Биты, определяющие вид преры- |
Биты устанавливаются и сбра- |
0 |
IT0 |
вания по входам INT0, INT1: |
сываются программно. Доступ- |
IТ=0 - прерывание по уровню |
ны по чтению. | ||
(низкому) | |||
IТ=1 - прерывание по спаду | |||
(переход из "1" в "0") . | |||
3 |
IE1 |
Флаги запроса внешних прерыва- |
Биты сбрасываются и устанав- |
1 |
IE0 |
ний по входам INT0, INT1 |
ливаются аппаратно и про- |
граммно. Доступны по чтению. |
Режимы работы таймеров-счетчиков устанавливаются битами М0 и М1 регист- ра TMOD и пояснены далее функциональными схемами, на которых прямоугольной рам- кой обозначен какой-либо аппаратный ресурс (устройство) микроконтроллера, рамкой со
скругленными краями – бит какого либо управляющего регистра. Я думаю, по очертаниям Вы узнаете на этих схемах и внешниевыводыМК. Всеговозможночетыре режима, от ну- ля до трех. Нулевой, первый и второй режимы одинаковы для обоих ТС. В этих режимах таймеры-счетчики независимы в своей работе, каждому счетчику может быть определен свойрежим. Последний, третийрежим предназначен только дляработынулевоготаймера счетчика. Установка ТС1 в третий режим просто блокирует его работу.
Режим 0 (рис. 3.15) устанавливается сбросом битов М0 и М1 соответствующего ТС (см. первую строку табл. 3.8). Этот режим достался микроконтроллеру 51-ой серии в наследство от предыдущей 48-ой. Это были МК, выпущенные фирмой Intel впервые в ми- ре. Семейство MCS-48 имело восьмиразрядные таймеры-счетчики, считавшие не машин-
ные
циклы,
а порции
по
32
цик-
OSC /12
T0
C/T0
TL0 TH0
5бит 8бит
TF0
ла, иначе счетчик слишком бы- стро бы переполнялся. Для ими- тации этого режима в случае за- мены МК на 51-ю серию и был
Gate0 1
INT0
TR0 & 1
введен нулевой режим.
Импульсы осциллятора
OSC делятся на 12, т.е. форми-
Рис. 3.15. Работа нулевого таймера в режиме 0.
руется последовательность ма-
шинных циклов. Переключатель, управляемый битом С/Т0`, подключает счетные регист- ры TL и TH либо к делителю тактов осциллятора на 12, либо к внешнему выводу Т.
Чтобы импульс, поступающийсвывода ТО, былгарантированно зафиксирован, со- стояние вывода должно оставаться неизменным в течение минимум одного машинного цикла, т.е. длительность выступов и впадин внешних импульсов должна превышать одну микросекунду. Это относится ко всем четырем режимам работы счетчиков.
Далее в цепочке, передающей импульсы на счетные регистры стоит переключа- тель, управляемый логической комбинацией битов Gate, TR и состоянием вывода INT. Ус- тановка бита разрешения TR в ноль запрещает счет независимо от состояния других эле- ментов цепочки. Если бит TR установлен в единицу, то бит Gate может разрешать (Gate=1) или запрещать (Gate=0) управление счетом от вывода INT. При Gate=1, TR=1 и INT=1 счет разрешен, при Gate=1, TR=1 и INT=0 – запрещен. Пример практического ис- пользования комбинации битов Gate, TR и состояния вывода INT будет показан при опи- сании первого режима ТС.
При переполнении регистра ТН устанавливается соответствующий бит (флаг) ТF в регистре TCON и будет вызвано прерывание по вектору 000Bh для нулевого таймера- счетчика и 001Bh для первого.
Режим 1 (рис. 3.16) отличается от нулевого тем, что счет идет в двух восьмираз- рядных регистрах и переполнение будет наступать в 8 раз реже. Длительность отсчета
таймера от
переполнения
до пе-
OSC /12
T0
C/T0
TL0 TH0
8бит 8бит
TF0
реполнения составит уже 65536 мкс, а не 8192мкс, как в нулевом режиме. Это соответствует 15.26 или 122 «тикам» в секунду. Все
Gate0 1
INT0
TR0 & 1
остальное аналогично.
Оба регистра TR и TH
доступны для записи, возможно
Рис. 3.16. Работа нулевого таймера в режиме 1.
также «чтение на лету», т.е. без приостановки счета. Поскольку
инкрементирование регистра ТН в режиме таймера происходит раз в микросекунду, пер- вый режим удобно использовать для определения длительности положительных импуль- сов. Для этого нужно разрешить управление от вывода INT (Gate=1, TR=1) и подать ис- следуемый сигнал на этот вывод. Ниже приведен текст программы на ассемблере, на-
124
страивающей таймер 0 микроконтроллера на эту операцию. К выводу INT0 присоединен исследуемый сигнал, кнопка, присоединенная к нулевому биту первого порта, запускает измерение.
0B: LJMP OVER ;по адресу вектора прерываний Т/С0 записан переход
………………. ;к п/п обработки переполнения таймера
TMR: ORL TMOD,#00001001B ;установить бит Gate0 и первый режим Т/С0 SET TMOD.2 ;сбросить бит T/C0, перевести в состояние таймер ORL TCON,#00010000B ;установить бит TR0 не изменяя остальных
MOV TH0, #0 ;обнулить старший байт Т/С0
MOV TL0, #0 ;обнулить младший байт Т/С0 ORL IE, #10000010B ;разрешить прерывания от Т/С0
MOV TICK, #0 ;обнулить счетчик переполнений таймера
WAIT: JB Р1.0, WAIT ;ждать, пока 1 на выводе Р1.0, это кнопка«СТАРТ»
……………………………… ;здесь нужна подпрограмма вывода результата из ячеек
;TICK, TH0 и TL0 и возврата на TMR
OVER: INC TICK ;увеличить число переполнений
RTI ;возврат изпрерывания
Режим 2 иллюстрирован рис. 3.17. Это режим с автоперезагрузкой и доступен он, также, как и два предыдущие любому из двух таймеров МК. Здесь TL и TH выступают, как
два
автономных регистра,
счет
OSC /12 T0
Gate0 1
INT0
TR0 1
C/T0
&
TL0
8бит
TH0
8бит
TF0
идет в TL, причем, как только он обнуляется, содержимое ТН пе- реписывается в него.
Режим удобен для непре- рывного отсчета временных ин- тервалов, период которых опре- деляется ТН. При необходимо- сти, сигнал соответствующий
Рис. 3.17. Работа нулевого таймера в режиме 2.
этим временным интервалам можно подать на какой-либо вы-
вод порта МК. Попробуйте написать соответствующую программу. Этот режим часто ис- пользуют для Т/С1, задавая частотуприема и передачи встроенного приемо-передатчика в асинхронном режиме. В лабораторных работах этот режим используется в диспетчере процессов для запуска синхроквантов.
В режиме 3 может работать только С/Т0. Если в этот режим перевести С/Т1, он просто блокируется и содержимое регистров TL1 и TH1 остается неизменным. Эффект та-
кой
же,
как при установке
OSC /12 T0
Gate0 1
INT0
C/T0
TR0 1
TR1
&
TH0
8бит
TL0
8бит
TF1 TF0
TR1=0. Т/С0 в режиме 3 представляет собой два неза- висимых устройства на осно- ве восьмиразрядных регист- ров TL0 и TH0. Устройство на основе регистра TL0 мо- жет работать в режиме тай- мера и в режиме счетчика. За
Рис. 3.18. Работа нулевого таймера в режиме 3.
ним сохраняются все биты
управления Т/С0, оно реаги-
рует на воздействия по входам Т0, INT0. При переполнении TL0 устанавливается флаг TF0. Устройство на основе регистра ТН0 может работать только в режиме таймера. Оно использует бит включения TR1, при переполнении TH0 выставляет флаг TF1. Других би- тов управления устройство на основе TH0 в этом режиме не имеет. Логика работы Т/С0 в
режиме 3 показана на рис. 3.18.
125
Режим 3 для Т/С0 удобно применять тогда, когда требуется работа приемопередат- чика в асинхронном режиме и двух таймеров или приемопередатчика в асинхронном ре- жиме, таймера и счетчика. Когда Т/С0 переведен в режим 3, Т/С1 можно выключить, пе- реведя его также в ре-жим 3, использовать в режиме 2 для выработки импульсов такти- ровки приемопередатчика или в любых других приложениях, не требующих прерывания.