Цитата(Herz @ Aug 10 2008, 10:21)

Ну что ж, Вы правы, конечно. Это я поторопился с сарказмом. Однако для отрицательной логики (как в приведенном примере) установка флага (перевод в "0") именно операцией "И" и достигается.
В конец решили запутать человека с установкой битов и флагов?Still, если надумаете изучать АВР то посмотрите на следующие макросы:
Код
/* Установка и сброс бит в регистрах ввода-вывода с помощью макроса */
#define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
/* Макрос для проверки одного бита в области ввода-вывода */
#define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT))
/* Пример использования */
if(CHECKBIT(PORTD,PIND1)) /* Проверка, PIND1 = 1? */
{
CLEARBIT(PORTD,PIND1); /* Сброс PIND1 порта D*/
}
if(!(CHECKBIT(PORTD,PIND1))) /* Проверка, PIND1 = 0? */
{
SETBIT(PORTD,PIND1); /* Установка PIND1 порта D */
}
Теперь по флагам регистров МК (статуса таймера, и2с УАПП и др). АВР такая структура, что сброс флага
производится записью единицы.
Неправильный пример
Код
GIFR |= (1<<INTF0); // сброс флага,
Правильно так
Код
GIFR = (1<<INTF0); // сброс флага,
Удачи