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

📄 wmalrpro.c

📁 AVRMEG32编写的一个项目代码,里面包含一般应用的模块.
💻 C
字号:
#include "includes.h"


//判断告警
u08 CheckHappen_FLAG(void)
{
	u08 i;
    u08 b_FLAG = 0 ;//无告警或告警恢复
	if((inputReadWord() & 0XFFFF) == 0XFFFF)//判断有无告警发生
		for(i = 0 ; i < MAXALRREC;i++)//无告警发生,判断是否还有没恢复告警
		{
		     if(xRAlrData[i].DCALRDelete_FLAG!=0XAA)
		     {
				 b_FLAG = 1 ;
				 break;
			 }
	    }
	 else
		 b_FLAG = 1;
	 return(b_FLAG);
}

//解析告警
void dctype1_da(void)
{
	 u08 ucStart;//是否启用
	 u16 ucSample;
	 u16 ucTmp;
	 if(!CheckHappen_FLAG())
		 return;//无告警发生,或告警全部已恢复
	 ucSample=inputReadWord();
	 ucSample=~ucSample;
  	 //列告警
	 ucTmp=ucSample&0x0001;
     if (ucTmp)
         handleAlrBit(SAMTYPE_LieGJ);  //有告警
     else
         handleOkBit(SAMTYPE_LieGJ);	 //无告警
  	 ucSample>>=1;
	 //烟雾
	 ucTmp=ucSample&0x0001;
	 if (ucTmp)
		handleAlrBit(SAMTYPE_YanWu);
     else
		handleOkBit(SAMTYPE_YanWu);
   	 ucSample>>=1;
	 //进水
	 ucTmp=ucSample&0x0001;
	 if (ucTmp)
		handleAlrBit(SAMTYPE_JinShui);
	 else
		handleOkBit(SAMTYPE_JinShui);
	 ucSample>>=1;
//门禁1
	ucStart = 0x07;//门禁开启路数
	ucTmp=ucStart&0x01;
	if (ucTmp)
	{
	    ucTmp=ucSample&0x0001;
	    if (ucTmp)
             handleopendorBit(SAMTYPE_MENGJIN1,1);//开
	    else
	         handledorBit(SAMTYPE_MENGJIN1,0);//关
	}
    else
	    xRdorData[SAMTYPE_MENGJIN1].dorValue = SAMTYPE_MENGJIN_UNUSE;//门禁一未启用
    ucStart>>=1;
 	ucSample>>=1;
//门禁2
	ucTmp=ucStart&0x01;
	if (ucTmp)
	{
	    ucTmp=ucSample&0x0001;
	    if (ucTmp)
		    handleopendorBit(SAMTYPE_MENGJIN2,1);//开
	    else
		    handledorBit(SAMTYPE_MENGJIN2,0);//关
	}
    else
	    xRdorData[SAMTYPE_MENGJIN2].dorValue = SAMTYPE_MENGJIN_UNUSE;//门禁二未启用
	ucStart>>=1;
   	ucSample>>=1;
//门禁3
	ucTmp=ucStart&0x01;
    if (ucTmp)
	{
	    ucTmp=ucSample&0x0001;
	    if (ucTmp)
		    handleopendorBit(SAMTYPE_MENGJIN3,1);//开
	    else
		    handledorBit(SAMTYPE_MENGJIN3,0);//关
	}
	else
        xRdorData[SAMTYPE_MENGJIN3].dorValue = SAMTYPE_MENGJIN_UNUSE;//门禁三未启用
//	ucStart>>=1;
	ucSample>>=3;
//空开1
	ucTmp=ucSample&0x0001;
	if (ucTmp)
		handleAlrBit(SAMTYPE_KK1);
	else
		handleOkBit(SAMTYPE_KK1);
	ucSample>>=1;
//空开2
	ucTmp=ucSample&0x0001;
    if (ucTmp)
        handleAlrBit(SAMTYPE_KK2);
	else
	    handleOkBit(SAMTYPE_KK2);
	ucSample>>=1;
//空开3
    ucTmp=ucSample&0x01;
    if (ucTmp)
        handleAlrBit(SAMTYPE_KK3);
    else
        handleOkBit(SAMTYPE_KK3);
    ucSample>>=1;
//空开4
    ucTmp=ucSample&0x0001;
	if (ucTmp)
        handleAlrBit(SAMTYPE_KK4);
    else
        handleOkBit(SAMTYPE_KK4);
	ucSample>>=1;
//防雷
    ucTmp=ucSample&0x0001;
    if (ucTmp)
        handleAlrBit(SAMTYPE_FANGLEI);
    else
        handleOkBit(SAMTYPE_FANGLEI);
	ucSample>>=1;
//蓄电池电压过低空开
    ucTmp=ucSample&0x0001;
    if (ucTmp)
		handleAlrBit(SAMTYPE_KK7_XDCLOWER);
    else
        handleOkBit(SAMTYPE_KK7_XDCLOWER);
	ucSample>>=1;
//空开6
    ucTmp=ucSample&0x0001;
    if (ucTmp)
        handleAlrBit(SAMTYPE_KK6);
    else
        handleOkBit(SAMTYPE_KK6);
//空开5
    ucTmp=ucSample&0x0001;
    if (ucTmp)
        handleAlrBit(SAMTYPE_KK5);
    else
        handleOkBit(SAMTYPE_KK5);
}

