UART Interrupt won't work
Your Interrupt handler tries to read RBR twice (once in the handler, once in receive). That won't work, the RBR reads one byte from the FIFO each time.

The RS485 switching also seems to be incorrect. You ususally switch to transmit mode immediately before sending a byte, and you switch back to receive in the THRE interrupt when transmission is over.

The 1ms delays will be problematic with baud rates > 2400, causing lost frames.