I would first recommend testing your transmission routines using a PC with terminal emulator software, like Putty, as the receiver.
You can then determine which transmission routines, if any, are not functioning as expected and then remedy the issues.
I would then test the reception routines using a PC with terminal emulator software as the transmitter.
You can then determine which reception routines, if any, are not functioning as expected and then remedy the issues.
Note: When interfacing a devices UART/USART to a PCs RS-232 port, an RS-232 transceiver, like a MAX232, must be utilized or the microcontroller maybe damaged.
Finally, perform a similar test to which you have previously posted, which tests the interaction between two devices using the appropriate routines.
I allows recommend testing individual routines, before testing their interaction between them.
BigDog