Цитата(Anub @ Aug 4 2008, 01:42)

При запуске я получаю результат проверки условия в функции check, т. е. sf==1, и по идее было вызвано прерывание по приему символа, это как так, у меня нога RXD в воздухе висит...
1) Ну положим, нормальный символ вы могли и не принять, поскольку флаг sf=1 устанавливается в теле процедуры прерывания, но вне проверки принятого байта на ошибки. Если нога висит в воздухе, то прилетела помеха, прерывание сработало, флаг установился,...А если нога торчит в 0, то приём идёт непрерывно(:-).
2) Насколько я понимаю, функция getchar() является стандартной, как она связана с вашим приёмным буфером rx_buffer?