Цитата
Еслиб этот прототип заработал сразу на юарт, я бы наверно не просил помощи.
Вы так и не поняли в чем разница между объявлением функции и её прототипом.
676038 вам сказал, что надо объявить putchar. Но она у вас и была уже объявлена! Ошибка была в самой функции, а не в её объявлении!
Вам же по-русски было написано:
Цитата
Вы в функции int putchar(int c) вызываете putchar('\r'); т.е. саму себя и происходит зацикливание не дойдя до строчки UDR = c;
Внимательней надо быть к ответам!