Переписываете putchar следующим образом: char putchar (char c) { while (!TIimage); TIimage = 0; return (SBUF1 = c); } Тогда в прерываниях будете принимать команды, а printf будет работать как и прежде, поллингом. --------------------------------------------------------------------
Но о каком putchar идёт речь??? У меня он не используется, только printf. И что есть TIimage - это просто левая переменная, или она как-то завязана под регистры контроллера??