Hallo,

ich habe deinen Code mal auf meinen At90CAN128 gespielt. Es funktioniert und ich kann auch so keinen Fehler finden, der das Verhalten erklärt.
Geändert habe ich die LED-Ausgabe (nur PA7), es ist ein 16Mhz Quarz, daher bekommt UBRR1L einen anderen Wert.
Die Zeile
Code:
UCSR1C = (0<<UMSEL1) | (0<<UPM1) | (1<<USBS1) | (3<<UCSZ1);
habe ich durch
Code:
UCSR1C = (0<<UMSEL1) | (0<<UPM1) |  (3<<UCSZ10); //9600,0,1
ersetzt, da nur Müll in hterm angekommen ist. Aber dein Oszi hätte aber auch das anzeigen müssen.
Weiter möchte ich dir als Tipp noch folgendes geben.
Die USART1_Init() gehört nicht in die while-Schleife. Die Schnittstelle muss nur einmal initialisiert werden.
Üblicherweise stehen in Headerdateien nur Definitionen, Prototypen, etc. C-Code gehört in C-Dateien und C-Dateien werden in das Projekt eingebunden (nicht über #include). Das hat aber nichts mit deinem Problem zu tun.

Bitte prüf mal die Einstellung an deinem Oszi. Zeigt das Oszi etwas an, wenn du mit dem PC sendest?

Gruß

Jens