нет, так не надо, не оттуда скопировал код. Просто есть еще кнопки без фиксации, по такому же принципу устроены и работают без нареканий.
gonzales, если вам еще интересна эта задачка, есть кое-какаие мысли... хочется все же найти причину... Попробуйте выкинуть весь код из обработчика прерывания и вставить там только приращение volatile переменной типа unsigned long. А где-нибудь в программе пару раз в секунду (чаще не надо) выводите значение этого счетчика в монитор. Запустите, нажмите одну кнопку и больше не трогайте - интересно, счетчик будет расти или нет? Подозреваю, что у вас прерывания запускаются не только по ИЗМЕНЕНИЮ состояния кнопки - а при включенном пине идут непрерывно... не могу этого обьяснить, но проверить было бы неплохо.