
02.03.2008, 17:00
|
|
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме: 1260519
Репутация:
298
|
|
Текст программы, часть 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
|
|
|