Das mit dem Baudrate initialisieren ist falsch. Les' bitte mal im Datenblatt des Chips nach wie der Wert berechnet wird.

@michael: Du bekommst bei Deiner Funktion mindestens ein Warning des Compilers weil Du einen int aus einer void Funktion zurück gibst.