Aus den von Robert erwähnten Variablen für das serielle Buffer ist ersichtlich, ob das letzte Zeichen an den HW-USART übergeben wurde. Dies bedeutet aber nicht, dass damit auch der Sendevorgang schon beendet ist und zwar aus folgendem Grund:
Der HW-USART hat ein UDR Register, in welches die zu sendenden Bytes geschrieben werden. Weiters gibt es das Transmit-Shift-Register, aus welchem die Bits in den UART-Ausgang geschoben werden. Ist dieses Transmit-Shift-Register leer, wird es mit dem im UDR-Register befindlichen Byte wieder gefüllt. Nun ist das UDR-Register leer und es kann softwareseitig mit dem nächsten Byte gefüllt werden.
Dieser Vorgang wird von Bascom übernommen. Es genügt mit PRINT die zu senden Informationen zu übergeben, Bascom erledigt alles weitere.

D.H. die Buffer-Variablen ergeben einen leeren Buffer, nachdem das letzte Byte in das UDR-Register geschrieben wurde. Im schlimmsten Fall werden aber noch zwei Bytes gesendet und zwar das Byte im Transmit-Shift-Register (zumindest der Teil, welcher noch nicht gesendet wurde) und das Byte im UDR Register.

Um festzustellen, ob der USART zur Gänze geleert ist, gibt es das TXC Bit.



Code:
do                        ' Warten bis das TXC Bit gesetzt ist.
loop until UCSRA.TXC = 1

Set UCSRA.TXC     ' zum zurücksetzen von TXC muss 1 geschrieben werden
                  ' gemäss Datenblatt
Set PortB.1            ' Umschalten von Senden auf Empfangen am RS485

Mit diesem TXC Bit lässt sich übrigens auch ein Interrupt auslösen, welcher dann die Umschaltung von Senden auf Empfangen vornehmen könnte.

Ich habe obigen Code noch nicht auf Hardware ausprobiert. Für Set PortB.1 musst Du natürlich Deinen Code für das Umschalten des Sende/Empfang am RS485 einsetzen, auch muss vor dem Senden (PRINT) der umgekehrte Vorgang erfolgen.

Obiger Code ist für einen AVR mit einem USART. Bei einem AVR mit 2 USARTs müssen die Namen entsprechend geändert werden.

Sofern Du in Deinem Programm ohnehin immer warten musst, bis alles ausgesendet wurde um dann auf empfangen umzuschalten, kannst Du Dir eigentlich die gebufferte Ausgabe ersparen, da diese dann keinen Vorteil bringt, wenn Du die Zeit, in welcher der AVR im Hintergrund sendet nicht sinnvoll nutzen kannst. Auch für die nicht gebufferte Ausgabe gilt allerdings das oben gesagte.