📄 alarm-v3.c
字号:
if(InTemp0.oneBit.b5) //上次检测到输入为高电平
{
HI_TIME[5]++; //高电平持续时间增加
if(!InTemp1.oneBit.b5) //当前输入状态为低电平
{
InTemp0.oneBit.b5 = 0;
FRE_CONT[5]++;
HI_TIME[5] = 0; //清0
}
}
else
{
LOW_TIME[5]++; //低电平持续时间增加
if(InTemp1.oneBit.b5) //当前输入状态为低电平
{
InTemp0.oneBit.b5 = 1;
FRE_CONT[5]++;
LOW_TIME[5] = 0; //清0
}
}
//-------------------------------------第7路----------------------------------//
if(InTemp0.oneBit.b6) //上次检测到输入为高电平
{
HI_TIME[6]++; //高电平持续时间增加
if(!InTemp1.oneBit.b6) //当前输入状态为低电平
{
InTemp0.oneBit.b6 = 0;
FRE_CONT[6]++;
HI_TIME[6] = 0; //清0
}
}
else
{
LOW_TIME[6]++; //低电平持续时间增加
if(InTemp1.oneBit.b6) //当前输入状态为低电平
{
InTemp0.oneBit.b6 = 1;
FRE_CONT[6]++;
LOW_TIME[6] = 0; //清0
}
}
//-------------------------------------第8路----------------------------------//
if(InTemp0.oneBit.b7) //上次检测到输入为高电平
{
HI_TIME[7]++; //高电平持续时间增加
if(!InTemp1.oneBit.b7) //当前输入状态为低电平
{
InTemp0.oneBit.b7 = 0;
FRE_CONT[7]++;
HI_TIME[7] = 0; //清0
}
}
else
{
LOW_TIME[7]++; //低电平持续时间增加
if(InTemp1.oneBit.b7) //当前输入状态为低电平
{
InTemp0.oneBit.b7 = 1;
FRE_CONT[7]++;
LOW_TIME[7] = 0; //清0
}
}
//-------------------------------------第9路----------------------------------//
if(InTemp0.oneBit.b8) //上次检测到输入为高电平
{
HI_TIME[8]++; //高电平持续时间增加
if(!InTemp1.oneBit.b8) //当前输入状态为低电平
{
InTemp0.oneBit.b8 = 0;
FRE_CONT[8]++;
HI_TIME[8] = 0; //清0
}
}
else
{
LOW_TIME[8]++; //低电平持续时间增加
if(InTemp1.oneBit.b8) //当前输入状态为低电平
{
InTemp0.oneBit.b8 = 1;
FRE_CONT[8]++;
LOW_TIME[8] = 0; //清0
}
}
//-------------------------------------第10路----------------------------------//
if(InTemp0.oneBit.b9) //上次检测到输入为高电平
{
HI_TIME[9]++; //高电平持续时间增加
if(!InTemp1.oneBit.b9) //当前输入状态为低电平
{
InTemp0.oneBit.b9 = 0;
FRE_CONT[9]++;
HI_TIME[9] = 0; //清0
}
}
else
{
LOW_TIME[9]++; //低电平持续时间增加
if(InTemp1.oneBit.b9) //当前输入状态为低电平
{
InTemp0.oneBit.b9= 1;
FRE_CONT[9]++;
LOW_TIME[9] = 0; //清0
}
}
//-------------------------------------第11路----------------------------------//
if(InTemp0.oneBit.b10) //上次检测到输入为高电平
{
HI_TIME[10]++; //高电平持续时间增加
if(!InTemp1.oneBit.b10) //当前输入状态为低电平
{
InTemp0.oneBit.b10 = 0;
FRE_CONT[10]++;
HI_TIME[10] = 0; //清0
}
}
else
{
LOW_TIME[10]++; //低电平持续时间增加
if(InTemp1.oneBit.b10) //当前输入状态为低电平
{
InTemp0.oneBit.b10 = 1;
FRE_CONT[10]++;
LOW_TIME[10] = 0; //清0
}
}
//-------------------------------------第12路----------------------------------//
if(InTemp0.oneBit.b11) //上次检测到输入为高电平
{
HI_TIME[11]++; //高电平持续时间增加
if(!InTemp1.oneBit.b11) //当前输入状态为低电平
{
InTemp0.oneBit.b11 = 0;
FRE_CONT[11]++;
HI_TIME[11] = 0; //清0
}
}
else
{
LOW_TIME[11]++; //低电平持续时间增加
if(InTemp1.oneBit.b11) //当前输入状态为低电平
{
InTemp0.oneBit.b11 = 1;
FRE_CONT[11]++;
LOW_TIME[11] = 0; //清0
}
}
//-------------------------------------第13路----------------------------------//
if(InTemp0.oneBit.b12) //上次检测到输入为高电平
{
HI_TIME[12]++; //高电平持续时间增加
if(!InTemp1.oneBit.b12) //当前输入状态为低电平
{
InTemp0.oneBit.b12 = 0;
FRE_CONT[12]++;
HI_TIME[12] = 0; //清0
}
}
else
{
LOW_TIME[12]++; //低电平持续时间增加
if(InTemp1.oneBit.b12) //当前输入状态为低电平
{
InTemp0.oneBit.b12 = 1;
FRE_CONT[12]++;
LOW_TIME[12] = 0; //清0
}
}
//-------------------------------------第14路----------------------------------//
if(InTemp0.oneBit.b13) //上次检测到输入为高电平
{
HI_TIME[13]++; //高电平持续时间增加
if(!InTemp1.oneBit.b13) //当前输入状态为低电平
{
InTemp0.oneBit.b13 = 0;
FRE_CONT[13]++;
HI_TIME[13] = 0; //清0
}
}
else
{
LOW_TIME[13]++; //低电平持续时间增加
if(InTemp1.oneBit.b13) //当前输入状态为低电平
{
InTemp0.oneBit.b13 = 1;
FRE_CONT[13]++;
LOW_TIME[13] = 0; //清0
}
}
//-------------------------------------第15路----------------------------------//
if(InTemp0.oneBit.b14) //上次检测到输入为高电平
{
HI_TIME[14]++; //高电平持续时间增加
if(!InTemp1.oneBit.b14) //当前输入状态为低电平
{
InTemp0.oneBit.b14 = 0;
FRE_CONT[14]++;
HI_TIME[14] = 0; //清0
}
}
else
{
LOW_TIME[14]++; //低电平持续时间增加
if(InTemp1.oneBit.b14) //当前输入状态为低电平
{
InTemp0.oneBit.b14 = 1;
FRE_CONT[14]++;
LOW_TIME[14] = 0; //清0
}
}
//-------------------------------------第16路----------------------------------//
if(InTemp0.oneBit.b15) //上次检测到输入为高电平
{
HI_TIME[15]++; //高电平持续时间增加
if(!InTemp1.oneBit.b15) //当前输入状态为低电平
{
InTemp0.oneBit.b15 = 0;
FRE_CONT[15]++;
HI_TIME[15] = 0; //清0
}
}
else
{
LOW_TIME[15]++; //低电平持续时间增加
if(InTemp1.oneBit.b15) //当前输入状态为低电平
{
InTemp0.oneBit.b15 = 1;
FRE_CONT[15]++;
LOW_TIME[15] = 0; //清0
}
}
}
/*****************************************************************************
功能:中断服务程序_定时器1,用于判断是否为45~65Hz的信号
用法:
******************************************************************************/
void Timer1_int2(void)
{
unsigned char q0;
if(FRE_CONT[0]>=45 && FRE_CONT[0]<=65)
{
if(!RelayFlag.oneBit.b0)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b0 = 1; //更新第1路输出状态为高电平
if(!InFlag.oneBit.b0) //如果为0,则为第一次报警
{
InFlag.oneBit.b0 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[0]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b0 = 0; //更新第1路输出状态为低电平
if(InFlag.oneBit.b0) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b0 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[0]>200)
{
if(!RelayFlag.oneBit.b0)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b0 = 1; //更新第1路输出状态为高电平
if(!InFlag.oneBit.b0) //如果为0,则为第一次报警
{
InFlag.oneBit.b0 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[1]>=45 && FRE_CONT[1]<=65)
{
if(!RelayFlag.oneBit.b1)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b1 = 1; //更新第2路输出状态为高电平
if(!InFlag.oneBit.b1) //如果为0,则为第一次报警
{
InFlag.oneBit.b1 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第1路为“0”
{
if(HI_TIME[1]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b1 = 0; //更新第2路输出状态为低电平
if(InFlag.oneBit.b1) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b1 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[1]>200)
{
if(!RelayFlag.oneBit.b1)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b1 = 1; //更新第2路输出状态为高电平
if(!InFlag.oneBit.b1) //如果为0,则为第一次报警
{
InFlag.oneBit.b1 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[2]>=45 && FRE_CONT[2]<=65)
{
if(!RelayFlag.oneBit.b2)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b2 = 1; //更新第3路输出状态为高电平
if(!InFlag.oneBit.b2) //如果为0,则为第一次报警
{
InFlag.oneBit.b2 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第3路为“0”
{
if(HI_TIME[2]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b2 = 0; //更新第3路输出状态为低电平
if(InFlag.oneBit.b2) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b2 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[2]>200)
{
if(!RelayFlag.oneBit.b2)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b2 = 1; //更新第3路输出状态为高电平
if(!InFlag.oneBit.b2) //如果为0,则为第一次报警
{
InFlag.oneBit.b2 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[3]>=45 && FRE_CONT[3]<=65)
{
if(!RelayFlag.oneBit.b3)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b3 = 1; //更新第4路输出状态为高电平
if(!InFlag.oneBit.b3) //如果为0,则为第一次报警
{
InFlag.oneBit.b3 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第4路为“0”
{
if(HI_TIME[3]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b3 = 0; //更新第4路输出状态为低电平
if(InFlag.oneBit.b3) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b3 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[3]>200)
{
if(!RelayFlag.oneBit.b3)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b3 = 1; //更新第4路输出状态为高电平
if(!InFlag.oneBit.b3) //如果为0,则为第一次报警
{
InFlag.oneBit.b3 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[4]>=45 && FRE_CONT[4]<=65)
{
if(!RelayFlag.oneBit.b4)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b4 = 1; //更新第5路输出状态为高电平
if(!InFlag.oneBit.b4) //如果为0,则为第一次报警
{
InFlag.oneBit.b4 = 1; //置“1”,表示已经报警一次
}
}
else //如果检测到第5路为“0”
{
if(HI_TIME[4]>200) //保持高电平400MS以上
{
RelayFlag.oneBit.b4 = 0; //更新第5路输出状态为低电平
if(InFlag.oneBit.b4) //断电后如再变为50~60HZ信号,则黄灯开
{
YellowLed.oneBit.b4 = 1; //输入信号由高变为低时,黄灯亮
}
}
if(LOW_TIME[4]>200)
{
if(!RelayFlag.oneBit.b4)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b4 = 1; //更新第5路输出状态为高电平
if(!InFlag.oneBit.b4) //如果为0,则为第一次报警
{
InFlag.oneBit.b4 = 1; //置“1”,表示已经报警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[5]>=45 && FRE_CONT[5]<=65)
{
if(!RelayFlag.oneBit.b5)
{
Flag.oneBit.b0 = 1; //开启声音报警
}
RelayFlag.oneBit.b5 = 1; //更新第6路输出状态为高电平
if(!InFlag.oneBit.b5) //如果为0,则为第一次报警
{
InFlag.oneBit.b5 = 1; //置“1”,表示已经报警一次
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -