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

📄 f020.c

📁 多通道高速数据采集源程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		   {
		   x[n4-2]=current_xn;
		  // n4++;
           x[n4-1]=0XFE;
           //n4++;
		   }
		   else
		   {
		   x[n4]=current_xn;
		   n4++;
           x[n4]=timepoint;
           n4++;
		   }
		   if(n4>0X14FF)//注意之处
		   {
            TR0=0;
            ET0=0;
		    n4=0x1400;//AIN1.4缓存区首地址
            
            switch (first_flag14)
			{
			case 0X00: Read_Data_T0_Flash (AIN14_ADDR[0],AIN14_ADDR[1],0x08,n4+8,248);
                                AIN14_ADDR[1]++;
                                //AIN14_ADDR[2]=0x00;
                                first_flag14=1;
					break;
			case 0X01: Read_Data_T0_Flash (AIN14_ADDR[0],AIN14_ADDR[1],0x00,n4,256);
                                AIN14_ADDR[1]++;
                                //AIN14_ADDR[2]=0x00;
					break;
			default:break;
			}
            
            if(AIN14_ADDR[1]>255)
			  {
                           AIN14_ADDR[1]=0x00;
                           //AIN14_ADDR[2]=0x00;
			   AIN14_ADDR[0]++;
			   if( AIN14_ADDR[0]>=0X1A)//存储区域0x180000~0x19FFFF共128K
			     {
		              FLASH_SE(0x18,0x00,0x00);
                      FLASH_SE(0x19,0x00,0x00);
                 
                              first_flag14=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x18,0x00,0x00,0x14);//通道AIN1。4
                              AIN14_ADDR[0]=0x18;
                              AIN14_ADDR[1]=0x00;
                              //AIN14_ADDR[2]=0x08;//AIN1.4 	存储区域0x180000~0x19FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if n4>0x14FF
      }//end if Temp_AD>A
		  
 }//end if AIN==0X05
