никак не въеду:
таймер Т1 на тини2313. прерывание при совпадении дает мне счетчик времени.
использую флаг от прерывания для отсчета необходимых пауз. на паузе зависает.
как еще можно сделать паузу чтоб она не мешала ничему?
unsigned char x=0;
unsigned char y=0;
unsigned char z=0;
unsigned char N=0;
Code
//***вариант первый
//флаг1 инвертируется каждое прерывание от таймера
//число N задаю по ходу программы дл отработки пауз
//разной длительности
void wait(void)
{
z=N; //назначаю кол-во прерываний N для отсчета
x=flag1; //начальное значение х
y=0; //вспомагательная переменная
if (y<z) //если y<z
{
while (x=flag1){}; //проверяю когда изменится flag1, т.е. произойдет прерывание
//пока флаг не изм. крутится пустой цикл
y=y+1; //как только flag1 изм., то инкремент y
}
else
{
N=0; //если y=z, то переход к следующей функции
};
}
//******** или вариант второй
void wait(void)
{
x=flag1;
y=0;
z=N;
m1:
if (y<z)
{
if (x==~flag1) {y=y=1;x=flag1;
}
else
{
goto m1;
};
};
}
//********третий вариант
void wait(void)
{
z=N; //назначаю кол-во прерываний N для отсчета
x=flag1; //начальное значение х
y=0;
if (y<z) //если y<z
{
while (x=flag1){}; //проверяю когда изменится flag1, т.е. произойдет прерывание
//пока флаг не изм. крутится пустой цикл
y=y+1; //как только flag1 изм., то инкремент y
}
else
{
N=0; //если y=z, то переход к следующей функции
};
}