⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alarm-v3.c

📁 本程序为检测16路输入45~65HZ的信号
💻 C
📖 第 1 页 / 共 4 页
字号:
	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 + -