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

📄 f020.c

📁 多通道高速数据采集源程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                              //AIN03_ADDR[2]=0x08;//AIN0.3 	存储区域0x060000~0x07FFFF共128K
			    }

			  }
            ET0=1;
			TR0=1;
		   }//end if m3>0x03FF
           if(n3>0X13FF)//地址注意之处
		   {
            TR0=0;
            ET0=0;
		    n3=0x1300;//AIN1.3缓存区首地址
			
            switch (first_flag13)
			{
	   case 0X00: Read_Data_T0_Flash (AIN13_ADDR[0],AIN13_ADDR[1],0x08,n3+8,248);
                    AIN13_ADDR[1]++;
                    //AIN13_ADDR[2]=0x00;
                    first_flag13=1;
					break;
	   case 0X01: Read_Data_T0_Flash (AIN13_ADDR[0],AIN13_ADDR[1],0x00,n3,256);
                    AIN13_ADDR[1]++;
                    //AIN13_ADDR[2]=0x00;
					break;
	   default:break;
			}
            
            if(AIN13_ADDR[1]>255)
			  {
               AIN13_ADDR[1]=0x00;
               //AIN13_ADDR[2]=0x00;
			   AIN13_ADDR[0]++;
			   if( AIN13_ADDR[0]>=0X18)//存储区域0x160000~0x17FFFF共128K
			     {
		              FLASH_SE(0x16,0x00,0x00);
                      FLASH_SE(0x17,0x00,0x00);
                 
                              first_flag13=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x16,0x00,0x00,0x13);//通道AIN1。3
                              AIN13_ADDR[0]=0x16;
                              AIN13_ADDR[1]=0x00;
                              //AIN13_ADDR[2]=0x08;//AIN1.3 	存储区域0x160000~0x17FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if n3>0x13FF
/*****************AIN03************************************/
/***信号Nist*******/
/***射控驱动器速度实际***/
/***电压范围0~15V*****/
/*****阀值0.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN0.3 存储区域0x060000~0x07FFFF共128K*/
	      last_xn=x[0x2300];//AIN0.3上次值缓存
          AMX0SL = 0x03;//AIN0.3					  //AIN00-AIN07->0X00-0X07        
	      AD0INT = 0;               // 清除ADC转换完成标志
	      AD0BUSY = 1;
	      while (!AD0INT);
          Delay_us(5);
          current_xn= ADC0H;
          Temp_AD=abs(current_xn-last_xn);
          x[0x2300]= current_xn;
		if(Temp_AD>=B)//阀值设定
		{
		   if(timepoint>253)
		   {
		   x[m3-2]=current_xn;
		   //m3++;
           x[m3-1]=0XFE;
           //m3++;
		   }
		   else
		   {
		   x[m3]=current_xn;
		   m3++;
           x[m3]=timepoint;
           m3++;
		   }
		   if(m3>0X03FF)//地址注意之处
		   {
            TR0=0;
            ET0=0;
		    m3=0x0300;//AIN0.3缓存区首地址
            
			switch (first_flag03)
			{
			case 0X00: Read_Data_T0_Flash (AIN03_ADDR[0],AIN03_ADDR[1],0x08,m3+8,248);
                                AIN03_ADDR[1]++;
                                //AIN03_ADDR[2]=0x00;
                                first_flag03=1;
					break;
		       case 0X01: Read_Data_T0_Flash (AIN03_ADDR[0],AIN03_ADDR[1],0x00,m3,256);
                               AIN03_ADDR[1]++;
                               //AIN03_ADDR[2]=0x00;
					break;
		      default:break;
			}
            if(AIN03_ADDR[1]>255)
			  {
              AIN03_ADDR[1]=0x00;
              //AIN03_ADDR[2]=0x00;
			  AIN03_ADDR[0]++;
			   if( AIN03_ADDR[0]>=0x08)
			     {
	                      FLASH_SE(0x06,0x00,0x00);
                          FLASH_SE(0x07,0x00,0x00);
                  
                              first_flag03=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x06,0x00,0x00,0x03);//通道AIN0。3
                              AIN03_ADDR[0]=0x06;
                              AIN03_ADDR[1]=0x00;
                              //AIN03_ADDR[2]=0x08;//AIN0.3 	存储区域0x060000~0x07FFFF共128K
				 }

			  }
			ET0=1;
			TR0=1;
		   }//end if m3>0X03FF
         }//end if Temp_AD>B
/*****************AIN13************************************/
/***信号563-1*******/
/***火控台短点射发射击开关***/
/***电压范围0~15V*****/
/*****阀值1.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN1.3 存储区域0x160000~0x17FFFF共128K*/
          last_xn=x[0x3300];//AIN1.3上次值缓存
          AMX1SL=0x03;//AIN1.3
          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[0x3300]= current_xn;
		  if(Temp_AD>=A)//阀值设定
		  {
		   if(timepoint>253)
		   {
		   x[n3-2]=current_xn;
		   //n3++;
           x[n3-1]=0XFE;
           //n3++;
		   }
		   else
		   {
		   x[n3]=current_xn;
		   n3++;
           x[n3]=timepoint;
           n3++;
		   }
		   if(n3>0X13FF)//注意之处
		   {
            TR0=0;
            ET0=1;
		    n3=0x1300;//AIN1.3缓存区首地址
            
            switch (first_flag13)
			{
			case 0X00: Read_Data_T0_Flash (AIN13_ADDR[0],AIN13_ADDR[1],0x08,n3+8,248);
                                AIN13_ADDR[1]++;
                                //AIN13_ADDR[2]=0x00;
                                first_flag13=1;
					break;
			case 0X01: Read_Data_T0_Flash (AIN13_ADDR[0],AIN13_ADDR[1],0x00,n3,256);
                                AIN13_ADDR[1]++;
                                //AIN13_ADDR[2]=0x00;
					break;
			default:break;
			}
            
            if(AIN13_ADDR[1]>255)
			  {
               AIN13_ADDR[1]=0x00;
               //AIN13_ADDR[2]=0x00;
			   AIN13_ADDR[0]++;
			   if( AIN13_ADDR[0]>=0X18)//存储区域0x160000~0x17FFFF共128K
			     {
		              FLASH_SE(0x16,0x00,0x00);
                      FLASH_SE(0x17,0x00,0x00);
                 
                              first_flag13=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x16,0x00,0x00,0x13);//通道AIN1。3
                              AIN13_ADDR[0]=0x16;
                              AIN13_ADDR[1]=0x00;
                              //AIN13_ADDR[2]=0x08;//AIN1.3 	存储区域0x160000~0x17FFFF共128K
				 }

			  }
            ET0=1;
			TR0=1;
		   }//end if n3>0x13FF
      }//end if Temp_AD>A

 }//end if AIN==0X04