//温湿度
void wenshidu_da(void)
{
     u08 ucStart;
	 u08 ucTmp;
     ucStart = 0x07;//?开启路数
	 ucTmp=ucStart&0x01;//判断是否起用
	if (ucTmp)
//选择第一路温湿度
    {
        xRwenshiData[SAMTYPE_WENSHIDU1].DCwenshiduuse_FLAG=0x00;//起用
		temperature(SAMTYPE_WENSHIDU1);
        do_temperature_humidity(SAMTYPE_WENSHIDU1);
    }
  	else
		xRwenshiData[SAMTYPE_WENSHIDU1].DCwenshiduuse_FLAG=0xAA;//温湿度未启用标志
    ucStart>>=1;
    ucTmp=ucStart&0x01;//判断是否起用
    if (ucTmp)
//选择第二路温湿度
    {
        xRwenshiData[SAMTYPE_WENSHIDU2].DCwenshiduuse_FLAG=0x00;//起用
		temperature(SAMTYPE_WENSHIDU2);
	    do_temperature_humidity(SAMTYPE_WENSHIDU2);
    }
    else
        xRwenshiData[SAMTYPE_WENSHIDU2].DCwenshiduuse_FLAG=0xAA;//温湿度未启用标志
//选择第三路温湿度
    ucStart>>=1;
    ucTmp=ucStart&0x01;//判断是否起用
    if (ucTmp)
//选择第二路温湿度
    {
        xRwenshiData[SAMTYPE_WENSHIDU3].DCwenshiduuse_FLAG=0x00;//起用
		temperature(SAMTYPE_WENSHIDU3);
	    do_temperature_humidity(SAMTYPE_WENSHIDU3);
    }
    else
	    xRwenshiData[SAMTYPE_WENSHIDU3].DCwenshiduuse_FLAG=0xAA;//温湿度未启用标志
}

void wenshidu_FLAG(void)
{//清温湿度灵敏度标志
    xRwenshiData[SAMTYPE_WENSHIDU1].DCwenshiDelete_FLAG= 0;
    xRwenshiData[SAMTYPE_WENSHIDU2].DCwenshiDelete_FLAG= 0;
    xRwenshiData[SAMTYPE_WENSHIDU3].DCwenshiDelete_FLAG= 0;
}

