Цитата(MALLOY2 @ Feb 22 2007, 00:08)

но код
U0IER |= IER_THREIE;
куда быстрее выполняется чем код
if( !(status_word & STW_THR_BUSY) )
{ status_word |= STW_THR_BUSY;
U0THR = *string++;
}
Ну раз речь пошла о быстродействии

1.Знаете
сколько наносекунд выполняется у LPC обращение к периферии? Cоветую поинтересоваться на досуге.
2.Приведенная Вам строка совершенно не заменяет приведенный мною код.
В своем варианте Вы кроме разрешения прерывания сделаете
- лишнее занесение первого байта в буфер в функции передачи
- лишнее извлечение первого байта из буфера в обработчике (все это естественно работа с байтами и возня с указателями)
- ну и само собой еще одно обращение в обработчике к медленной периферии для запрещения прерывания.
Вместо всех этих телодвижений - анализ/сброс бита и прямое без промежуточной буферизации занесение в THR.
Цитата
и места меньше потребляет
Да. Сколько там FLASH у LPC2124 не напомните? Сколько написали кода?
Цитата
и линейный полностью и конвейер проца не сбрасывает (зависит от компилятора).
И флагов дополнительных не надо
один бит 
в слове где используется дюжина флагов из 32. Кроме того можете работать и по железному флагу TEMT - выиграите 5-6 команд (в сумме с обработчиком прерывния).
Цитата
одни минусы, так вчем прикол ?
Прикол в том, что в Ваших рассуждениях ошибка на ошибке

Цитата
я реализовал обмен через разрешение прерываний во многих процах(
Ну и что? Из этого следует что всегда и везде надо поступать по этому шаблону?
Цитата
и нигде небыло проблем.
Их нет и в LPC, если чуть-чуть подумать.