Цитата(sherr @ Jan 20 2007, 23:44)

Как сделать, чтобы в WINAVR можно было бы работать с отдельными битами аналогично
CVAVR например PORTD.5=0 . Где-то видел готовый хидер для этого, но,увы...
не могу найти. Также интересут другие подобные хидеры облегчающие переход между
различными версиями компиляторов С для AVR.
Насколько программисты ратуют за "облегчение перехода с компилятора на компилятор", настолько производители компиляторов пытаются усложнить данную задачу и сделать переход более неудобным.

И их где-то можно понять.
С другой стороны, по-моему данная проблема (перехода) интересует только преподавателей и людей неопределившихся. Вторые делают переход как правило один - два раза. И если они ещё неопределились, то у них, как правило, ещё мало наработанных программ.
Теперь по сути вопроса.
Сам я пишу на IAR. Там есть такая возможность. Она описана в документации на компилятор.
Код
__io union {
unsigned char PORTE;
struct {
unsigned char PE0:1,
PE1:1,
PE2:1,
PE3:1,
PE4:1,
PE5:1,
PE6:1,
PE7:1;
}
} @0x1f;
.......
PORTE.PE0 =0;
.......
PORTE = 15;
.....
Но мне кажется, что чаще пользуются более простым способом. И он более универсален. Иными словами, в следующий раз Вам не придётся искать способ перехода на другой компилятор.
PORTD &= ~(1<<5); Можно сделать макрос.