Цитата(d7d1cd @ Aug 12 2012, 10:15)

Скажите, тогда мой алгоритм отправки блока данных должен иметь такой вид?
В общем-то SSerge прав. UTXIFGx вам вообще можно не трогать. Точно также не нужно разрешать/запрещать немаскируемые прерывания
все сразу. Исходно лишь UTXIEx в регистрах IEx должны быть сброшены.
Код
do
{ if ((IFG1 & UTXIFG0) !=0) //передатчик готов?
{ U0TXBUF = *pBuf++;
--bufSize;
}
} while (bufSize != 0);
где
pBuf - указатель на буфер отправляемых данных,
bufSize - размер буфера для отправки.
Чтобы не зациклится здесь навсегда можно дополнительно в цикл ввести счетчик, по превышению которого определять "неисправность" UART (отсутствие готовности передатчика по истечение времени отправки одного символа) и переинициализировать его.
Только не очень понятно, для чего вам нужен именно такой алгоритм работы? С UART "выгоднее" работать по прерываниям, т.к. скорости его обычно на порядок или два ниже тактовой частоты ядра. Вот при работе с SPI на максимально возможной частоте (MCLK/2) - там да, выгоднее по опросу флага готовности.