📄 alarm-v3.c
字号:
else //如果检测到第1路为“0”
{
if(HI_TIME[5]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b5 = 0; //更新第6路输出状态为低电平
if(InFlag.oneBit.b5) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b5 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[5]>200)
{
if(!RelayFlag.oneBit.b5)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b5 = 1; //更新第6路输出状态为高电平
if(!InFlag.oneBit.b5) //如果为0,则为第一次报警
{
InFlag.oneBit.b5 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[6]>=45 && FRE_CONT[6]<=65)
{
if(!RelayFlag.oneBit.b6)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b6 = 1; //更新第7路输出状态为高电平
if(!InFlag.oneBit.b6) //如果为0,则为第一次报警
{
InFlag.oneBit.b6 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[6]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b6 = 0; //更新第7路输出状态为低电平
if(InFlag.oneBit.b6) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b6 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[6]>200)
{
if(!RelayFlag.oneBit.b6)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b6 = 1; //更新第7路输出状态为高电平
if(!InFlag.oneBit.b6) //如果为0,则为第一次报警
{
InFlag.oneBit.b6 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[7]>=45 && FRE_CONT[7]<=65)
{
if(!RelayFlag.oneBit.b7)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b7 = 1; //更新第8路输出状态为高电平
if(!InFlag.oneBit.b7) //如果为0,则为第一次报警
{
InFlag.oneBit.b7 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[7]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b7 = 0; //更新第8路输出状态为低电平
if(InFlag.oneBit.b7) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b7 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[7]>200)
{
if(!RelayFlag.oneBit.b7)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b7 = 1; //更新第8路输出状态为高电平
if(!InFlag.oneBit.b7) //如果为0,则为第一次报警
{
InFlag.oneBit.b7 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[8]>=45 && FRE_CONT[8]<=65)
{
if(!RelayFlag.oneBit.b8)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b8 = 1; //更新第9路输出状态为高电平
if(!InFlag.oneBit.b8) //如果为0,则为第一次报警
{
InFlag.oneBit.b8 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[8]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b8 = 0; //更新第9路输出状态为低电平
if(InFlag.oneBit.b8) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b8 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[8]>200)
{
if(!RelayFlag.oneBit.b8)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b8 = 1; //更新第9路输出状态为高电平
if(!InFlag.oneBit.b8) //如果为0,则为第一次报警
{
InFlag.oneBit.b8 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[9]>=45 && FRE_CONT[9]<=65)
{
if(!RelayFlag.oneBit.b9)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b9 = 1; //更新第10路输出状态为高电平
if(!InFlag.oneBit.b9) //如果为0,则为第一次报警
{
InFlag.oneBit.b9 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第9路为“0”
{
if(HI_TIME[9]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b9 = 0; //更新第10路输出状态为低电平
if(InFlag.oneBit.b9) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b9 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[9]>200)
{
if(!RelayFlag.oneBit.b9)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b9 = 1; //更新第10路输出状态为高电平
if(!InFlag.oneBit.b9) //如果为0,则为第一次报警
{
InFlag.oneBit.b9 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[10]>=45 && FRE_CONT[10]<=65)
{
if(!RelayFlag.oneBit.b10)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b10 = 1; //更新第11路输出状态为高电平
if(!InFlag.oneBit.b10) //如果为0,则为第一次报警
{
InFlag.oneBit.b10 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第11路为“0”
{
if(HI_TIME[10]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b10 = 0; //更新第11路输出状态为低电平
if(InFlag.oneBit.b10) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b10 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[10]>200)
{
if(!RelayFlag.oneBit.b10)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b10 = 1; //更新第11路输出状态为高电平
if(!InFlag.oneBit.b10) //如果为0,则为第一次报警
{
InFlag.oneBit.b10 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[11]>=45 && FRE_CONT[11]<=65)
{
if(!RelayFlag.oneBit.b11)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b11 = 1; //更新第12路输出状态为高电平
if(!InFlag.oneBit.b11) //如果为0,则为第一次报警
{
InFlag.oneBit.b11 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[11]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b11 = 0; //更新第12路输出状态为低电平
if(InFlag.oneBit.b11) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b11 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[11]>200)
{
if(!RelayFlag.oneBit.b11)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b11 = 1; //更新第12路输出状态为高电平
if(!InFlag.oneBit.b11) //如果为0,则为第一次报警
{
InFlag.oneBit.b11 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[12]>=45 && FRE_CONT[12]<=65)
{
if(!RelayFlag.oneBit.b12)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b12 = 1; //更新第13路输出状态为高电平
if(!InFlag.oneBit.b12) //如果为0,则为第一次报警
{
InFlag.oneBit.b12 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[12]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b12 = 0; //更新第13路输出状态为低电平
if(InFlag.oneBit.b12) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b12 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[12]>200)
{
if(!RelayFlag.oneBit.b12)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b12 = 1; //更新第13路输出状态为高电平
if(!InFlag.oneBit.b12) //如果为0,则为第一次报警
{
InFlag.oneBit.b12 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[13]>=45 && FRE_CONT[13]<=65)
{
if(!RelayFlag.oneBit.b13)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b13 = 1; //更新第14路输出状态为高电平
if(!InFlag.oneBit.b13) //如果为0,则为第一次报警
{
InFlag.oneBit.b13 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[13]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b13 = 0; //更新第14路输出状态为低电平
if(InFlag.oneBit.b13) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b13 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[13]>200)
{
if(!RelayFlag.oneBit.b13)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b13 = 1; //更新第14路输出状态为高电平
if(!InFlag.oneBit.b13) //如果为0,则为第一次报警
{
InFlag.oneBit.b13 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[14]>=45 && FRE_CONT[14]<=65)
{
if(!RelayFlag.oneBit.b14)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b14 = 1; //更新第15路输出状态为高电平
if(!InFlag.oneBit.b14) //如果为0,则为第一次报警
{
InFlag.oneBit.b14 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[14]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b14 = 0; //更新第15路输出状态为低电平
if(InFlag.oneBit.b14) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b14 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[14]>200)
{
if(!RelayFlag.oneBit.b14)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b14 = 1; //更新第15路输出状态为高电平
if(!InFlag.oneBit.b14) //如果为0,则为第一次报警
{
InFlag.oneBit.b14 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[15]>=45 && FRE_CONT[15]<=65)
{
if(!RelayFlag.oneBit.b15)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b15 = 1; //更新第16路输出状态为高电平
if(!InFlag.oneBit.b15) //如果为0,则为第一次报警
{
InFlag.oneBit.b15 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[15]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b15 = 0; //更新第16路输出状态为低电平
if(InFlag.oneBit.b15) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b15 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[15]>200)
{
if(!RelayFlag.oneBit.b15)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b15 = 1; //更新第16路输出状态为高电平
if(!InFlag.oneBit.b15) //如果为0,则为第一次报警
{
InFlag.oneBit.b15 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for(q0=0;q0<16;q0++)
{
FRE_CONT[q0] = 0x00;
HI_TIME[q0] = 0x00;
LOW_TIME[q0] = 0x00;
}
}
/*****************************************************************************
功能:从74LS166读取8位数据
用法:
执行时间:Cycles:156 Time:156us
******************************************************************************/
unsigned int LS166_Write(void)
{
unsigned char loop;
unsigned char INPUT0,INPUT1;
unsigned int temp;
CLK=0;
CLKINH=0;
SH=1;
SH=0;
CLKINH=1;
SH=1; //载入数据
CLKINH=0;
INPUT0=0X00;
INPUT1=0X00;
temp = 0;
for(loop=8;loop>0;loop--)
{
CLK=0;
INPUT0<<=1; //左移一位
INPUT1<<=1;
SEROUT0_DIR = 1;
if(SEROUT_0)
{
INPUT0=INPUT0|0x01; //输入1
}
if(SEROUT_1)
{
INPUT1=INPUT1|0x01; //输入1
}
CLK=1;
}
temp = temp|INPUT0;
temp <<= 8; //左右8位
temp = temp|INPUT1; //将两个8位合并成16位
return temp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -