Могу показать. Давай твой вариант. Ты говоришь, по первому нажатию заснет.
Нажали. Провалились в прерывание. Сделали SEI и вошли в PD. Заснул.
А нажатие продолжается(так как нет ожидания отжатия). Провалился в рекурсивное прерывание и прошел его по варианту else. Из него по команде RETI возвратился в прерывание 1. А там - эпилог первого прерывания (он же должен быть при любом раскладе). После одной выполненной команды эпилога (это или pop, или ld...) - опять прерывание (нажатие-то продолжается, а RETI разрешило прерывание!) и опять прерывание по варианту IF(т.к. if (Device_ON==1) )...
ИЗ ПЕРВОГО ПРЕРЫВАНИЯ ВОЗВРАТА НЕ БЫЛО. И т. д.
А нажатие продолжается! Вновь прерывание...