Ок, давайте так:
Код
while(!(UCSR0A & (1<<UDRE)));
PORTE|=RS485_IO;
if (UCSR0A & (1<<RXC0)) // Может символ был принят "до" отправки, а не "после".
{
volatile unsigned char tmp = UDR0;
}
UCSR0B|=(1<<TXB8);
UDR0 = (address<<4)|RS485_CMD_SEND;
while(!(UCSR0A & (1<<TXC0) ));
PORTE&=~RS485_IO;
while(!(UCSR0A & (1<<RXC0)));
И еще... Когда вы отключаете приемник, выход драйвера уходит в Z состояние, возможно на RX0 нужен pull-up