Es kann sein das mit einem 16MHz Quarz bei 115200 Baud die Abweichung zu groß ist.
Und ja es gibt einen Unterschied zwischen den beiden Quarzen. Das eine Quarz mit 14.7456MHz ist ein Baudratenquarz, was soviel heißt wie das man das gerade runterteilen kann.
Schau mal hier auf Seite 167:

http://www.atmel.com/dyn/resources/p...ts/doc2503.pdf

Da siehst du in der Tabelle das der Fehler mit einem 14.7456MHz Quarz 0% ist. Bei 16MHz sind es bereits 3,5%.
Bei so hohen Baudraten würde ich dir empfehlen das 16MHz Quarz durch ein 14.7456MHz Quarz zu tauschen damit sollte das Problem gelöst sein.

Edit:
Habs bei mir gerade nochmal probiert. Ein "Hallo Welt" Programm funktioniert bei mir mit 115200Baud. Und dein Programm geht ebenfalls. Ich verwende ein RS232 Kabel was auf einen selbst gebauten RS232-USB Adapter geht.