/**********************************END AIN=0X05**********************************/	








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

		    }
           if(m5>0X05FF)
		   {
            TR0=0;
            ET0=0;
		    m5=0x0500;//AIN0.5缓存区首地址
            switch (first_flag05)
			{
	    case 0X00: Read_Data_T0_Flash (AIN05_ADDR[0],AIN05_ADDR[1],0x08,m5+8,248);
                    AIN05_ADDR[1]++;
                    //AIN05_ADDR[2]=0x00;
                    first_flag05=1;
					break;
	    case 0X01: Read_Data_T0_Flash (AIN05_ADDR[0],AIN05_ADDR[1],0x00,m5,256);
                    AIN05_ADDR[1]++;
                    //AIN05_ADDR[2]=0x00;
					break;
	   default:break;
			}
            if(AIN05_ADDR[1]>255)
			  {
                       AIN05_ADDR[1]=0x00;
                       //AIN05_ADDR[2]=0x00;
	                   AIN05_ADDR[0]++;
	                   if( AIN05_ADDR[0]>=0X0C)
			     {
		              FLASH_SE(0x0A,0x00,0x00);
                      FLASH_SE(0x0B,0x00,0x00);
                              
                              first_flag05=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x0A,0x00,0x00,0x05);//通道AIN0。5
                              AIN05_ADDR[0]=0x0A;
                              AIN05_ADDR[1]=0x00;
                              //AIN05_ADDR[2]=0x08;//AIN0.5 	存储区域0x0A0000~0x0BFFFF共128K
			    }

			  }
            ET0=1;
			TR0=1;
		   }//end if m5>0x05FF
           if(n5>0X15FF)//地址注意之处
		   {
            TR0=0;
            ET0=0;
		    n5=0x1500;//AIN1.5缓存区首地址
			
            switch (first_flag15)
			{
	   case 0X00: Read_Data_T0_Flash (AIN15_ADDR[0],AIN15_ADDR[1],0x08,n5+8,248);
                    AIN15_ADDR[1]++;
                    //AIN15_ADDR[2]=0x00;
                    first_flag15=1;
					break;
	   case 0X01: Read_Data_T0_Flash (AIN15_ADDR[0],AIN15_ADDR[1],0x00,n5,256);
                    AIN15_ADDR[1]++;
                    //AIN15_ADDR[2]=0x00;
					break;
	   default:break;
			}
            
            if(AIN15_ADDR[1]>255)
			  {
                           AIN15_ADDR[1]=0x00;
                           //AIN15_ADDR[2]=0x00;
			   AIN15_ADDR[0]++;
			   if( AIN15_ADDR[0]>=0X1C)//存储区域0x1A0000~0x1BFFFF共128K
			     {
		              FLASH_SE(0x1A,0x00,0x00);
                      FLASH_SE(0x1B,0x00,0x00);
                 
                              first_flag15=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x1A,0x00,0x00,0x15);//通道AIN1。5
                              AIN15_ADDR[0]=0x1A;
                              AIN15_ADDR[1]=0x00;
                              //AIN15_ADDR[2]=0x08;//AIN1.5 	存储区域0x1A0000~0x1BFFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if n5>0x15FF
/*****************AIN05************************************/
/***信号512-1*******/
/***单发射击开关***/
/***电压范围0~15V*****/
/*****阀值1.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN0.5 存储区域0x0A0000~0x0BFFFF共128K*/
	      last_xn=x[0x2500];//AIN0.5上次值缓存
          AMX0SL = 0x05;//AIN0.5					  //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[0x2500]= current_xn;
		if(Temp_AD>=A)//阀值设定
		{
		   if(timepoint>253)
		   {
		   x[m5-2]=current_xn;
		   //m5++;
           x[m5-1]=0XFE;
           //m5++;
		   }
		   else
		   {
		   x[m5]=current_xn;
		   m5++;
           x[m5]=timepoint;
           m5++;
		   }
		   if(m5>0X05FF)//地址注意之处
		   {
            TR0=0;
			ET0=0;
		    m5=0x0500;//AIN0.5缓存区首地址
            
			switch (first_flag05)
			{
			case 0X00: Read_Data_T0_Flash (AIN05_ADDR[0],AIN05_ADDR[1],0x08,m5+8,248);
                                AIN05_ADDR[1]++;
                                //AIN05_ADDR[2]=0x00;
                                first_flag05=1;
					break;
		       case 0X01: Read_Data_T0_Flash (AIN05_ADDR[0],AIN05_ADDR[1],0x00,m5,256);
                               AIN05_ADDR[1]++;
                              // AIN05_ADDR[2]=0x00;
					break;
		      default:break;
			}
            if(AIN05_ADDR[1]>255)
			  {
                           AIN05_ADDR[1]=0x00;
                           //AIN05_ADDR[2]=0x00;
			   AIN05_ADDR[0]++;
			   if( AIN05_ADDR[0]>=0x0C)
			     {
	                      FLASH_SE(0x0A,0x00,0x00);
                              FLASH_SE(0x0B,0x00,0x00);
                  
                              first_flag05=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x0A,0x00,0x00,0x05);//通道AIN0。5
                              AIN05_ADDR[0]=0x0A;
                              AIN05_ADDR[1]=0x00;
                             // AIN05_ADDR[2]=0x08;//AIN0.5 	存储区域0x0A0000~0x0BFFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if m5>0X05FF
         }//end if Temp_AD>A
/*****************AIN15************************************/
/***信号565-1*******/
/***火控台连续射击开关***/
/***电压范围0~15V*****/
/*****阀值1.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN1.5 存储区域0x1A0000~0x1BFFFF共128K*/
          last_xn=x[0x3500];//AIN1.5上次值缓存
          AMX1SL=0x05;//AIN1.5
          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[0x3500]= current_xn;
		  if(Temp_AD>=A)//阀值设定
		  {
		  if(timepoint>253)
		  {
		   x[n5-2]=current_xn;
		   //n5++;
           x[n5-1]=0XFE;
           //n5++;
		  }
		  else
		  {
		   x[n5]=current_xn;
		   n5++;
           x[n5]=timepoint;
           n5++;
		   }
		   if(n5>0X15FF)//注意之处
		   {
            TR0=0;
			ET0=0;
		    n5=0x1500;//AIN1.5缓存区首地址
            
            switch (first_flag15)
			{
			case 0X00: Read_Data_T0_Flash (AIN15_ADDR[0],AIN15_ADDR[1],0x08,n5+8,248);
                                AIN15_ADDR[1]++;
                                //AIN15_ADDR[2]=0x00;
                                first_flag15=1;
					break;
			case 0X01: Read_Data_T0_Flash (AIN15_ADDR[0],AIN15_ADDR[1],0x00,n5,256);
                                AIN15_ADDR[1]++;
                                //AIN15_ADDR[2]=0x00;
					break;
			default:break;
			}
            
            if(AIN15_ADDR[1]>255)
			  {
               AIN15_ADDR[1]=0x00;
               //AIN15_ADDR[2]=0x00;
			   AIN15_ADDR[0]++;
			   if( AIN15_ADDR[0]>=0X1C)//存储区域0x1A0000~0x1BFFFF共128K
			     {
		              FLASH_SE(0x1A,0x00,0x00);
                      FLASH_SE(0x1B,0x00,0x00);
                 
                              first_flag15=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x1A,0x00,0x00,0x15);//通道AIN1。5
                              AIN15_ADDR[0]=0x1A;
                              AIN15_ADDR[1]=0x00;
                              //AIN15_ADDR[2]=0x08;//AIN1.5 	存储区域0x1A0000~0x1BFFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if n5>0x15FF
      }//end if Temp_AD>A
		  
 }//end if AIN==0X06
/**********************************END AIN=0X06**********************************/	




/***********************************START AIN=0X07*********************************************/
	    if(AIN==0X07)
		{
		  AIN_Flag=0;
/***************************AD LONG TIME NO CHANGE****************************/
       if(timepoint>253)
		   {
             TR0=0;
			 ET0=0;
	         timepoint=0X00;
             AMX0SL = 0x06;//AIN0.6					  //AIN00-AIN07->0X00-0X07        
             AD0INT = 0;               // 清除ADC转换完成标志
	         AD0BUSY = 1;
             Delay_us(5);
	         while (!AD0INT);
             current_xn = ADC0H;
             x[m6]=current_xn;
	         m6++;
             x[m6]=0xFE;
             m6++;
		
             AMX0SL = 0x07;//AIN0.7					  //AIN00-AIN07->0X00-0X07        
             AD0INT = 0;               // 清除ADC转换完成标志
	         AD0BUSY = 1;
             Delay_us(5);
	         while (!AD0INT);
             current_xn = ADC0H;
             x[m7]=current_xn;
	         m7++;
             x[m7]=0xFE;
             m7++;

             ET0=1;
             TR0=1;

		    }
           if(m6>0X06FF)
		   {
            TR0=0;
            ET0=0;
            
		    m6=0x0600;//AIN0.6缓存区首地址
            switch (first_flag06)
			{
	    case 0X00: Read_Data_T0_Flash (AIN06_ADDR[0],AIN06_ADDR[1],0x08,m6+8,248);
                    AIN06_ADDR[1]++;
                   // AIN06_ADDR[2]=0x00;
                    first_flag06=1;
					break;
	    case 0X01: Read_Data_T0_Flash (AIN06_ADDR[0],AIN06_ADDR[1],0x00,m6,256);
                    AIN06_ADDR[1]++;
                   // AIN06_ADDR[2]=0x00;
					break;
	   default:break;
			}
            if(AIN06_ADDR[1]>255)
			  {
                       AIN06_ADDR[1]=0x00;
                      // AIN06_ADDR[2]=0x00;
	                   AIN06_ADDR[0]++;
	                   if( AIN06_ADDR[0]>=0X0E)
			     {
		              FLASH_SE(0x0C,0x00,0x00);
                      FLASH_SE(0x0D,0x00,0x00);
                              
                              first_flag06=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x0C,0x00,0x00,0x06);//通道AIN0。6
                              AIN06_ADDR[0]=0x0C;
                              AIN06_ADDR[1]=0x00;
                             // AIN06_ADDR[2]=0x08;//AIN0.6 	存储区域0x0C0000~0x0DFFFF共128K
			

⌨️ 快捷键说明

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