Я не пользую эти контроллеры и к теме не должен присоединяться - пусть меня вытрут модераторы как флуд, но..
Вы сами ограничиваете функцией вывод значений всего, что идет ниже пробела
printf("
"); значит 13, или 0x0d
while (!(U0LSR & 0x20));
Когда значение символа 0x0d умножаем на 0x20 - в результате получаем условие окончания вывода -0
Или указывайте в процедуре количество символов, или заканчивайте массив 0 значением, а затем по нему прекращайте вывод, что-то типа этого
while (U0LSR != 0);
Тогда для вывода UART0_printf("
",0);