vfdeal.c

来自「16路巡检仪 该仪表采用c语言编写」· C语言 代码 · 共 121 行

C
121
字号
#include	"head.h"
uint gg,trr;
extern	uint	xdata	TMing2,VR[16],IR[16],AR[16];
extern	float	xdata	filt,PV[road],mv,rangeL[16],rangeH[16];
extern	uchar	xdata	collt,	typdat[16];
extern	uchar	cygnd;		//采样地标志
extern	bit		cytwo;
extern	uchar	vfmark;
extern	uchar	VFport;
uchar	petat=0;
uint	xdata	pvlb=0;
uint	xdata	port[road];
uint	pvdat[4];
uchar	ttw=0;
uchar	pet;
bit		ter,tq,dt;
void	VFdeal()
{	
	float	X;
	if(vfmark==1)
		{	
			if(petat==0)
				{
					petat=3+(uchar)filt*10;
					pet=petat;
				}
			pvdat[ttw]=TH1<<8|TL1;
			ttw++; 
			if(cytwo==0)
				cygnd++;
			if((typdat[VFport]<=11)&&(typdat[VFport]>8))
				if((cytwo==0)&&(cygnd==2))
				{	
					pvdat[3]=pvdat[0]+pvdat[1]-pvdat[2];
					cygnd=0;
					ter=1;
					tq=1;
					ttw=0;
				}
			if(cygnd==2)
				{
					pvdat[3]=pvdat[0]-pvdat[1];
					cygnd=0;
					ter=1;			//开始处理数据
					tq=1;				
					ttw=0;
				}
			if(ter==1)
				{
					ter=0;
					petat--;
					pvlb+=pvdat[3];
					if(petat==0)
						{	
							pvlb/=pet;
							port[VFport]=pvlb;
							if(typdat[VFport]<=8)
								X=pvlb*100.0/VR[VFport];
							else if(typdat[VFport]<=11)
								X=pvlb*280.98/AR[VFport];
							else if(typdat[VFport]<=13)	
								X=pvlb*5.0/VR[VFport];
							else if(typdat[VFport]<=16)	
								X=pvlb*20.0/IR[VFport];
							deal(X);
							if(typdat[VFport]==8)
								PV[VFport]=pvlb/VR[VFport]*(rangeH[VFport]-rangeL[VFport])+rangeL[VFport];
							else if(typdat[VFport]<=13)
								PV[VFport]=pvlb/VR[VFport]*(rangeH[VFport]-rangeL[VFport])+rangeL[VFport];
							else if(typdat[VFport]<=16)
							PV[VFport]=X*(rangeH[VFport]-rangeL[VFport])/20+rangeL[VFport];	
							dt=1;
					}
				}
			if((VFport<15)&&(dt==1))
				{	
					VFport++;
					pvlb=0;
					dt=0;
				}
			if(VFport>=15)
				VFport=0;
			vfmark=0;
			VFstart(VFport);
			
		} 
}

































⌨️ 快捷键说明

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