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

📄 channelstatus.c

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 C
字号:
//*******************************************************************************
//Copyright (c) 2007,派利斯电子(北京)有限公司 硬件部
//文件名称: Channelstatus.c
//摘    要: 本文件主要包含PT2060程序中间隙电压,电源电压和OK状态等的操作
//当前版本: D-1 
//作    者:  佟文杰
//完成日期: 4/16/2007
//修 改 人:
//修改原因:
//修改日期:
//*******************************************************************************
#define CHANNELSTATUS_C
#include "channelstatus.h"
xdata struct Channel ChStatusModule;
//--------------------------------------------------------------
//函数名称:void SetGapLow(unsigned char uchChannel, int iGapLow)
//功    能:将间隙电压低限设置到通道模块中
//输入参数:通道号,间隙电压下限
//返    回:无
//完成日期:4/13/2007
//--------------------------------------------------------------
void SetGapLow(unsigned char uchChannel, int iGapLow)
{
	ChStatusModule.iGAPLow[uchChannel - 1] = iGapLow;    
}

//----------------------------------------------------------------
//函数名称:void SetGapHigh(unsigned char uchChannel, int iGapHigh)
//功    能:将间隙电压高限设置到通道模块
//输入参数:通道号,间隙电压上限
//返    回:无
//完成日期:4/13/2007
//----------------------------------------------------------------
void SetGapHigh(unsigned char uchChannel, int iGapHigh)//初始化时设置
{
	ChStatusModule.iGAPHigh[uchChannel - 1] = iGapHigh;  
}

//------------------------------------------------------------------
//函数名称:void SetGapVoltChannel(unsigned char uchChannel, int iGapVolt)
//功    能:将间隙电压设置到通道模块
//输入参数:通道号,间隙电压
//返    回:无
//完成日期:4/13/2007
//------------------------------------------------------------------
void SetGapVoltChannel(unsigned char uchChannel, int iGapVolt)
{
	ChStatusModule.iGAPVoltage[uchChannel - 1] = iGapVolt;
}

//------------------------------------------------------------------
//函数名称:void SetEnableStatusChannel(unsigned char uchChannel,unsigned char uchEnableFlag)
//功    能:设置通道是否工作到通道模块
//输入参数:通道号,是否工作状态
//返    回:无
//完成日期:4/13/2007
//------------------------------------------------------------------
void SetEnableStatusChannel(unsigned char uchChannel,unsigned char uchEnableFlag)
{
	ChStatusModule.uchEnableStatus[uchChannel - 1] = uchEnableFlag;
}

//------------------------------------------------------------------
//函数名称:void SetChTypeChannel(unsigned char uchChannel, unsigned char uchChannelType)
//功    能:将通道类型设置到通道状态模块
//输入参数:通道号,通道类型
//返    回:无
//------------------------------------------------------------------
void SetChTypeChannel(unsigned char uchChannel, unsigned char uchChannelType)
{
	ChStatusModule.uchChType[uchChannel - 1] = uchChannelType;
}

//------------------------------------------------------------------
//函数名称:void JudgeChannelGapstatus(unsigned char uchChannel)
//功    能:判断通道间隙电压的状态
//输入参数:通道号
//返    回:无
//完成日期:4/13/2007
//------------------------------------------------------------------
void JudgeChannelGapstatus(unsigned char uchChannel)  //乘以100和大于、小于看实际情况
{
	if (ChStatusModule.uchEnableStatus[uchChannel - 1] == 1)
	{			
		if ((ChStatusModule.iGAPVoltage[uchChannel - 1] <= ChStatusModule.iGAPHigh[uchChannel - 1])
			&& (ChStatusModule.iGAPVoltage[uchChannel - 1] >= ChStatusModule.iGAPLow[uchChannel - 1]))
		{
			ChStatusModule.uchGapStatus[uchChannel - 1] = 0;	//GAP  OK
		}
		else if (ChStatusModule.iGAPVoltage[uchChannel - 1] > ChStatusModule.iGAPHigh[uchChannel - 1]) 
		{
			ChStatusModule.uchGapStatus[uchChannel - 1] = 2;	 //GAP高报警
		}  
		else if (ChStatusModule.iGAPVoltage[uchChannel - 1] < ChStatusModule.iGAPLow[uchChannel - 1])
		{
			ChStatusModule.uchGapStatus[uchChannel - 1] = 1;	 //GAP低报警
		}
	}
	else if (ChStatusModule.uchEnableStatus[uchChannel - 1] == 0)
	{
		ChStatusModule.uchGapStatus[uchChannel - 1] = 0;	//当Disable掉通道后,通道状态为GAP  OK
	}
}

