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

📄 f020.c

📁 多通道高速数据采集源程序
💻 C
📖 第 1 页 / 共 5 页
字号:
					break;
			default:break;
			}
            if(AIN00_ADDR[1]>255)
			  {
               AIN00_ADDR[1]=0x00;
               //AIN00_ADDR[2]=0x00;
			   AIN00_ADDR[0]++;
			   if( AIN00_ADDR[0]>=0X02)
			     {
				  FLASH_SE(0x00,0x00,0x00);
                  FLASH_SE(0x01,0x00,0x00);

                  first_flag00=0;
                  Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x00,0x00,0x00,0x00);//通道AIN0。0
                  AIN00_ADDR[0]=0x00;
                  AIN00_ADDR[1]=0x00;
                  //AIN00_ADDR[2]=0x08;//AIN0.0 	存储区域0x000000~0x01FFFF共128K
				 }

			  }
			  ET0=1;
			TR0=1;
		   }//end if m0>0x00FF
           if(n0>0X10FF)//地址注意之处
		   {
            TR0=0;
            ET0=0;
		    n0=0x1000;//AIN1.0缓存区首地址
			
            switch (first_flag10)
			{
			case 0X00: Read_Data_T0_Flash (AIN10_ADDR[0],AIN10_ADDR[1],0x08,n0+8,248);
                    AIN10_ADDR[1]++;
                    //AIN10_ADDR[2]=0x00;
                    first_flag10=1;
					break;
			case 0X01: Read_Data_T0_Flash (AIN10_ADDR[0],AIN10_ADDR[1],0x00,n0,256);
                    AIN10_ADDR[1]++;
                    //AIN10_ADDR[2]=0x00;
					break;
			default:break;
			}
            
            if(AIN10_ADDR[1]>255)
			  {
               AIN10_ADDR[1]=0x00;
               //AIN10_ADDR[2]=0x00;
			   AIN10_ADDR[0]++;
			   if( AIN10_ADDR[0]>=0X12)//存储区域0x100000~0x11FFFF共128K
			     {
				  FLASH_SE(0x10,0x00,0x00);
                  FLASH_SE(0x11,0x00,0x00);
                 
                  first_flag10=0;
                  Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x10,0x00,0x00,0x10);//通道AIN1。0
                  AIN10_ADDR[0]=0x10;
                  AIN10_ADDR[1]=0x00;
                  //AIN10_ADDR[2]=0x08;//AIN1.0 	存储区域0x100000~0x11FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if n0>0x10FF
/*****************AIN00************************************/
/***信号L301-1*******/
/***射控系统+15V电源*/
/***电压范围0~15V*****/
/*****阀值1.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN0.0 存储区域0x000000~0x01FFFF共128K*/
		  last_xn=x[0x2000];//AIN0.0上次值缓存
          AMX0SL = 0x00;//AIN0.0					  //AIN00-AIN07->0X00-0X07        
	      AD0INT = 0;               // 清除ADC转换完成标志
	      AD0BUSY = 1;
          Delay_us(5);
	      while (!AD0INT);
          current_xn= ADC0H;
          Temp_AD=abs(current_xn-last_xn);
          x[0x2000]= current_xn;
		if(Temp_AD>=A)//阀值设定
		{
           if(timepoint>253)
           {
           x[m0-2]=current_xn;
		   //m0++;
           x[m0-1]=0XFE;
           //m0++;
           }
          else
           {
		   x[m0]=current_xn;
		   m0++;
           x[m0]=timepoint;
           m0++;
            } 
		   if(m0>0X00FF)//地址注意之处
		   {
            TR0=0;
            ET0=0; 
		    m0=0x0000;//AIN0.0缓存区首地址
            
			switch (first_flag00)
			{
			case 0X00: Read_Data_T0_Flash (AIN00_ADDR[0],AIN00_ADDR[1],0x08,m0+8,248);
                    AIN00_ADDR[1]++;
                    //AIN00_ADDR[2]=0x00;
                    first_flag00=1;
					break;
			case 0X01: Read_Data_T0_Flash (AIN00_ADDR[0],AIN00_ADDR[1],0x00,m0,256);
                    AIN00_ADDR[1]++;
                    //AIN00_ADDR[2]=0x00;
					break;
			default:break;
			}
            if(AIN00_ADDR[1]>255)
			  {
               AIN00_ADDR[1]=0x00;
               //AIN00_ADDR[2]=0x00;
			   AIN00_ADDR[0]++;
			   if( AIN00_ADDR[0]>=0X02)
			     {
				  FLASH_SE(0x00,0x00,0x00);
                  FLASH_SE(0x01,0x00,0x00);
                  
                  first_flag00=0;
                  Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x00,0x00,0x00,0x00);//通道AIN0。0
                  AIN00_ADDR[0]=0x00;
                  AIN00_ADDR[1]=0x00;
                  //AIN00_ADDR[2]=0x08;//AIN0.0 	存储区域0x000000~0x01FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if m0>0X00FF
         }//end if Temp_AD>A
/*****************AIN10************************************/
/***信号515-1*******/
/***连续射击开关***/
/***电压范围0~15V*****/
/*****阀值1.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN1.0 存储区域0x100000~0x11FFFF共128K*/
          last_xn=x[0x3000];//AIN1.0上次值缓存
          AMX1SL=0x00;  //AIN1.0
          ADC1CN &= 0xDF;// 清除ADC转换完成标志 AD1INT = 0;
          ADC1CN |= 0x10;//  AD1BUSY = 1;
          Delay_us(5);
          while (!ADC1CN&0x20);              //等待AD1INT=1;
          current_xn=ADC1;
          Temp_AD=abs(current_xn-last_xn);
          x[0x3000]= current_xn;
		  if(Temp_AD>=A)//阀值设定
		  {
		   if(timepoint>253)
		   {
		   x[n0-2]=current_xn;
		   //n0++;
           x[n0-1]=0XFE;
           //n0++;
		   }
		   else
		   {
		   x[n0]=current_xn;
		   n0++;
           x[n0]=timepoint;
           n0++;
		   }
		   if(n0>0X10FF)//注意之处
		   {
            TR0=0;
            ET0=0;
		    n0=0x1000;//AIN1.0缓存区首地址
            
            switch (first_flag10)
			{
			case 0X00: Read_Data_T0_Flash (AIN10_ADDR[0],AIN10_ADDR[1],0x08,n0+8,248);
                    AIN10_ADDR[1]++;
                    //AIN10_ADDR[2]=0x00;
                    first_flag10=1;
					break;
			case 0X01: Read_Data_T0_Flash (AIN10_ADDR[0],AIN10_ADDR[1],0x00,n0,256);
                    AIN10_ADDR[1]++;
                    //AIN10_ADDR[2]=0x00;
					break;
			default:break;
			}
            
            if(AIN10_ADDR[1]>255)
			  {
               AIN10_ADDR[1]=0x00;
               //AIN10_ADDR[2]=0x00;
			   AIN10_ADDR[0]++;
			   if( AIN10_ADDR[0]>=0X12)//存储区域0x100000~0x11FFFF共128K
			     {
				  FLASH_SE(0x10,0x00,0x00);
                  FLASH_SE(0x11,0x00,0x00);
                 
                  first_flag10=0;
                  Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x10,0x00,0x00,0x10);//通道AIN1。0
                  AIN10_ADDR[0]=0x10;
                  AIN10_ADDR[1]=0x00;
                  //AIN10_ADDR[2]=0x08;//AIN1.0 	存储区域0x100000~0x11FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if n0>0x10FF
      }//end if Temp_AD>A
		  
 }//end if AIN==0X01
/**********************************END AIN=0X01**********************************/	

/***********************************START AIN=0X02*********************************************/
if(AIN==0X02)
		{
		  AIN_Flag=0;
/***************************AD LONG TIME NO CHANGE****************************/
        if(timepoint>253)
		   {
             TR0=0;
		     ET0=0;
             AMX0SL = 0x01;//AIN0.1					  //AIN00-AIN07->0X00-0X07        
             AD0INT = 0;               // 清除ADC转换完成标志
	         AD0BUSY = 1;
             Delay_us(5);
	         while (!AD0INT);
             current_xn= ADC0H;
		     x[m1]=current_xn;
			 m1++;
             x[m1]=0xFE;
             m1++;
			
             AMX1SL=0x01;//AIN1.1
             ADC1CN &= 0xDF;// 清除ADC转换完成标志 AD1INT = 0;
             ADC1CN |= 0x10;//  AD1BUSY = 1;
             Delay_us(5);
             while (!ADC1CN&0x20);              //等待AD1INT=1;
  			 current_xn=ADC1;
             x[n1]=current_xn;
			 n1++;
             x[n1]=0xFE;
             n1++;
	         ET0=1;
             TR0=1;

		    }
           if(m1>0x01FF)//地址注意之处
		   {
            TR0=0;
            ET0=0;
		    m1=0x0100;//AIN0.1缓存区首地址
            switch (first_flag01)
			{
			case 0X00: Read_Data_T0_Flash (AIN01_ADDR[0],AIN01_ADDR[1],0x08,m1+8,248);
                    AIN01_ADDR[1]++;
                    //AIN01_ADDR[2]=0x00;
                    first_flag01=1;
					break;
			case 0X01: Read_Data_T0_Flash (AIN01_ADDR[0],AIN01_ADDR[1],0x00,m1,256);
                    AIN01_ADDR[1]++;
                    //AIN01_ADDR[2]=0x00;
					break;
			default:break;
			}
            if(AIN01_ADDR[1]>255)
			  {
               AIN01_ADDR[1]=0x00;
               //AIN01_ADDR[2]=0x00;
			   AIN01_ADDR[0]++;
			   if( AIN01_ADDR[0]>=0X04)//存储区域0x020000~0x03FFFF共128K    注意
			     {
				  FLASH_SE(0x02,0x00,0x00);
                  FLASH_SE(0x03,0x00,0x00);
                  
                  first_flag01=0;
                  Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x02,0x00,0x00,0x01);//通道AIN0。1
                  AIN01_ADDR[0]=0x02;
                  AIN01_ADDR[1]=0x00;
                  //AIN01_ADDR[2]=0x08;//AIN0.1 	存储区域0x020000~0x03FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if m1>0X01FF
       if(n1>0X11FF)//地址注意之处
		   {
            TR0=0;
            ET0=0;
		    n1=0x1100;//AIN1.1缓存区首地址
            
            switch (first_flag11)
			{
			case 0X00: Read_Data_T0_Flash (AIN11_ADDR[0],AIN11_ADDR[1],0x08,n1+8,248);
                    AIN11_ADDR[1]++;
                    //AIN11_ADDR[2]=0x00;
                    first_flag11=1;
					break;
			case 0X01: Read_Data_T0_Flash (AIN11_ADDR[0],AIN11_ADDR[1],0x00,n1,256);
                    AIN11_ADDR[1]++;
                    //AIN11_ADDR[2]=0x00;
					break;
			default:break;
			}
            
            if(AIN11_ADDR[1]>255)
			  {
               AIN11_ADDR[1]=0x00;
               //AIN11_ADDR[2]=0x00;
			   AIN11_ADDR[0]++;
			   if( AIN11_ADDR[0]>=0X14)//存储区域0x120000~0x13FFFF共128K    注意
			     {
				  FLASH_SE(0x12,0x00,0x00);
                  FLASH_SE(0x13,0x00,0x00);
                 
                  first_flag11=0;
                  Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x12,0x00,0x00,0x11);//通道AIN1。1
                  AIN11_ADDR[0]=0x12;
                  AIN11_ADDR[1]=0x00;
                  //AIN11_ADDR[2]=0x08;//AIN1.1 	存储区域0x060000~0x07FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if n1>0x11FF
/*****************AIN01************************************/
/***信号516-1*******/
/***击发按钮***/
/***电压范围0~15V*****/
/*****阀值1.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN0.1 存储区域0x020000~0x03FFFF共128K*/
		  last_xn=x[0x2100];//AIN0.1上次值缓存
          AMX0SL = 0x01;//AIN0.1					  //AIN00-AIN07->0X00-0X07        
	      AD0INT = 0;               // 清除ADC转换完成标志
	      AD0BUSY = 1;
          Delay_us(5);
	      while (!AD0INT);
          current_xn= ADC0H;
          Temp_AD=abs(current_xn-last_xn);
          x[0x2100]= current_xn;
		if(Temp_AD>=A)//阀值设定
		{
		   if(timepoint>253)
		   {
		   x[m1-2]=current_xn;
		   //m1++;
           x[m1-1]=0XFE;
           //m1++;
		   }
		   else
		   {
		   x[m1]=current_xn;
		   m1++;
           x[m1]=timepoint;
           m1++;
		   }
		   if(m1>0X01FF)
		   {
            TR0=0;
            ET0=0;
		    m1=0x0100;//AIN0.1缓存区首地址
            
			switch (first_flag01)//注意
			{
			case 0x00: Read_Data_T0_Flash (AIN01_ADDR[0],AIN01_ADDR[1],0x08,m1+8,248);
                    AIN01_ADDR[1]++;
                    //AIN01_ADDR[2]=0x00;
                    first_flag01=1;//注意
					break;
			case 0x01: Read_Data_T0_Flash (AIN01_ADDR[0],AIN01_ADDR[1],0x00,m1,256);
                    AIN01_ADDR[1]++;
                    //AIN01_ADDR[2]=0x00;
					break;
			default:break;
			}
            if(AIN01_ADDR[1]>255)
			  {
               AIN01_ADDR[1]=0x00;
               //AIN01_ADDR[2]=0x00;
			   AIN01_ADDR[0]++;
			   if( AIN01_ADDR[0]>=0X04)////存储区域0x020000~0x03FFFF共128K    注意
			     {
				  FLASH_SE(0x02,0x00,0x00);//注意
                  FLASH_SE(0x03,0x00,0x00);//注意
                  
                  first_flag01=0;//注意
                  Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x02,0x00,0x00,0x01);//通道AIN0。1
                  AIN01_ADDR[0]=0x02;//注意
                  AIN01_ADDR[1]=0x00;
                  //AIN01_ADDR[2]=0x08;//AIN0.1 	存储区域0x020000~0x03FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if m1>0x01FF
         }//end if Temp_AD>A
/*****************AIN11************************************/
/***信号518-1*******/
/***传感器信号电压***/
/***电压范围0~15V*****/
/*****阀值1.5V*****/

⌨️ 快捷键说明

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