SL8051 UART Data is Garbled Every Few Attempts
In cases like this, the problem is almost always due to the receiving system(s) not being able to keep up with the transmitter. Your transmitter is cranking out data at the full baud rate with no interbyte delay and it simply overruns the receiver.

One test you can do is to dramatically lower the baud rate. This gives the receiving system more time to process each received byte. It may not clear the problem completely but if the errors are reduced or occur less frequently you know where to look.

Another test is to place a decent delay between each transmitted character. If the problem goes away, you have found your culprit.