//------------------------------------------------------------------
//函数名称:void JudgeChannelOKstatus(unsigned char uchChannel)
//功    能:判断通道OK的状态
//输入参数:通道号
//返    回:无
//完成日期:4/13/2007
//------------------------------------------------------------------
void JudgeChannelOKstatus(unsigned char uchChannel)
{	
	if (ChStatusModule.uchGapStatus[uchChannel - 1] == 0) 
	{
        ChStatusModule.uchOKStatus[uchChannel - 1]  = 0;
	}
	else if (ChStatusModule.uchGapStatus[uchChannel - 1] == 1)
	{
		ChStatusModule.uchOKStatus[uchChannel - 1]	= 1;
	}    
    else if (ChStatusModule.uchGapStatus[uchChannel - 1] == 2)
    {
	    ChStatusModule.uchOKStatus[uchChannel - 1]	= 2;
	}
}

//------------------------------------------------------------------
//函数名称:void ProcessChannelGaps(unsigned char uchChannel)
//功    能:处理通道OK状态
//输入参数:通道号
//返    回:无
//完成日期:4/13/2007
//------------------------------------------------------------------
void ProcessChannelGaps(unsigned char uchChannel)
{
	static unsigned char xdata s_uchCountData = 0;
	
	JudgeChannelGapstatus(uchChannel);
	JudgeChannelOKstatus(uchChannel);

	SetGapStatusMain(uchChannel, ChStatusModule.uchGapStatus[uchChannel - 1]);

	if (ChStatusModule.uchChType[0] == 22)
	{
		SetChannelOkStatusMain(uchChannel,(ChStatusModule.uchOKStatus[0] || ChStatusModule.uchOKStatus[1]));
	}
	else
	{
		SetChannelOkStatusMain(uchChannel,ChStatusModule.uchOKStatus[uchChannel - 1]);
	}


	SetSystemOkStatusMain(ChStatusModule.uchOKStatus[1] || ChStatusModule.uchOKStatus[0]);

	s_uchCountData++;
	if (s_uchCountData >= 250)
	{
		JudgePowerStatus();
		SetPowerStatusMain(ChStatusModule.uchPowerStatus);
		s_uchCountData = 0;		//不要每圈程序都执行电源检测,10圈检测电源一次
	}		
}

//------------------------------------------------------------------
//函数名称:void InitChannelParaVariable(void)
//功    能:初始化通道状态模块的参数
//输入参数:无
//返    回:无
//完成日期:4/13/2007
//------------------------------------------------------------------
void InitChannelParaVariable(void)
{
 	unsigned char xdata i;

	for (i=0; i<2; i++)
	{
		ChStatusModule.uchOKStatus[i] = 0;
		ChStatusModule.uchGapStatus[i] = 0;
	}
}

