Цитата(covsh @ Jul 3 2008, 20:08)

а объясните мне, начинающему почему надо писать так, а не GIFR |= (1<<INTF0)?
почему именно единицу это понятно, так в даташите написано.
Потому что GIFR |= (1<<INTF0) эквивалентно GIFR = GIFR | (1<<INTF0),
Так как GIFR - volatile, то компилятор сначала прочитает значение из GIFR, потом сделает "логическое ИЛИ" и все это запихнет обратно в GIFR, после чего контроллер очистит все флаги, которые ==1. То есть, если в GIFR кроме флага INTF0 виставлен, например, еще и INTF1, то он также будет очищен.
Цитата(covsh @ Jul 3 2008, 20:08)

ведь насколько я понимаю, именно такая команда включает бит INTFO, а предложенная вами запишет 01000000 (Bit 6 – INTF0: External Interrupt Flag 0 )
Наша задача не включить, а сбросить флаг INTF0