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