//-----------------------------------------------------------------------
//函数名称:void JudgePowerStatus(void)
//功    能:测试电源的状态
//输入参数:无
//返    回:无
//完成日期:4/16/2007
//-----------------------------------------------------------------------
void JudgePowerStatus(void)
{
	xdata unsigned char uchTempVariable;

    ChStatusModule.uchPowerNumber++;
	if (ChStatusModule.uchPowerNumber == 1)
	{
		uchTempVariable = HWTestSystemVoltage(0x00);
		if ((uchTempVariable < VOL_CHANNEL1_H) && (uchTempVariable > VOL_CHANNEL1_L))
		{
			ChStatusModule.uchVol_Channel1 = 0;
		}
		else 
		{
			ChStatusModule.uchVol_Channel1 = 1;
		}
	}
	else if (ChStatusModule.uchPowerNumber == 2)
	{
		uchTempVariable = HWTestSystemVoltage(0x01);
	    if ((uchTempVariable < VOL_CHANNEL2_H) && (uchTempVariable > VOL_CHANNEL2_L))
		{
			ChStatusModule.uchVol_Channel2 = 0;
		}
		else 
		{
			ChStatusModule.uchVol_Channel2 = 1;
		}

	}
	else if (ChStatusModule.uchPowerNumber == 3)
	{
		uchTempVariable = HWTestSystemVoltage(0x02);
	    if ((uchTempVariable < VOL_CHANNEL3_H) && (uchTempVariable > VOL_CHANNEL3_L))
		{
			ChStatusModule.uchVol_Channel3 = 0;
		}
		else 
		{
			ChStatusModule.uchVol_Channel3 = 1;
		}
	}
	else if (ChStatusModule.uchPowerNumber == 4)
	{
		uchTempVariable = HWTestSystemVoltage(0x03);
	    if ((uchTempVariable < VOL_CHANNEL4_H) && (uchTempVariable > VOL_CHANNEL4_L))
		{
			ChStatusModule.uchVol_Channel4 = 0;
		}
		else 
	    {
			ChStatusModule.uchVol_Channel4 = 1;
		}
	}
	else if (ChStatusModule.uchPowerNumber == 5)
	{
		uchTempVariable = HWTestSystemVoltage(0x04);
	    if ((uchTempVariable < VOL_CHANNEL5_H) && (uchTempVariable > VOL_CHANNEL5_L))
		{
			ChStatusModule.uchVol_Channel5 = 0;
		}
		else 
	    {
			ChStatusModule.uchVol_Channel5 = 1;
		}
	
	}
	else if (ChStatusModule.uchPowerNumber == 6)
	{
		uchTempVariable = HWTestSystemVoltage(0x06);
	    if ((uchTempVariable < VOL_CHANNEL7_H) && (uchTempVariable > VOL_CHANNEL7_L))
		{
			ChStatusModule.uchVol_Channel7 = 0;
		}
		else 
		{
			ChStatusModule.uchVol_Channel7 = 1;
		}
	}
	else if (ChStatusModule.uchPowerNumber == 7)
	{
		uchTempVariable = HWTestSystemVoltage(0x07);
	    if ((uchTempVariable < VOL_CHANNEL8_H) && (uchTempVariable > VOL_CHANNEL8_L))
		{
			ChStatusModule.uchVol_Channel8 = 0;
		}
		else 
	    {
			ChStatusModule.uchVol_Channel8 = 1;
		}
	}
	else
	{
		ChStatusModule.uchPowerNumber = 0;
	}

	ChStatusModule.uchVol_Channel = ChStatusModule.uchVol_Channel1 + (ChStatusModule.uchVol_Channel2 << 1) + (ChStatusModule.uchVol_Channel3 << 2) + (ChStatusModule.uchVol_Channel4 << 3)
					   + (ChStatusModule.uchVol_Channel5 << 4) + (ChStatusModule.uchVol_Channel7 << 5) + (ChStatusModule.uchVol_Channel8 << 6);
   
	ChStatusModule.uchPowerStatus = ChStatusModule.uchVol_Channel;

	FeedDog();
}

//-----------------------------------------------------------------------
//函数名称:void InitChannelModulePara(void)
//功    能:初始化通道模块参数
//输入参数:无
//返    回:无
//完成日期:4/16/2007
//-----------------------------------------------------------------------
void InitChannelModulePara(void)
{
	ChStatusModule.uchPowerStatus = 0;
	ChStatusModule.uchPowerNumber = 0;

	ChStatusModule.uchVol_Channel = 0;
	ChStatusModule.uchVol_Channel1 = 0;
	ChStatusModule.uchVol_Channel2 = 0;
	ChStatusModule.uchVol_Channel3 = 0;
	ChStatusModule.uchVol_Channel4 = 0;
	ChStatusModule.uchVol_Channel5 = 0;
	ChStatusModule.uchVol_Channel7 = 0;
	ChStatusModule.uchVol_Channel8 = 0;

}









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -