Ага, после этого у МК все ресурсы уходят на обмен с регистрами или подсчет задержек.
Это решение "мы изобрели велосипед":
Если нужно подключить 1-16 кнопок на 4 линии, самый простой способ - пара каскадно включеннных шифратора приоритетов 8-3 (например 74НС14

, и на своих 4-х линиях вы имеете код нажатой клавиши

Но есть и ограничение - при двух нажатых клавишах код будет той, у которой больший приоритет. Впрочем, обычно две нажатые клавиши обрабатывать и не надо.
Ну а это цивилизованное решение, никакой мороки с трафиком и дребезгом

на 16-20 кнопок и выглядит так:
https://kazus.run/datasheets/pdf-dat.../MM74C922.html
Для 16 и более кнопок нам прийдется качать код через регистр со сдвигом, а вот для 15-ти кнопок можно обойтесь и без него. Кстати, кто догадается как?