Was mir noch aufgefallen ist - Du hast UBRRH nicht gesetzt.
Normalerweise ist der Wert ja 0, aber wenn da mal was drinstand, wird es nicht mehr geändert und dein Programm kann zicken machen.