Цитата
Дело скорее всего в программе.
Конечно, а в чем еще? (ну если только порт у контроллера не выгорел...)
У вас программа то вообще работает? Че-то не вижу "goto MAIN"
Непонятно зачем вы постоянно включаете/выключаете передатчик при каждой отправке байта? Включите его один раз в INIT_UART и не трогайте больше....
а в регистр TXREG вы байтик то не ложите:
Код
у вас:
MOVFW TXREG;помещение данных в буфер передатчика
такой инструкции вообще несуществует

, у вас как программа то компилируется?
нужно написать так:
Код
MOVWF TXREG;помещение данных в буфер передатчика
И вообще, я немного не догоняю, зачем процедура отправки байта написана через макрос? Ладно отправлять постоянные значения, а как вы будете отправлять динамически изменяющиеся? ИМХО нужно сделать через CALL и WREG