Цитата(семен78 @ Aug 11 2009, 15:57)

не понял мысли - смысл прерывания по кнопке чтоб порт оставался не тронутым
Представьте, что будет, если выход уже включился, а Вы жмете кнопку. Ведь выход не сбросится, пока не выполнится прерывание таймера, то есть, нажатия кнопки будут продлевать до бесконечности как выключенное, так и включенное состояние выхода.
И непонятно как у Вас 1В на входе и что там за схема. Обычно вход кнопки подтягивают резистором к питанию, а саму кнопку вешают на землю. Пусть у Вас наоборот - но все равно не должно быть 1В.
По поводу инициализации. Советую Вам явно инициализировать все переменные и значения портов всех регистров, не опираясь на значения по умолчанию. Также желательно знать, что происходит между reset и входом в main.
В начале программы странно писать DDRB|=0x04; Если это не первая строка в main, и там есть еще какие-то вызовы функций, через год Вам самому придется прочитать код сверху донизу, чтобы понять, что ее никто до этого не менял. Напишите в начале PORTB=0x00; DDRB=0x04; и т.д.
Сообщение отредактировал Sergey'F - Aug 11 2009, 13:25