📄 gsw-04-13.c
字号:
jz_test_flag=1;
}
}
//AD转换//
void ABC_trans(uchar data x)
{
uchar xdata i;
uint xdata adc_value;
if(x==0x00)
{
ADC0CF =eep[3];
}
else
{
if(x==0x01)
{
ADC0CF=eep[4];
}
else
{
ADC0CF=eep[5];
}
}
adc_value=0x00;
for(i=0;i<50;i++)
{
ADCEN=1;
AMX0SL=0x28+x;
delay_10us();
ADCINT=0;
ADBUSY=1;
while(ADCINT==0)
{
WDTCN=0xaA5;
}
delay_10us();
adc_value=adc_value+ADC0H;
}
adc_value=adc_value/50;
if (x==0x00)
{
A_value=adc_value;
}
else
{
if (x==0x01)
{
B_value=adc_value;
}
else
{
C_value=adc_value;
}
}
}
//设置时临时AD转换//
void SETUP_AD(uchar data y)
{
uchar xdata i;
uint xdata adc_value;
ADC0CF =0x80;
adc_value=0x00;
for(i=0;i<50;i++)
{
ADCEN=1;
AMX0SL=0x28+y;
delay_10us();
ADCINT=0;
ADBUSY=1;
while(ADCINT==0)
{
WDTCN=0xaA5;
}
delay_10us();
adc_value=adc_value+ADC0H;
}
adc_value=adc_value/50;
if (y==0x00)
{
AD_value=adc_value;
}
else
{
if (y==0x01)
{
BD_value=adc_value;
}
else
{
CD_value=adc_value;
}
}
}
//设置//
void SETUP(void)
{
uint xdata data_temp;
uchar xdata favalue,fbvalue,fcvalue;
uchar xdata Fa_value ,Fb_value,Fc_value;
if (sw2==1)
{
sw2=0;
sw1=0;
get_EEPROM();
ABC_trans(0x00);
ABC_trans(0x01);
ABC_trans(0x02);
if((A_value<=eep[0])||(B_value<=eep[1])||(C_value<=eep[2]))
{
sound=0x86;
sound_80();
}
else
{
PGA() ;
eep[3]=temp_eep[3];
eep[4]=temp_eep[4];
eep[5]=temp_eep[5];
ABC_trans(0x00);
ABC_trans(0x01);
ABC_trans(0x02);
data_temp=0x0000;
data_temp=A_value*6;
Fa_value=data_temp/10;
data_temp=0x0000;
data_temp=B_value*6;
Fb_value=data_temp/10;
data_temp=0x0000;
data_temp=C_value*6;
Fc_value=data_temp/10;
///////////////A//////////////
if(eep[3]==0x83)
{
if(Fa_value<=basic_valve)
{
eep[0]=bot_valve;
}
else
{
eep[0]=Fa_value;
}
}
else
{
eep[0]=Fa_value;
}
////////////B/////////////
if(eep[4]==0x83)
{
if(Fb_value<=basic_valve)
{
eep[1]=bot_valve;
}
else
{
eep[1]=Fb_value;
}
}
else
{
eep[1]=Fb_value;
}
//////////////C///////////////
if(eep[5]==0x83)
{
if(Fc_value<=basic_valve)
{
eep[2]=bot_valve;
}
else
{
eep[2]=Fc_value;
}
}
else
{
eep[2]=Fc_value;
}
favalue=eep[0];
fbvalue=eep[1];
fcvalue=eep[2];
A_PGA =eep[3];
B_PGA =eep[4];
C_PGA =eep[5];
write_EEPROM(); //写EEPROM
get_EEPROM(); //读EEPROM
if ((eep[0]==favalue)&&(eep[1]==fbvalue)&&(eep[2]==fcvalue)&&
(eep[3]==A_PGA)&&(eep[4]==B_PGA)&&(eep[5]==C_PGA))
{
sound=0x84;
sound_80();
}
else
{
sound=0x85;
sound_80();
}
}
}
}
////////////////////////////////////////
//X5045//
void ini45(void)
{
stax();
outbyte(0x06);
stax();
outbyte(0x01);
outbyte(0x00);
endx();
msec(20);
}
/*输出一个BYTE给X25045*********/
void outbyte(uchar data x)
{
uchar data i;
order=x;
for(i=0;i<8;i++)
{
sck=0;
si=order7;
sck=1;
order=order<<1;
}
si=0;
}
void stax(void)
{
csx=1;
csx=1;
sck=0;
sck=0;
csx=0;
csx=0;
}
void endx(void)
{
sck=0;
csx=1;
csx=1;
csx=1;
}
void msec(uchar data x)
{
uchar data j;
while(x--)
{
csx=0;
csx=1;
for (j=0; j<250;j++)
{
;
}
}
}
/*********/
//写X5045
void write_data(uchar data x, uchar data y)
{
stax();
outbyte(0x06);
stax();
outbyte(0x02);
outbyte(x);
outbyte(y);
endx();
msec(20);
}
//读X5045一个字节
void get_data(uchar x) /*取EEPROM一个字节X为地址*/
{
stax();
outbyte(0x03);
outbyte(x);
inbyte();
endx();
}
void inbyte(void)
{
uchar data i;
for(i=0;i<8;i++)
{
sck=1;
sck=0;
order=order<<1;
order0=so;
}
data_eep=order;
}
//读子X5045的值
void get_EEPROM(void)
{
ini45();
get_data(0x30);
eep[0]=data_eep;
get_data(0x31);
eep[1]=data_eep;
get_data(0x32);
eep[2]=data_eep;
get_data(0x33);
eep[3]=data_eep;
get_data(0x34);
eep[4]=data_eep;
get_data(0x35);
eep[5]=data_eep;
}
void write_EEPROM(void)
{
write_data(0x30,eep[0]);
write_data(0x31,eep[1]);
write_data(0x32,eep[2]);
write_data(0x33,eep[3]);
write_data(0x34,eep[4]);
write_data(0x35,eep[5]);
}
///////返回初始值////
void setup_jerque_key(void)
{
if(sw12flag==1)
{
sw12flag=0;
timer10s=0;
sw1=0;
sw2=0;
eep[0]=initialize_valve;
eep[1]=initialize_valve;
eep[2]=initialize_valve;
eep[3]=0x82; //A_PGA
eep[4]=0x82; //B_PGA
eep[5]=0x82; //C_PGA
write_EEPROM();
sound=0x80;
sound_80();
}
}
///自动调整放大倍数///////////
void PGA(void)
{
SETUP_AD(0x00);
SETUP_AD(0x01);
SETUP_AD(0x02);
/////A_PGA ///////////////////////////////
if(AD_value<=0x15)
{
temp_eep[3]=0x83; //8X
}
else
{
if(AD_value<=0x2a)
{
temp_eep[3]=0x82; //4X
}
else
{
if(AD_value<=0x55)
{
temp_eep[3]=0x81; //2X
}
else
{
if(AD_value<=0xaa)
{
temp_eep[3]=0x80; //1X
}
else
{
temp_eep[3]=0x86; //0.5X
}
}
}
}
///B_PGA ////////////////////////////////
if(BD_value<=0x15)
{
temp_eep[4]=0x83; //8x
}
else
{
if(BD_value<=0x2a)
{
temp_eep[4]=0x82; //4x
}
else
{
if(BD_value<=0x55)
{
temp_eep[4]=0x81; //2x
}
else
{
if(BD_value<=0xaa)
{
temp_eep[4]=0x80; //1x
}
else
{
temp_eep[4]=0x86; //0.5x
}
}
}
}
// C_PGA /////////////////////
if(CD_value<=0x15)
{
temp_eep[5]=0x83; //8X
}
else
{
if(CD_value<=0x2a)
{
temp_eep[5]=0x82; //4X
}
else
{
if(CD_value<=0x55)
{
temp_eep[5]=0x81; //2X
}
else
{
if(CD_value<=0xaa)
{
temp_eep[5]=0x80; //1X
}
else
{
temp_eep[5]=0x86; //0.5X
}
}
}
}
}
///自动调整阀值//////
void automatism_valve(void)
{
uint xdata eep_temp;
uint xdata A_temp, B_temp ,C_temp;
uchar xdata A_bot, B_bot, C_bot;////
uint xdata A_top, B_top, C_top;
uchar xdata A_valve,B_valve,C_valve;
uchar xdata A_BASIC_VALVE,B_BASIC_VALVE,C_BASIC_VALVE;
ABC_trans(0x00);
ABC_trans(0x01);
ABC_trans(0x02);
if(eep[3]==0x83)
{
eep_temp=basic_valve*10;
A_BASIC_VALVE=eep_temp/6;
}
else
{
A_BASIC_VALVE=0x10;
}
////////////////////
if(eep[4]==0x83)
{
eep_temp=basic_valve*10;
B_BASIC_VALVE=eep_temp/6;
}
else
{
B_BASIC_VALVE=0x10;
}
///////////////////////////////
if(eep[5]==0x83)
{
eep_temp=basic_valve*10;
C_BASIC_VALVE=eep_temp/6;
}
else
{
C_BASIC_VALVE=0x10;
}
/////A/////////
get_EEPROM();
eep_temp=0x0000;
eep_temp=eep[0]*10;
A_temp=eep_temp/6;
eep_temp=0x0000;
eep_temp=A_temp*7;
A_valve =eep_temp/10;
eep_temp=0x0000;
eep_temp=A_temp*85;
A_bot =eep_temp/100;
eep_temp=0x0000;
eep_temp=A_temp*11;
A_top =eep_temp/10;
/////B/////
eep_temp=0x0000;
eep_temp=eep[1]*10;
B_temp=eep_temp/6;
eep_temp=0x0000;
eep_temp=B_temp*7;
B_valve =eep_temp/10;
eep_temp=0x0000;
eep_temp=B_temp*85;
B_bot =eep_temp/100;
eep_temp=0x0000;
eep_temp=B_temp*11;
B_top =eep_temp/10;
/////////C//////
eep_temp=0x0000;
eep_temp=eep[2]*10;
C_temp=eep_temp/6;
eep_temp=0x0000;
eep_temp=C_temp*7;
C_valve =eep_temp/10;
eep_temp=0x0000;
eep_temp=C_temp*85;
C_bot =eep_temp/100;
eep_temp=0x0000;
eep_temp=C_temp*11;
C_top =eep_temp/10;
///////////////A///////////////
if(A_value<=A_valve)
{
A_flag0=0;
A_flag1=0;
}
else
{
if(A_value<=A_BASIC_VALVE)
{
A_flag0=0;
A_flag1=0;
}
else
{
if((A_value<=A_bot)||(A_value>=A_top))
{
A_flag0=1;
}
else
{
A_flag0=0;
A_flag1=0;
}
}
}
///////////////B///////////////
if(B_value<=B_valve)
{
B_flag0=0;
B_flag1=0;
}
else
{
if(B_value<=B_BASIC_VALVE)
{
B_flag0=0;
B_flag1=0;
}
else
{
if((B_value<=B_bot)||(B_value>=B_top))
{
B_flag0=1;
}
else
{
B_flag0=0;
B_flag1=0;
}
}
}
///////////////C///////////////
if(C_value<=C_valve)
{
C_flag0=0;
C_flag1=0;
}
else
{
if(C_value<=C_BASIC_VALVE)
{
C_flag0=0;
C_flag1=0;
}
else
{
if((C_value<=C_bot)||(C_value>=C_top))
{
C_flag0=1;
}
else
{
C_flag0=0;
C_flag1=0;
}
}
}
valve_read_write();
}
///自动调阀值子程序//////
void valve_read_write(void)
{
uint xdata valve_temp;
uchar xdata A_VALVE,B_VALVE,C_VALVE;
uchar data EEP_TEMP[6];
if((A_flag1==1)||(B_flag1==1)||(C_flag1==1))
{
PGA() ;
eep[3]=temp_eep[3];
eep[4]=temp_eep[4];
eep[5]=temp_eep[5];
ABC_trans(0x00);
ABC_trans(0x01);
ABC_trans(0x02);
valve_temp=0x0000;
valve_temp=A_value*6;
A_VALVE =valve_temp/10;
valve_temp=0x0000;
valve_temp=B_value*6;
B_VALVE =valve_temp/10;
valve_temp=0x0000;
valve_temp=C_value*6;
C_VALVE =valve_temp/10;
/////////////A//////////////
if(eep[3]==0x83)
{
if(A_VALVE<=basic_valve)
{
eep[0]=eep[0]=bot_valve;
}
else
{
eep[0]=A_VALVE;
}
}
else
{
eep[0]=A_VALVE;
}
////////B///////////
if(eep[4]==0x83)
{
if(B_VALVE<=basic_valve)
{
eep[1]=bot_valve;
}
else
{
eep[1]=B_VALVE;
}
}
else
{
eep[1]=B_VALVE;
}
////////C///////////////////////
if(eep[5]==0x83)
{
if(C_VALVE<=basic_valve)
{
eep[2]=bot_valve;
}
else
{
eep[2]=C_VALVE;
}
}
else
{
eep[2]=C_VALVE;
}
EEP_TEMP[0]=eep[0];
EEP_TEMP[1]=eep[1];
EEP_TEMP[2]=eep[2];
EEP_TEMP[3]=eep[3];
EEP_TEMP[4]=eep[4];
EEP_TEMP[5]=eep[5];
write_EEPROM();
get_EEPROM();
if((EEP_TEMP[0]==eep[0])&&(EEP_TEMP[1]==eep[1])&&(EEP_TEMP[2]==eep[2])&&
(EEP_TEMP[3]==eep[3])&&(EEP_TEMP[4]==eep[4])&&(EEP_TEMP[5]==eep[5]))
{
sound=0x88;
sound_80();
}
else
{
sound=0x89;
sound_80();
}
A_flag1=0;
B_flag1=0;
C_flag1=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -