📄 f020.c
字号:
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 + -