Цитата(Master_MW @ Mar 5 2009, 22:08)

Так, например, не хочет работать
PORTB=_BV(PORTB1);
Ммм... поясните пожалуйста термин "не хочет работать". Это выражение должно записать число 0x02 в PORTB. Затерев при этом предыдущее значение всех 8 битов.
Цитата(Master_MW @ Mar 5 2009, 22:08)

в книге Ю.А. Шпака указано что _BV() библиотечный макрос
В этом со Шпаком можно согласиться. Это действительно макрос (он объявлен через #define), а не директива, как вы написали в первом сообщении, и он действительно часть библиотеки (avr-libc).
Цитата(Master_MW @ Mar 5 2009, 22:08)

Проблема решилась с подключением файла avr/sfr_defs.h
Это несколько странно - этот файл включен в avr/io.h, поэтому должен подключаться автоматически при подключении avr/io.h. А без подключения avr/io.h компилятор не знает что такое PORTB и PORTB1. Становится совсем непонятно, как же у вас _BV() не работало.
Цитата(Master_MW @ Mar 5 2009, 22:08)

для корректной работы нужно использовать
ISR(TIMER0_OVF_vect)
Помню из детства: "однако, за время пути собака могла подрасти". Время идет, компилятор развивается. Книга была написана давно, примеры в ней относятся к компилятору версии 2005-2006 года (если память не изменяет).