Цитата(zeonix @ May 23 2011, 14:57)

какие? Ну я и говорю. С книги списал.
Лучше - заглядывать в DS.
1. Ожидание готовности (приёма байта). В DS:
Код
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
Т.е. выполняется цикл до тех пор пока не будет принят байт, при этом ничего более не делается. У вас же, напротив, в цикле выполняются действия, как будто байт принят.
2. Не обратили внимание на приоритет операций при проверке переменной status (см. пост #15)