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

1В на входе - видимо это третье состояние такое(высоко импедансное) - формально по умолчанию 0 - а когда туда пишешь 0 то 0.15В показывает
Я бы не назвал это нормальной работой схемы. Советую разобраться со схемой снаружи и посмотреть схему порта.
Цитата(семен78 @ Aug 11 2009, 18:09)

про между ресет и main не понял
Как Вы считаете, кто делает инициализацию для объявления int c = 0, которое у Вас раньше было? Какой-то код. И если Вы хотите написать надежную программу, надо знать, какой код и как исполняется между адресом сброса и Вашим C-шным main. Это не относится к Вашей проблеме сейчас, но если уж это ветка для начинающих, надо приучаться к определенному стилю проектирования.
Я бы немного по другому упорядочил операторы:
CODE
ISR(INT0_vect){TCNT1=65500;}
ISR(TIMER1_OVF_vect){TCNT1=65500; PORTB^=1<<3;}
main()
{
//конфигурация тактового импульса
CLKPR = 0x80; //разрешаем запись делителя
CLKPR = 0x08; //делитель 256
//по-хорошему, здесь надо подождать T1+T2 для смены частоты
//конфигурация портов
PORTB=0x00;
DDRB=0x08;
PORTD=0x00;
DDRD=0x00;
//конфигурация таймера 1
TCCR1B=0x00; //отключить таймер
TCNT1=65500; //начальное значение для делителя
TCCR1A=0x00; //Normal mode
TCCR1B=0x05; //деление на 1024
TIFR=0x80; //сбрасываем флаг прерывания Timer 1 Overflow
TIMSK=0x80; //разрешаем прерывание Timer 1 Overflow
//прерывания от кнопок
MCUCR=0x03; //прерывание от Int0 по фронту
EIFR=0x40; //сбрасываем флаг прерывания Int0
GIMSK=0x40; //разрешаем прерывание от Int0
//разрешаем прерывания
asm("sei");
while(1);
}
Но, вообще, я бы сделал:
1) Опрос кнопки по 0 (снаружи подтягивающий резистор, или, задействовать встроенный Pullup на ножке).
2) Детектировать встроенным модулем Capture