Даа... Проблемотично понять что надо, но попробуем Рассмотрим, например эту функцию
1 void varim()
2 {
3 if (temp1 == 0){
4 P17 = 0;
5 if ( metka1 > 2){ //(что тут не правильно нужно сделать задержку)
6 P15 = 0;
7 P14 = 0;
8 P13 = 0;
9 k = 10;
10 temp1 = 1;
11 metka1 =0;
12 }
13 }
14 }
Условие в пятой строчке не выполнится, если metka1 будет меньше либо равно 2. Задержки никакой нет. Если нужно, чтобы в этом месте программа остановилась до момента, пока metka1 не превысит заданное условие, то надо писать так:
void varim()
{
if (temp1 == 0){
P17 = 0;
while(metka1 <= 2); //Ожидание условия
P15 = 0;
P14 = 0;
P13 = 0;
k = 10;
temp1 = 1;
metka1 =0;
}
}
Естественно, надо объявлять переменные, используемые в прерывании и основной программе, как volatile. Пример:
volatile unsigned char metka1;