Ну, так устроена логика обработки скан-кодов. Дело в том, что префикс отпускания клавиши фиксируется только в одном месте программы, а следующий за этим префиксом код может обрабатываться в разных местах. При этом матрица может участвовать, если код клавиши соответствует контакту матрицы, а может и не участвовать - это если скан коду соответствует что-то другое, например выход микроконтроллера. В первом случае отпускание будет нейтрализовано после записи в матрицу в ветке default, а во втором случае в отдельной ветке case, а запись в матрицу вообще не произойдет.
- - - Добавлено - - -
Конденсатор цепи сброса заряжается не через резистор, а от выхода микроконтроллера. Причем +5 там не сразу появляется, сначала там 0, затем инициализация клавиатуры, затем +5. Вероятно, из-за этого самозапуска не происходит.
Пульсации - это автоповтор клавиатуры.





Ответить с цитированием