Ich kann in dem Code keinen Fehler erkennen, ABER: SerRead schreibt den Wert von UCSRB neu (und macht dabei den Transmitter aus). Evtl. gibt es in anderen Codeteilen ähnliche Seiteneffekte.

mfG
Markus