Код: Выделить всё
#include <mega8>
#include <delay>
void main(void)
{
int c;
PORTD=0x02;
DDRD=0x01;
c=0;
while (1)
{
int i;
while(PIND.1==0) // считает количество замыканий
{ c++;
while(PIND.1==0) {};
delay_ms(60);
};
for (i=0; i<c; i++) //цикл индикации,
{ //светодиод мигает столько раз, сколько замкнута кнопка
PORTD.0=1;
delay_ms(200);
PORTD.0=0;
delay_ms(200);
};
c=0;
}
}
только кнопкой нужно клацать так чтобы между нажатиями незажегся светодиод иначе подсчет будет неверный а вобще тут наверное неверный алгоритм работы задуман
#include <mega8>
#include <delay>
эти строки должны писаться с буквой h
почемуто на форум вылаживаются подругому.
в твоих программах ты не пишиш могут вылазить ошибки покрайней мере у меня непроходит без той буквы.
Алгоритм работы такой клацаеш кнопкой довольно быстро программа подсчитывает нажатия перестаеш клацать она начинает моргать светодиодом.
delay_ms(60);- этой строчка нужно что бы программу удержать в цикле подсчета нажатия в период пока ты отпускаеш и нажимаеш кнопку после этой строчки программа проверяет нажата ли кнопка если да повтаряеться все заново если не нажата она вываливаеться с цикла
while(PIND.1==0) // считает количество замыканий
{ c++;
while(PIND.1==0) {};
delay_ms(50);
};
и переходит на индикацию твоих нажатий после чего обнуляет переменную С и все повторяеться.