Боюсь UART-ом опрашивать кнопки не получится. Если предположить, что максимальное время дребезга кнопки ==20мс, и тогда принять, что минимальная обнаруживаемая длительность нажатия ==30мс, то чтобы запрограммировать UART для опроса с подавлением дребезга таких кнопок, его нужно программировать на baudrate== 1/(.01*16) = 6.25 бод. Думаю в большинстве МК делителя UART-а не хватит.Гарантированно делает стандартный UART - отслеживает до 3-х точек в импульсе длительностью в один бит (baud), а если длительность активного уровня большая (больше символа со старт/стопами/parity) - выдает специальное прерывание об этом событии.
Да и при стандартных настройках UART == 8-N-1 придётся после нажатия кнопки ждать 1.6 сек перед тем как другую кнопу можно будет нажать.