Правильней эту задержку написать так
CODE:
n = n + 1;
if( n == 1000 ) /* изменяя число добиться желаемой задержки */
{
/* какие то действия */
n = 0;
}
zatmenie пишет:Я так понял длительность такой задержки зависит от тактовой частоты.
И да и нет. Тактовая частота имеет решающее значение, но время задержки так же зависит от общего объема кода и того как программа оптимизируется компилятором (CVAVR). Время задержки определяется опытным путем (путем проведения опыта) и при изменении кода или степени оптимизации программы компилятором, время задержки тоже изменится.
(Добавление)
Еще мысли по изменению кода
Было так
CODE:
while(PIND.0==0)
{
if(PIND.0==0) go(F);
wait0();
if(PIND.0==1) go(B);
wait0();
}
Попробовать сделать так
CODE:
wait0();
if(PIND.0==0) go(F);
else go(B);
|