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

📄 general.c

📁 一个流量控制仪器的源码
💻 C
📖 第 1 页 / 共 2 页
字号:

						
	 ucX_temp.x = ulRECFluxVMax_Today;
						
	//ulong 	ulRECFluxVelocityMax_Today;		记录的当天最大流速(Flux_PCA.C)
	fnWrite_DS1307RAM( DS1307RAMAddress0 + SystemTodayREC_V ,
						4,
						ucX_temp.c);
*/

}


/*******************************************************************
		Beep函数
函数原型: void fnBeep(uchar ucBeepState)
功能: 	设置蜂鸣器状态
        0       关
        1       开
******************************************************************/
void fnBeep(uchar ucBeepState)
{
	if(ucBeepState)
		//其它控制输出  蜂鸣器位输出
		ucCON03_Buf = fnBitSet( ucCON03_Buf , 4 );
	else
		//其它控制输出  蜂鸣器位关闭
		ucCON03_Buf = fnBitClr( ucCON03_Buf , 4 );		
	
	CON03 = ucCON03_Buf;
}


/*******************************************************************
		Alarm函数
函数原型: void fnAlarm(uchar ucAlarmState)
功能: 	设置报警器状态
        0       关
        1       开
******************************************************************/
void fnAlarm(uchar ucAlarmState)
{
	if(ucAlarmState)
		//其它控制输出  报警位输出
		ucCON03_Buf = fnBitSet( ucCON03_Buf , 0 );
	else
		//其它控制输出  报警位关闭
		ucCON03_Buf = fnBitClr( ucCON03_Buf , 0 );		
	
	CON03 = ucCON03_Buf;
}



/*******************************************************************
		初始化L2记录函数
函数原型: void fnInit_SystemRecord2();
功能:初始化L2记录函数
注意:  
		本函数由菜单PP6	6	系统记录数据清零   调用!
		本函数由L2读写函数调用(当发现记录内容有错误时!)

******************************************************************/
void fnInit_SystemRecord2()
{
		uchar ucTemp1;
		
		ucTemp1 = 0;
		
		//索引=0
		
		//写相应地址的数据--单字节
		//写指定地址,单字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
    fnWrite_Eeprom(LAD_L2_0,1,&ucTemp1);
    
    //所有记录标志清零	
    
    fnWrite_Eeprom(LAD_L2_1,1,&ucTemp1);	
	
		fnWrite_Eeprom(LAD_L2_2,1,&ucTemp1);	
		
		fnWrite_Eeprom(LAD_L2_3,1,&ucTemp1);	
		
		fnWrite_Eeprom(LAD_L2_4,1,&ucTemp1);	
		
		fnWrite_Eeprom(LAD_L2_5,1,&ucTemp1);	
		
		fnWrite_Eeprom(LAD_L2_6,1,&ucTemp1);	
		
		fnWrite_Eeprom(LAD_L2_7,1,&ucTemp1);	
		
		fnWrite_Eeprom(LAD_L2_8,1,&ucTemp1);	
}


/*******************************************************************
		写L2记录函数
函数原型: void fnWrite_SystemRecord2();
功能:写L2记录函数
注意:  
		当记录索引>8时,发现错误!报警!初始化L2记录。重新写入!
		写入uc8_SystemDateTime中的时间日期,以及系统触发变量 - ucSystemCouse。
		置有效标志 = 1。
******************************************************************/
void fnWrite_SystemRecord2()
{
	uchar ucTemp1,ucTemp2;
	
	//读索引
		//读相应地址的数据--单字节
		//读指定地址,单字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
   fnRead_Eeprom(LAD_L2_0,1,&ucTemp1);
   
   if(ucTemp1 == 0)
   {
   		ucTemp1 = 1;	
   }
   else
   if(ucTemp1 < 8)
   {
   		ucTemp1++;
   }
   else
   if(ucTemp1 == 8)
   {
   		ucTemp1 = 1;
   }
   else
   {
   		//发现错误!
   		
   		//报警!
   		
   		//初始化L2记录。
   		fnInit_SystemRecord2();
   		
   		ucTemp1 = 1;
   }

	ucTemp2 = 1;
	
	//写入索引
	//1字节		索引
	fnWrite_Eeprom(LAD_L2_0,1,&ucTemp1);
	
	//写入数据
	//6字节		时间日期
	fnWrite_Eeprom( (LAD_L2_0 + 8*ucTemp1) + 1,6,uc8_SystemDateTime+1);
	//1字节		系统触发变量 - ucSystemCouse
	fnWrite_Eeprom( (LAD_L2_0 + 8*ucTemp1) + 7,1,&ucSystemCouse);
	//1字节		记录标志置1
	fnWrite_Eeprom( (LAD_L2_0 + 8*ucTemp1)		,1,&ucTemp2);
	

}


/*******************************************************************
		读L2记录函数
函数原型: uchar fnRead_SystemRecord2(uchar ucRecordN, uchar *uc_Data);
功能:读L2记录函数
注意:  当记录索引>8时,发现错误!报警!初始化L2记录,返回0
				当读过程正常,返回1。
				ucRecordN的范围1-8,超过返回0
******************************************************************/
uchar fnRead_SystemRecord2(uchar ucRecordN, uchar *uc_Data)
{
	uchar ucTemp1;
	char cTemp2;
	
	//读索引
		//读相应地址的数据--单字节
		//读指定地址,单字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
   fnRead_Eeprom(LAD_L2_0,1,&ucTemp1);
   
   if(ucTemp1 == 0)
   {
   		return(0);
   }
   
   if(ucTemp1 > 8)
   {
   	  //发现错误!
   		
   		//报警!
   		
   		//初始化L2记录。
   		fnInit_SystemRecord2();
   	
   		return(0);
   } 
   
   if((ucRecordN>8)|(ucRecordN == 0))
   {
   		return(0);
   }
      
   cTemp2 = ucTemp1 - ucRecordN + 1;
   
   if(cTemp2<=0)
   	cTemp2 += 8;
   	
		//读数据 8字节
		//读相应地址的数据--8字节
		//读指定地址,8字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
   fnRead_Eeprom((LAD_L2_0 + 8 * cTemp2) ,8 ,uc_Data);
   
   if(uc_Data[0]==0)   
   	return(0);
   else
   	return(1);
   
}


/*******************************************************************
		初始化L3记录函数
函数原型: void fnInit_SystemRecord3(uchar i);
功能:初始化L3记录函数
注意:  
		本函数由菜单PP6	6	系统记录数据清零   调用!
******************************************************************/
void fnInit_SystemRecord3(uchar i)
{
		uchar ucTemp1;
		
		ucTemp1 = 0;
		
		////记录标志清零
		
		//写相应地址的数据--单字节
		//写指定地址,单字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
    fnWrite_Eeprom(LAD_L3_1 + (i - 1)*12,1,&ucTemp1);
	
}

/*******************************************************************
		写L3记录函数
函数原型: void fnWrite_SystemRecord3(uchar i, ulong ultemp);
功能: 	把当前时间和日期和流量,写入L3 – i记录,记录的有效标志=1。
注意:  
******************************************************************/
void fnWrite_SystemRecord3(uchar i, ulong ultemp)
{
	union{
        uchar c[4];
        ulong x;
  }ucX_temp;

		uchar ucTemp1;

		ucTemp1 = 1;
		
		ucX_temp.x = ultemp;
	
	//写入数据
	//6字节		当前时间日期
	fnWrite_Eeprom( LAD_L3_1 + (i - 1)*12  ,7,uc8_SystemDateTime);

	//1字节		记录标志置1
	fnWrite_Eeprom( LAD_L3_1 + (i - 1)*12	,1,&ucTemp1);

	//4字节		流速
	fnWrite_Eeprom( LAD_L3_1 + (i - 1)*12	+ 8,4,ucX_temp.c);
	
}

/*******************************************************************
		读L3记录函数
函数原型: ulong fnRead_SystemRecord3(uchar i, uchar *uc_Data);
功能: 	读距今第L3 – i记录。返回流量。
注意:  如果有效标志为0,流量=0,时间日期=0
******************************************************************/
ulong fnRead_SystemRecord3(uchar i, uchar *uc_Data)
{
	union{
        uchar c[4];
        ulong x;
  }ucX_temp;
  
  uchar ucTemp1;
  		
	//读记录标志置
		//读相应地址的数据--单字节
		//读指定地址,单字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
   fnRead_Eeprom(LAD_L3_1 + (i - 1)*12		,1,&ucTemp1);

	//如果有效标志为0,流量=0,时间日期=0
	if(ucTemp1 == 0)
	{
		uc_Data[0] = 0;
		
		return(0);
	}
	
	//6字节		时间日期
	fnRead_Eeprom( LAD_L3_1 + (i - 1)*12  ,8,uc_Data);

	//4字节		流速
	fnRead_Eeprom( LAD_L3_1 + (i - 1)*12 + 8,4,ucX_temp.c);	
	
	return(ucX_temp.x);
	
}


/*******************************************************************
		初始化L4记录函数
函数原型: void fnInit_SystemRecord4();
功能:初始化L4记录函数
注意:  
		本函数由菜单PP6系统记录数据清零   调用!
		本函数由L4读写函数调用(当发现记录内容有错误时!)

******************************************************************/
/*void fnInit_SystemRecord4()
{
		uchar ucTemp1;
		
		ucTemp1 = 0;
		
		//索引=0
		
		//写相应地址的数据--单字节
		//写指定地址,单字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
    fnWrite_Eeprom(LAD_L4_0,1,&ucTemp1);
    
    //所有记录标志清零	
    
    fnWrite_Eeprom(LAD_L4_1,1,&ucTemp1);	
	                      
		fnWrite_Eeprom(LAD_L4_2,1,&ucTemp1);	
		                    
		fnWrite_Eeprom(LAD_L4_3,1,&ucTemp1);	
		                    
		fnWrite_Eeprom(LAD_L4_4,1,&ucTemp1);	
		                    
		fnWrite_Eeprom(LAD_L4_5,1,&ucTemp1);	
		                    
		fnWrite_Eeprom(LAD_L4_6,1,&ucTemp1);	
		                    
		fnWrite_Eeprom(LAD_L4_7,1,&ucTemp1);	
	
}
*/



/*******************************************************************
		写L4记录函数
函数原型: void fnWrite_SystemRecord4(ulong ulFlux0,uchar *uc_Data);
功能:写L4记录函数
注意:  
		当记录索引>8时,发现错误!报警!初始化L2记录。重新写入!
		写入uc8_SystemDateTime中的时间日期,以及流量ulFlux0。
		置有效标志 = 1。
******************************************************************/
/*void fnWrite_SystemRecord4(ulong ulFlux0,uchar *uc_Data)
{
	uchar ucTemp1,ucTemp2;
	
	union{
        uchar c[4];
        ulong x;
  }ucX_temp;
  	
	//读索引
		//读相应地址的数据--单字节
		//读指定地址,单字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
   fnRead_Eeprom(LAD_L4_0,1,&ucTemp1);
   
   if(ucTemp1 == 0)
   {
   		ucTemp1 = 1;	
   }
   else
   if(ucTemp1 < 7)
   {
   		ucTemp1++;
   }
   else
   if(ucTemp1 == 7)
   {
   		ucTemp1 = 1;
   }
   else
   {
   		//发现错误!
   		
   		//报警!
   		
   		//初始化L2记录。
   		fnInit_SystemRecord4();
   		
   		ucTemp1 = 1;
   }

	ucTemp2 = 1;
	
	ucX_temp.x = ulFlux0;
	
	//写入索引
	//1字节		索引
	fnWrite_Eeprom(LAD_L4_0,1,&ucTemp1);
	
	//写入数据
	//6字节		时间日期
	fnWrite_Eeprom( (LAD_L4_0 + 12*ucTemp1) + 1,6,uc_Data+1);

	//1字节		记录标志置1
	fnWrite_Eeprom( (LAD_L4_0 + 12*ucTemp1)		,1,&ucTemp2);
	
	//4字节		流速
	fnWrite_Eeprom( (LAD_L4_0 + 12*ucTemp1) + 8,4,ucX_temp.c);

}

*/
/*******************************************************************
		读L4记录函数
函数原型: ulong fnRead_SystemRecord4(uchar ucRecordN, uchar *uc_Data);
功能:读L4记录函数
注意:  当记录索引>7时,发现错误!报警!初始化L4记录,返回0
				当读过程正常,返回1。
				ucRecordN的范围1-7,超过返回0
******************************************************************/
/*ulong fnRead_SystemRecord4(uchar ucRecordN, uchar *uc_Data)
{
	uchar ucTemp1;
	char cTemp2;
	
	union{
        uchar c[4];
        ulong x;
  }ucX_temp;
	
	//读索引
		//读相应地址的数据--单字节
		//读指定地址,单字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
   fnRead_Eeprom(LAD_L4_0,1,&ucTemp1);
   
   if(ucTemp1 == 0)
   {
   		uc_Data[0] = 0;
   		
   		return(0);
   }
   
   if(ucTemp1 > 7)
   {
   	  //发现错误!
   		
   		//报警!
   		
   		//初始化L4记录。
   		fnInit_SystemRecord4();
   		
   		uc_Data[0] = 0;
   	
   		return(0);
   } 
   
   if((ucRecordN>7)|(ucRecordN == 0))
   {
   		uc_Data[0] = 0;
   		
   		return(0);
   }
      
   cTemp2 = ucTemp1 - ucRecordN + 1;
   
   if(cTemp2<=0)
   	cTemp2 += 7;
   	
		//读数据 8字节
		//读相应地址的数据--8字节
		//读指定地址,8字节大小的数据:	
                	//CAT24WC64P  (N<=8192)(地址:0-8191)
                	//CAT24WC16P  (N<=2048)(地址:0-2047)
   fnRead_Eeprom((LAD_L4_0 + 12 * cTemp2) ,8 ,uc_Data);
   
   if(uc_Data[0]==0)   
   	return(0);
   else
   {
   	//4字节		流速
		fnRead_Eeprom( (LAD_L4_0 + 12 * cTemp2) + 8,4,ucX_temp.c);	
		
   	return(ucX_temp.x);
   }
   
}*/

⌨️ 快捷键说明

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