Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гл3_06.unlocked.docx
Скачиваний:
27
Добавлен:
09.02.2015
Размер:
635.45 Кб
Скачать

В. Таймеры-счетчики мк

МК содержит два шестнадцати разрядных таймера-счетчика: нулевой Т/С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

Все биты устанав- ливаются про- граммно:

  • биты 0-3 опреде- ляют режим рабо- ты Т/С0.

  • биты 4-7 опреде- ляют режим рабо- ты Т/С1 .

М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 для выработки импульсов такти- ровки приемопередатчика или в любых других приложениях, не требующих прерывания.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]