Posłuchaj - popełniasz tak ogromną ilość błędów i to jeśli chodzi o totalne PODSTAWY że na prawdę - hmmm zacznij może od książki. Bo tak na szybko kilka pytań do ciebie:
1. po co ci volatile tutaj ??? wiesz do czego to jest ? (raczej na pewno nie wiesz)

2. co to jest ?
Kod:
PORTD = TXD; //pullup na TXC
???? nie dość że to nie żaden pullup , nie dość że nie działa w ogóle tak jak chcesz ? to jeszcze w ogóle zastanowiłeś się jak działa UART ? i czy potrzebny jest pullup ? ...
3. odpalasz przerwania których nie ma - więc masz fantomowe przerwania i procek bryka wciąż na resecie
4. co to jest ???
Kod:
if(wyraz[znak] != '\n')

spróbuj chociaż w dwóch zdaniach wyjaśnić co tu robisz

???
-------------------
nie dziw się więc że to ci nie działa - to NIE MOŻE działać .... po prostu skoczyłeś na zbyt głęboką wodę - nie znając kompletnie podstaw C ani obsługi UART'a .... program jest całkowicie źle napisany - nie to że tam coś jest źle - wszystko jest źle
tzn no może poza jednym tym razem - samą inicjalizacją UBRR
------------------------ [ Dodano po: 1 minucie ]więc widzisz pomóc można - ale tu trzeba byłoby zacząć w ogóle od podstaw wszystko tłumaczyć ... a nie zwrócić uwagę na jakiś tam drobny błąd.
Nie traktuj tego jako docinki - po prostu spróbuj mniejszymi kroczkami - będzie łatwiej bo podpowiem że wysyłanie to jeszcze nic - ale przy takim podejściu zanim zrobisz prawidłowy odbiór stringów na przerwaniach .....
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]