Цитата(Сергей Борщ @ Dec 17 2007, 18:58)

Можно так, как вы описали - завести на счетный вход таймера. Такой вариант хорош, если импульсы формируются каким-либо датчиком, у которого отсутствует дребезг. Для кнопки не подходит, или надо как-то давить дребезг аппаратно. Можно таймер заставить генерить прерывания с периодом 10мс и в прерывании считывать состояние ножки, к которой подключена кнопка. Любая вменяемая кнопка имеет дребезг меньше 10мс. Дальше программно считать количество нажатий. Можно завести кнопку на вход прерывания, по нажатию кнопки будет генерится прерывание, в нем увеличиваем счетчик нажатий, запрещаем это прерывание на 10 мс. Чаще всего используется второй способ.
Спасибо все понял, но я еще до дребезга не дошел, я проверяю только в AVR studio, и выставляю через какое то время в PINB0 "1"-симулируя нажатие кнопки, а счета почему-то не происходит в таймере0.Вот код:
.include "m16def.inc"
.org 0
jmp reset
.org 0x26
jmp TAMER0_COMP
reset:
clr r16
ldi r16,low(RAMEND);
out spl,r16;
ldi r16,high(RAMEND);
out sph,r16;
ldi r16,255;
out DDRA,r16;
ldi r16,0;
out PORTA,r16;
ldi r16,0;
out DDRB,r16;
;;;;конфигурирование таймера
sei
ldi r16,5
out OCR0,r16
ldi r16,2;прерыв по совпад
out TIMSK,r16
ldi r16,14;по совпадению, вн генер
out TCCR0,r16
;;;задержка
delay:
ldi r19,20;
delay1:
ldi r17,100;
delay2:
ldi r18,200;
delay3:
dec r18;
brne delay3;
dec r17;
brne delay2;
dec r19;
brne delay1;
TAMER0_COMP:
ldi r16,255;
out PORTA,r16;
ldi r19,20;
delay7:
ldi r17,100;
delay8:
ldi r18,20;
delay9:
dec r18;
brne delay9;
dec r17;
brne delay8;
dec r19;
brne delay7;
jmp reset
;;;;задержка