Цитата(AHTOXA @ Sep 18 2009, 00:29)

Так есть же
макросы имени Волкова. Очень удобно.
Спасибо за ссылку. Я сделал немного по другому по сравнению с Волковым, и делал это последним на долгой дороге структуризации текущих проектов, после структуризации состояний, многоязычных сообщений, сигналов с датчиков, ошибок и прочей ерунды. Основная причина - самодокументируемость, файл описания должен быть понятен заказчику , ну а порты - чтобы было в одном стиле.
В части использования макросов Волкова, я больше склоняюсь к мнению zltigo, поскольку до недавнего времени прямое ногодрыганье было описано функциональными макросами.
Вот только поддержка режимов работы в бэкграунде все-таки следующий уровень модели OSI

, и правильно не опускаться до портов сквозь уровень функциональных макросов, даже если это кажется проще.
Ладно, дискуссия немного остра получается, и подобная тема возникает раз в пол-года, вот попробую укрепиться в своем мнении и порву всех

Цитата(zltigo @ Sep 18 2009, 10:27)

это чистое, как слеза, ногодрыгание и переноситься на три варианта конструкции-разводки.
Как это выглядит? Я понимаю, условная компиляция, но на каком этапе.
Дело в том, что меня клинит, если по тексту разбросаны ifdef/endif. Все, что не помещается на экран, не помещается в мозг

Цитата(zltigo @ Sep 18 2009, 10:27)

Вышеприведенное, на мой взгляд описание одной простейшей операции с LCD.
У нас lcd разные, и тут все выглядит не очень противно

Код
void WriteByte1(uchar ch)
{ uchar i;
OffPin(LcdCsb);
for (i = 0; i<8; i++)
{ if (ch & 0x80) OnPin(LcdSi); else OffPin(LcdSi);
OffPin(LcdClk);
OnPin(LcdClk);
ch <<= 1;
}
OnPin(LcdCsb);
}
void WriteLcdControl(char D)
{ OffPin(LcdRs);
WriteByte1(D);
}
void WriteLcdData(char D)
{ OnPin(LcdRs);
WriteByte1(D);
}