Цитата(loghir @ May 23 2011, 18:22)

Ну почему же? Да, обработчик прерываний у меня не выделен (пока!) в отдельную функцию.
У Вас в последних сорцах должно было приключаться прерывание по переполнению TMR1. Какой кусок программы, по Вашему мнению, выполнялся при этом?
Цитата
А так он вполне присутствует:
Код
while (TMR1IF == 0) // ожидание флага по переполнению TMR1
{}
TMR1ON = 0; // выключить TMR1
TMR1IF = 0; // сброс флага прерывания по переполнению TMR1
Только не выделяйте это в отдельную функцию as is.
имхо, Вы продолжаете подтверждать, что продолжаете не понимать.
Цитата
ну еще надо добавить в цикл
Код
GIE = 1; // разрешены все немаскированные прерывания
PEIE = 1; // разрешены все немаскированные прерывания от переферийных модулей
только что заработала прога счета нажатий на кнопку (с антидребезгом, само собой).
поправка: в PEIE не надо записывать 1 после каждого прерывания.
Да и GIE = 1 достаточно сделать однажды, если только Вы не отключаете все прерывания в каких-то критических местах. (такого в Вашем коде я не заметил)