Программирование МК на ассемблере ASM-51 и AVR Pascal. Китаев Ю.В. - 14 стр.

UptoLike

Составители: 

14
OCF0, который является запросом на прерывание и одновременно
сбрасывает счетчик в исходное нулевое состояние. На рисунке верхний
предел или код сравнения = 127, следовательно, импульс OCF0 и
соответствующее прерывание будут происходить с частотой в 128 раз
меньшей входной частоты счетчика. В нашем примере частота
прерываний = 32768/Кпреддел/Ккомпар = 32768/8/128=32Гц. Кпреддел-
коэффициент деления частоты предделителем и Ккомпар
- коэффициент
деления частоты, задаваемый компаратором.
Флаг прерывания при совпадении кодов OCF0 сбрасывается
аппаратно при переходе на соответствующий вектор прерывания, поэтому
в программе мы к нему обращаться не будем.
Временная диаграмма таймер-счетчика0 с предделением на 8 (fTosc/8) в
режиме сброса при совпадении
Настройка таймера0 и контроль за его работой производится с помощью
регистров:
TCCR0 – TimerCounterControlRegister0 (Регистр управления
таймером/счетчиком0)
ASSR – AsinchronousStatusRegister (Регистр состояния асинхронного
режима таймера0)
TIMSK – TimerInterruptMask (Регистр масок разрешения
прерываний для таймеров/счетчиков)
OCR0 – OutputCompareRegister0 (Регистр кода сравнения
)
TCNT0 – TimerCouNTer0 (запись начального или чтение текущего
значения счетчика)
TIFR - TimerInterruptFlagRegister (регистр флагов прерываний
таймеров)
В нашей задаче понадобится явно обращаться к первым 4-м регистрам.
Регистр управления таймером/счетчиком - TCCR0
Разряд 7 6 5 4 3 2 1 0