Das erste, was du bei einer seriellen Schnittstelle IMMER machen 
solltest, ist die Richtung umzudrehen.
Anstatt den µC empfangen zu lassen, lässt du ihn erst mal senden!
Einfach zb in einer Endlosschleife ein 'X' senden lassen. Ev. mit einer 
kleinen Pause zwischen den Zeichen.
Am anderen Ende des Kabels sitzt dann ein PC mit einem Terminalprogramm, 
welches dir anzeigt was es vom µC erhalten hat, was immer das auch ist.
Warum ist das das erste?
Weil du am µC normalerweise keine vernünftige Anzeigemöglichkeit hast, 
an der du verfolgen kannst, ob überhaupt etwas ankommt, bzw. wenn etwas 
ankommt, ob das das richtige ist. So gesehen ist die Serielle 
Schnittstelle im PC sowie das Terminalprogramm und dessen Anzeige für 
dich eine 'getestete Komponente', von der erst mal angenommen werden 
kann, dass sie funktioniert. Wenn daher die Übertragung nicht 
funktioniert, dann muss das Problem entweder zb am Kabel oder im µC 
liegen.
Beim Kabel gibt es die Möglichkeit, das es falsch gekreuzt ist. Wenn gar 
nichts auf dem PC rauskommt, dann ist das eine nicht unwahrscheinliche 
Möglichkeit.
Wenn was rauskommt, allerdings die Zeichen falsch sind, dann stimmt die 
Baudrate im µC nicht. Etwas, das wiederrum in mehr als 98% der Fälle auf 
eine fehlerhafte Taktrate im µC zurückzuführen ist.  Allerdings ist 
damit nachgewiesen, das das Kabel schon mal richtig rum gekreuzt ist
Klappt dann die Übertragung µC -> PC, dann klappt auch die Übertragung 
PC -> µC (die sich leider in den meisten Fällen nicht so einfach 
debuggen lässt) auf Anhieb. Wenn dann immer noch Probleme im µC sind, 
dann liegen die im Programm, welches die eingetrudelten Zeichen 
weiterverarbeiten bzw. weiterverteilen. Daher ist es wichtig, dass du 
erst mal feststellst, ob die USART grundsätzlich funktioniert. Und das 
geht am einfachsten, wenn der µC sendet und der PC empfängt. Immer so 
wenig Unbekannte wie möglich und ungetestete Systeme die Fehler 
enthalten können im System haben!