задаю настройку
Код: Выделить всё
void stTMR0 (void)
{
GIE = 1; // разрешены все немаскированные прерывания
PEIE = 1; // разрешены все немаскированные прерывания от переферийных модулей
// регистр OPTION
T0CS = 0; // bit 5 TMR0 Выбор источника сигнала 0 - Fosc/4 (внутренний); 1 - подача на T0CKI
T0SE = 0; // bit 4 TMR0 Выбор фронта приращения TMR0 при внешнем тактовом сигнале (0-передний фронт)
PSA = 0; // bit 3 Выбор включения предделителя: 0 - перед TMR0, 1 - перед WDT
PS2 = 1; // bit 2 Настройка предделителя
PS1 = 1; // bit 1 Настройка предделителя
PS0 = 1; // bit 0 Настройка предделителя
TMR0 = 0; // предзагрузка TMR0, сбрасывается при переполнении.
// конец настройки TMR0.
T0IF = 0; // сброс флага прерывания по переполнению TMR0
T0IE = 1; // Разрешение прерывания по переполнению TMR0
}теоретически, прерывания 15,25879 Гц, или 65,536 ms. Но на симуляторе MPLAB совсем не то.
Вроде бы
Режим 8 бит: Частота прерываний TMR0
при Fosc/4, для 4 МГц, коэфф. - 256 = (1000000)/256/256 = 15,2587890625 Гц
при Fosc/4, для 4 МГц, коэфф. - 64 = (1000000)/256/64 = 61,03515625 Гц
при Fosc/4, для 4 МГц, коэфф. - 16 = (1000000)/256/16 = 244,184375 Гц
но реально частота меньше. Глазом заметно по скорости счета на 7-сегментном индикаторе.