ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
2 мая
23278 Топик полностью
ShiphT (10.03.2005 13:26, просмотров: 1) ответил nm5 на Кто хорошо знает СИ подскажите начинающему
Даа... Проблемотично понять что надо, но попробуем Рассмотрим, например эту функцию
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;