uk8amk писал(а):Alkul
С точки зрения портируемости на другие платформы и универсальности - да. С точки зрения оптимальности - нет.
Ну, во-первых, Вы ошиблись (но это Вам уже указали).
А во-вторых, я говорил не о портируемости на другие платформы, а о корректном понимании исходника другими компиляторами (генерирующими код для AVR контроллеров).
Что касается именно других платформ, то я лично считаю, что для микроконтроллеров портируемость Си-шных программ - ложь от лукавого. Конечно, те, кто ассемблера не знают и архитектуру МК не изучали, не понимают этого до конца. Ну возьмем, к примеру, ATtiny15, у которого и ОЗУ-то в полном понимании этого слова нет. Есть блок регистров и все. А стек - аппаратный, причем всего лишь трехуровневый. Если программа изначально писалась с использованием частых вызовов подпрограмм в расчете на МК из серии мега, как это увязать для тини15? А если архитектура программы задумывалась в расчете на наличие второго 16-ти разрядного таймера?
Вот и получается, что на самом деле "портируемость" возможна только между схожих МК одной серии, а в этом случае и ассемблер прекрасно портируем. И при этом речь идет еще о контроллерах одного семейства! Что уж говорить о портируемости на другие семейства. Конечно, если речь идет о программке для моргания светодиодом, тогда да, легко портируется. Если же речь о сложной программе, написанной с учетом архитектуры МК, то вряд ли возможна портируемость наподобие: "Изменил в заголовке файл-описатель контроллера, перекомпилировал и - вуаля". Не бывает такого.
Для Масяни. Ну, где Ваша самостоятельная работа по изучению USART? Что уже освоили, что поняли, что еще остается непонятным?