Алгоритм программного антидребезга может выглядеть примерно так.
Если состояние кнопки изменилось -> начать отсчет времени антидребезга
Иначе

Если состояние кнопки не менялось)
Если ведется отсчет времени и время истекло -> зафиксировать текущее состояние кнопки. Остановить таймер.
Отсчет времени можно вести по таймеру или по количеству опросов (особенно если они регулярные).
Более детальную реализацию думаю сами осилите.
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.