ich habe eine Zeile im Code mal versuchsweise geändert:
von
UCSR0C |= (1<<UMSEL00)|(3<<UCSZ00); // Asynchron 8N1
auf
UCSR0C |= (1<<UMSEL01)|(1<<UMSEL00)|(3<<UCSZ00)|(3<<UCSZ01); // Asynchron 8N1

und nun kommt schonmal was an im hyperterminal.
aber es sind irgendwie nur leerzeichen, die ausgegeben werden. Welche Option könnten denn dafür schon wieder verantwortlich sein?