void DCAC_V_A(void)
{
     u16 humidity[1];
	 u16 simdata;
	 u08 ucStart;
	 u08 ucTmp;
     ucStart = 0x07;//?开启路数
	 ucTmp=ucStart&0x01;//判断是否起用
	if (ucTmp)
    {//选择48V电压
        xRDCACData[SAMTYPE_DCV].use_FLAG=0x00;//起用
		 V_48();//选择48V电压
        a2dStartConvert();
		_nop_();
    	_nop_();
        simdata=ad_result(do_a2d(),liangcheng_48_V );
        a2dOff();//关AD
        xRDCACData[SAMTYPE_DCV].Value = simdata%10;
        Display_8x8Int_data(48,7,xRDCACData[SAMTYPE_DCV].Value,1,0);
        xRDCACData[SAMTYPE_DCV].Value = simdata/10 ;
        Display_8x8Int_data(16,7,xRDCACData[SAMTYPE_DCV].Value,3,0);
    }
  	else
		xRDCACData[SAMTYPE_DCV].use_FLAG=0xAA;//未启用标志
    ucStart>>=1;
    ucTmp=ucStart&0x01;//判断是否起用
    if (ucTmp)
    {//选择48V电流
        xRDCACData[SAMTYPE_DCA].use_FLAG=0x00;//起用
	    A_48();
        a2dStartConvert();
		_nop_();
	    _nop_();
        simdata = ad_result_DCA(do_a2d() );//滤波处理函数do_a2d();
        a2dOff();//关AD
	//	#if 0
		xRDCACData[SAMTYPE_DCA].Value = simdata%100;
		if(xRDCACData[SAMTYPE_DCA].Value<10)
		{
	        Lcd_8x8Printf(104,7,PSTR("0"),0);
        	Display_8x8Int_data(112,7,xRDCACData[SAMTYPE_DCA].Value,1,0);
        }
		else
	       Display_8x8Int_data(104,7,xRDCACData[SAMTYPE_DCA].Value,2,0);
		   xRDCACData[SAMTYPE_DCA].Value = simdata/100;
		   if(xRDCACData[SAMTYPE_DCA].Value>15)
                xRDCACData[SAMTYPE_DCA].Value= xRDCACData[SAMTYPE_DCA].Value-1;//修正
           Display_8x8Int_data(80,7,xRDCACData[SAMTYPE_DCA].Value,2,0);
	//   #endif
	    humidity[0]=simdata ; //ad_result_DCA(do_a2d() );
        rprintf("\r\nTest humidity  :%d",humidity[0]);
      }
	  else
          xRDCACData[SAMTYPE_DCA].use_FLAG=0xAA;//未启用标志
      ucStart>>=1;
      ucTmp=ucStart&0x01;//判断是否起用
      if (ucTmp)
      {////选择220V电流
        xRDCACData[SAMTYPE_ACA].use_FLAG=0x00;//起用
	    A_220();
        a2dStartConvert();
		_nop_();
	    _nop_();
        simdata = ad_result(do_a2d() ,  liangcheng_220_A )+2;//滤波处理函数do_a2d();
        a2dOff();//关AD
		xRDCACData[SAMTYPE_ACA].Value = simdata%100;
		if(xRDCACData[SAMTYPE_ACA].Value<10)
		{
	        Lcd_8x8Printf(104,0,PSTR("0"),0);
        	Display_8x8Int_data(112,0,xRDCACData[SAMTYPE_ACA].Value,1,0);
        }
		else
		    Display_8x8Int_data(104,0,xRDCACData[SAMTYPE_ACA].Value,2,0);
            xRDCACData[SAMTYPE_ACA].Value = simdata/100;
            Display_8x8Int_data(80,0,xRDCACData[SAMTYPE_ACA].Value,2,0);
	  //  humidity[0]= ad_result(do_a2d() ,  liangcheng_220_A );
       // rprintf("\r\nTest humidity  :%d",humidity[0]);
      }
	 // else
          //xRDCACData[SAMTYPE_ACA].use_FLAG=0xAA;//未启用标志
}
//	ucTmp=uiNum%10;
//	disp_buffer[ucDigit-1-i]=ucTmp+0x30;
//	uiNum/=10;
//#define SAMTYPE_DCV    0//DCV
//#define SAMTYPE_DCA    1//DCA
//#define SAMTYPE_ACV    2//ACV
//#define SAMTYPE_ACA    3//ACA
//#define SAMTYPE_UNUSE  OxAA//未起用标志
//void Display_8x8Int_data(.......)
//struct DCACData xRDCACData[MAXOFENDATA];//4
//unsigned char use_FLAG//0xAA,未起用
//unsigned int  Value;//值
 //Lcd_8x8Printf(0,0,PSTR("AC"),0);
//	 Lcd_8x8Printf(24,0,PSTR("115.5V"),0);
//     Lcd_8x8Printf(72,0,PSTR("--"),0);
//     Lcd_8x8Printf(88,0,PSTR("999mA"),0);
//	 Lcd_8x8Printf(0,7,PSTR("DC"),0);
//     Lcd_8x8Printf(24,7,PSTR("43.5V"),0);
//     Lcd_8x8Printf(64,7,PSTR("--"),0);
 //    Lcd_8x8Printf(80,7,PSTR("999mA"),0);

⌨️ 快捷键说明

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