Приклад 5.1

Налаштувати таймер/лічильник ТС0 на «0» режим роботи в якості таймера з зовнішнім управлінням. Встановити значення коефіцієнта ділення 512. Увімкнути таймер/лічильник.

При визначенні констант завантаження регістрів ТН0, ТL0 виходимо з того, що регістр ТL0 працює в режимі попереднього подільника з коєфіціентом ділення 32. Тоді регістр ТН0 має забезпечити коефіцієнт ділення 512/32=16.

Константу завантаження регістра TMOD для цього завдання визначають у відповідності з даними, що приведено в табл.5.4.

Таблиця 5.4

  Таймер/лічильник 1 Таймер/лічильник 0
№ біта                
Біт                
Функція Програмне управління включенням Режим таймера «0» режим роботи Управління включенням по входу INT0 Режим таймера «0» режим роботи

Текст програми має наступний вигляд.

;---------------------------------------------------------------

;--- Опис констант та змінних

INI_TMOD EQU 00001000b;константа завантаження регістру TMOD

INI_TH0 EQU 16;константа завантаження регістру TH0

;--- Програма

ORG 0H;адреса рестарту після пуску процесора

SJMP START;перехід на початок основної програми

ORG 20H;початкова адреса основної програми

START:

MOV TMOD,#INI_TMOD;ініціалізація регістру TMOD

MOV TL0, #INI_TH0;завантаження регістра TL0

SETB INT0; дозвіл режиму альтернативних функцій;по входу зовнішнього управління ТС0

SETB TR0;ввімкнення таймера/лічильника TC0

END;директива про закінчення програми

;---------------------------------------------------------------

Режим «1»

В першому режимі роботи таймер/лічильник працює як шістнадцятирозрядний лічильник. Режим «1» схожий на режим «0», за винятком того, що в регістрах ТН, ТL використовуються всі 16 біт.

В цьому режимі можна забезпечити формування інтервалу часу тривалістю до 65536 мкс при частоті генератора мікроконтролера 12 МГц.

Нульовий і перший режими роботи таймерів T0 і T1 призначені для формування одиничного інтервалу часу. Якщо виникає необхідність формувати послідовність інтервалів часу для періодичних процесів, то перезавантаження регістрів TH0 і TL0 для завдання потрібного інтервалу часу проводиться програмно, що для коротких інтервалів часу може призвести до значних витрат процесорного часу.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: