Цитата(loghir @ May 29 2011, 19:34)

xemul
в #14 я всего-навсего спросил, как рассчитать частоту прерываний TMR0 в зависимости от записанного в битах PS0...PS2. И более ничего!
Эта информация есть в даташите в том месте,где описаны биты PS0...PS2. (описание регистра OPTION).
Коэффициент деления, вносимый пресалером, там указан в виде таблички.
Точно вычислить коэффициент предзагрузки TMR0 "по формуле" не представляется возможным,
поскольку не определен интервал времени между моментом прерывания и моментом предзагрузки - этот интервал
зависит от того, как написана ваша подпрограммы обработки прерывания(ППОП).
Обычно сначала грубо расчитывается частота прерваний, а более точно она подгоняется в дебагере.
Там все очень просто. Ставите точку останова на первом операторе ППОП
и замеряете время между двумя остановами (для этого надо открыть и обнулить окно StopWatch).
Затем вы корректируете константу предзагрузки в нужную сторону.
Цитата
по поводу обработчика прерываний TMR0: он точно запускается, поскольку цифры на индикаторе меняются, и после нажатия RA1 счет прекращается. Частота прерываний TMR0 после предделителя у меня 100 Гц. Суммируя 100 временных интервалов прерываний я получаю 1 Гц, что и требуется. В #25 я написал мой обработчик прерываний для TMR0. Но цифры на индикаторе очень быстро меняются! Что-то там не так...
У вас там все не так.
Не надо трогать в ППОП никаких флагов, кроме флага запроса прерывания. Т.е кроме T0IF = 0; все остальное, включая установки для
PS0...PS2. надо делать один раз вначале основной программы.
Все переменные, которые вы используете а ППОП (tmp100) надо описывать как volatile .
Предзагрузка делается не так: TMR0 = TMR0 + 100; а вот так TMR0 = 100;
И еще, если позволите, маленький совет.
Позиция "какие м...ки пишут эти даташиты!! Там ничего нельзя понять! Да и советы тут дают бестолковые.." не является оптимальной.
Гараздо более продуктивно встать в такую "позу" :
"Да, я, конечно, ламер и туго соображаю, но .. Братцы, выручайте!! Курсовик горит, а препод-зверь смотрит на меня как удав на кролика. ПАМАЖИТЕ!!!"
Такая позиция, как мне кажется, сможет вызвать к вам сочувствие и желание помочь. В отличие от первой позиции.
Удачи!