Из "
test8__.c":
Код
#asm("cli") // не надо этого, вы и так в обрабочике прерывания, флаг I сброшен -- прерывания запрещены
TRANSF; // переключаемся на передачу
delay_ms(5); // одного такта хватит чтобы нога порта переключилась, не надо так много
putchar('r'); // ну и где определена эта функция? что она вообще делает? в исходнике под второй МК она есть, обратите внимание, раз код писал за вас IDE компилятора
while(!(UCSRA & (1<<UDRE))); // ошибка, ждать надо флаг TXC (а лучше бы вообще прерыванием пользоваться)
RECIVE; // и уже потом переключаться на прием
#asm("sei") // ошибка, разрешать прерывания не надо -- вложенные прерывания получаются
Во втором исходнике аналогичные косяки.
Схему не смотрел, Proteus'а нет.
PS: в макросах, в #define, точки с запятой не ставятся -- не принято.