Показать сообщение отдельно

  #6  
Старый 02.03.2008, 17:00
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
Cool

Текст программы, часть 3:
Код:
//***MAIN*******************************************************
main()
{Initial();
do{   unsigned int16 Temp_Time;                  //начало главного цикла цикла
   Stat_On=false;
   Stat_Off=false;
   Time=0;
   Temp_Time=0;

   // 10 секунд пауза перед постановкой на охрану
   do{   
      Temp_Time=Time;                        //секундный цикл
      do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();   //проверяем кнопку снятия
      }while(Time<(Temp_Time+100));
      output_high(Out_Lamp);                  //5 сек моргаем лампочкой
      if (Time>550) output_high(Out_Siren);      //еще 5 сек - лампой и сиреной
      Temp_Time=Time;                        //0.1секундный цикл
      do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();   //проверяем кнопку снятия
      }while(Time<(Temp_Time+10));
      output_low(Out_Lamp);
      output_low(Out_Siren);
   }while((Time<1000)&&!Stat_Off);               //конец паузы
   // попытка поставиться на охрану
   Stat_Dat1=Read_Dat1();                     //проверяем состояние датчиков
   Stat_Dat2=Read_Dat2();      
   if (Stat_Dat1&&Stat_Dat2&&!Stat_Off)         //если датчики в норме 
   {   do{      if (Stat_dat1) Stat_Dat1=Read_Dat1();   //и кнопку снятия не нажимали
            if (Stat_dat2) Stat_Dat2=Read_Dat2();   //ждем срабатывания датчиков
            delay_ms(900);
            output_high(Out_Led);            //подмигиваем светодиодом
            delay_ms(100);
            output_low(Out_Led);
      }while(Stat_dat1&&Stat_Dat2);            //один из датчиков сработал
      Time=0;
      do{                                 //перед тревогой пауза 10 сек
                                       //для нажатия кнопки "снять"
         Temp_Time=Time;                     //секундный цикл
         do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();   //проверяем кнопку снятия
         }while(Time<(Temp_Time+100));
         output_high(Out_Lamp);
         if (Time>=550) output_high(Out_Siren);
         delay_ms(100);
         output_low(Out_Lamp);
         output_low(Out_Siren);      
      }while((Time<1000)&&!Stat_Off);            
      while(!Stat_Off){                     // ТРЕВОГА
         output_high(Out_Lamp);
         output_High(Out_Siren);
         Temp_Time=Time;
         do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();
         }while(Time<(Temp_Time+50));
         output_low(Out_Lamp);
         output_low(Out_Siren);
         Temp_Time=Time;
         do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();
         }while(Time<(Temp_Time+50));                           
      }//конец тревоги
   }
   else                                 //при попытке установки на охрану
                                       //оказались разомкнуты датчики
                                       //или нажата кнопка "снять с охраны"
      while(!Stat_Off){   if (!Stat_Off) Stat_Off=Read_Sec_Off();
         output_high(Out_Lamp);
         output_high(Out_Siren);               //сигналим о неудавшейся постановке
         delay_ms(100);
         output_low(Out_Lamp);
         output_low(Out_Siren);
         delay_ms(400);                        
         }   
   // ожидание постановки на охрану
      output_high(Out_Led);                  //зажигаем светодиод         
      do{   if(!Stat_On) Stat_On=Read_Sec_On();      //и ждем команду постановки на охрану
      }while(!Stat_On);
      output_low(Out_Led);
}while(1); //главный цикл
}         //main
 
Ответить с цитированием