Цитата
Состояние порта - я ожидаю прихода фреймом и подсчитываю их колличесво по 0xff(конечный байт фрейма), а состояние порта high т.е. у меня fffff... Естественно можно также на прямую с SBUF регистра считывать, не используя getchar(), но как есть так есть!
Я все равно не понял что такое состояние порта high = ffff - это что, состояние линии приема когда нет передачи? Тогда к флагу завершения пакета 0xff это не имеет отношения. Когда линия приема в "1" getchar будет ждать приема - появления стартового бита, 8 битов данных, стопового бита и т.п.
Или когда нет приема по порту все время передается байт-заполнитель 0xff?
Если же вы ждете пакета, оканчивающего на 0xff - то надо сделать так:
while((*pBuf++ = getchar()) != 0xff) ;
Все - при выходе из цикла буфер содержит принятый пакет.
Но учтите - если порта нет (устройство на другой стороне не отвечает) - цикл будет бесконечны.
Правильнее делать все обработчиком прерывания - принимать байты, сохранять в буфере, по приему признака конца пакета выставлять основной программе флаг готовности.