/**********************************END AIN=0X04**********************************/	


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

		    }
           if(m4>0X04FF)
		   {
            TR0=0;
            ET0=0;
		    m4=0x0400;//AIN0.4缓存区首地址
            switch (first_flag04)
			{
	    case 0X00: Read_Data_T0_Flash (AIN04_ADDR[0],AIN04_ADDR[1],0x08,m4+8,248);
                    AIN04_ADDR[1]++;
                    //AIN04_ADDR[2]=0x00;
                    first_flag04=1;
					break;
	    case 0X01: Read_Data_T0_Flash (AIN04_ADDR[0],AIN04_ADDR[1],0x00,m4,256);
                    AIN04_ADDR[1]++;
                   // AIN04_ADDR[2]=0x00;
					break;
	   default:break;
			}
            if(AIN04_ADDR[1]>255)
			  {
                       AIN04_ADDR[1]=0x00;
                       //AIN04_ADDR[2]=0x00;
	                   AIN04_ADDR[0]++;
	                   if( AIN04_ADDR[0]>=0X0A)
			     {
		              FLASH_SE(0x08,0x00,0x00);
                      FLASH_SE(0x09,0x00,0x00);
                              
                              first_flag04=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x08,0x00,0x00,0x04);//通道AIN0。4
                              AIN04_ADDR[0]=0x08;
                              AIN04_ADDR[1]=0x00;
                              //AIN04_ADDR[2]=0x08;//AIN0.4 	存储区域0x080000~0x09FFFF共128K
			    }

			  }
            ET0=1;
			TR0=1;
		   }//end if m4>0x04FF
           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
/*****************AIN04************************************/
/***信号List*******/
/***射控驱动器电流实际***/
/***电压范围0~15V*****/
/*****阀值0.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN0.4 存储区域0x080000~0x09FFFF共128K*/
	      last_xn=x[0x2400];//AIN0.4上次值缓存
          AMX0SL = 0x04;//AIN0.4					  //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[0x2400]= current_xn;
		if(Temp_AD>=B)//阀值设定
		{
		   if(timepoint>253)
		   {
		   x[m4-2]=current_xn;
		   //m4++;
           x[m4-1]=0XFE;
           //m4++;
		   }
		   else
		   {
		   x[m4]=current_xn;
		   m4++;
           x[m4]=timepoint;
           m4++;
		   }
		   if(m4>0X04FF)//地址注意之处
		   {
            TR0=0;
            ET0=0;
		    m4=0x0400;//AIN0.4缓存区首地址
            
			switch (first_flag04)
			{
			case 0X00: Read_Data_T0_Flash (AIN04_ADDR[0],AIN04_ADDR[1],0x08,m4+8,248);
                      AIN04_ADDR[1]++;
                      //AIN04_ADDR[2]=0x00;
                      first_flag04=1;
					break;
		   case 0X01: Read_Data_T0_Flash (AIN04_ADDR[0],AIN04_ADDR[1],0x00,m4,256);
                      AIN04_ADDR[1]++;
                      //AIN04_ADDR[2]=0x00;
					break;
		      default:break;
			}
            if(AIN04_ADDR[1]>255)
			  {
               AIN04_ADDR[1]=0x00;
               //AIN04_ADDR[2]=0x00;
			   AIN04_ADDR[0]++;
			   if( AIN04_ADDR[0]>=0x0A)
			     {
	                      FLASH_SE(0x08,0x00,0x00);
                          FLASH_SE(0x09,0x00,0x00);
                  
                              first_flag04=0;
                              Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x08,0x00,0x00,0x04);//通道AIN0。4
                              AIN04_ADDR[0]=0x08;
                              AIN04_ADDR[1]=0x00;
                              //AIN04_ADDR[2]=0x08;//AIN0.4 	存储区域0x080000~0x09FFFF共128K
				 }

			  }
			ET0=1;
			TR0=1;
		   }//end if m4>0X04FF
         }//end if Temp_AD>B
/*****************AIN14************************************/
/***信号564-1*******/
/***火控台长点射发射击开关***/
/***电压范围0~15V*****/
/*****阀值1.5V*****/
/*******还原算法Xn*9.4922*11********/
/**AIN1.4 存储区域0x180000~0x18FFFF共128K*/
          last_xn=x[0x3400];//AIN1.4上次值缓存
          AMX1SL=0x04;//AIN1.4
          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[0x3400]= current_xn;
		  if(Temp_AD>=A)//阀值设定
		  {
		   if(timepoint>253)

⌨️ 快捷键说明

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