Иван Соловьев
Ещё укажу на одну оплошность
Не нужно городить много кода в прерывании. Туда нужно зайти, что-то быстро сделать, допустим положить принятый байт в буфер, и выйти
UPD:
И ещё флаг поднять, что какие-то данные приняты. Потом в основном цикле программы его отслеживать и уже там обрабатывать все команды и пересылать что-то в ответ
Спасибо за замечание, об этом не задумывался, хотя понимал что прерывание не стоит делать большим. Просто впервые пишу программу и ещё сложновато правильно построить логику программы, хочу что то на подобии конечного автомата