MK PIC16F84. Структура и программирование таймера TMR0.

TMR0 – 8-и разрядный таймер/счетчик.

Основные особенности:

1. 8-и разрядный

2. Возможно чтение и запись текущего значения счетчика

3. Наличие 8-и разрядного предделителя

4. Возможность выбора источника тактового сигнала (внешний (через порт) и внутренний)

5. Выбор активного фронта внешнего тактового сигнала (задний фронт и передний фронт)

6. Генерирование прерывания по переполнению (переход от FFh к 00h)

 

Биты управление находятся в регистре OPTION_REG

Структура регистра OPTION_REG:

T0CS – выбор тактового сигнала (1 – внешний тактовый сигнал (T0CKI), 0 – внутренний (CLKOUT))

T0SE – выбор фронта приращения при внешнем тактовом сигнале (1 – по заднему фронту (с высокого к низкому уровню), 0 – по переднему)

PSA – выбор включения предделителя (1 – включен перед WDT(сторожевой таймер), 0 – перед TMR0).

PS2:PS0 – устанавливают коэффициент деления для предделителя

Примечание: Если предварительный делитель включен перед WDT, то коэффициент деления тактового сигнала для TMR0 равен 1:1.

Когда бит T0CS сброшен в ‘0’ (OPTION_REG<5>), TMR0 работает от внутреннего тактового сигнала. Приращение счетчика TMR0 происходит в каждом машинном цикле (если предделитель отключен). После записи в TMR0 приращение счетчика запрещено два следующих цикла.

Любая запись в регистр TMR0 вызовет запрещение приращения таймера TMR0 в течение двух следующих машинных циклов (2Tcy). Т.е. после записи нового значения в TMR0 таймер не инкрементируется пока не определено, что 3-я команда не циклически повторяющаяся. Если предделитель включен перед TMR0, то запись в регистр TMR0 вызовет немедленное изменение TMR0 и сброс предделителя.

Приращение TMR0 и предделителя запрещено в течение 2-х машинных циклов (2Tcy), после записи в TMR0. Например, если коэффициент предделителя равен 2, то после операции записи в регистр TMR0 приращение таймера не будет происходить в течение 4 циклов для TMR0). Далее таймер работает в нормальном режиме.

 

Пример управления таймером: