Цитата(SSerge @ Feb 10 2010, 04:09)

Неужели эти несколько тактов так критичны, что Вы пускаетесь во все тяжкие?
...
Оставьте ассемблерные привычки, пишите на С.
...
Листинг, впрочем, иногда смотреть полезно.
Так ведь и речь идет о С. На ассемблере этих проблем нет. И именно из листинга я и привел ассемблерную мнемонику С-шных команд.
Что касается "несколько тактов", то у меня около 10 байт битовых переменных, которые активно используются (установка, сброс, анализ).
В даном случае для меня абсолютно не критично ни количество тактов, ни размер памяти. Вопрос был в том, чтобы разобраться с использованием битов.
А что касается оптимизации компилятором, то я считаю,что лучше самому продумать, по возможности, все варианты оптимизации и до и во время написания программы, чем полагаться на компилятор. Ведь компиляторы тоже пишут люди и они ошибаются. Мне уже приходилось по несколько дней искать "глюки" (Franklin, Keil). А потом оказывается, что это "глюк" компилятора. И абсолютно правильно написанный код приходится переписывать под компилятор.
У каждого свой подход к программированию. "Делай как можно лучше. А оно все равно будет хуже". Так меня еще в детстве мать учила. А если делать кое-как, то результат может быть плачевным. Я не претендую на истину, но каждому свое.
Спасибо всем за советы.
To alux:Только General Purpose I/O Register 0 находится в бит-адресуемой области. Остальные за ее пределами (0x1F).
Так что по битовым опрециям AVR уступает 8051.
Цитата(SergeyTT @ Feb 9 2010, 18:52)

Многократное объявление переменной в разных программных модулях(#include flags.h) здесь до лампады,
Для этих целей я обычно использую extern:
extern bit Enable_Display; // CS для дешифратора LCD P1.0
extern bit DISPLAY_E;
Это для Keil 51-го. Хотя там тоже были проблемы с их использованием
http://electronix.ru/forum/index.php?showt...st&p=525347Для AVR и IAR пока не сталкивался.
Сообщение отредактировал IF_P - Feb 10 2010, 11:49