📄 test.c
字号:
temp |= (1<<anther);
alarm(); //报警扫描
Delay(0x7ff);
Delay(0x7ff);
PORTD |= (1<<Red); //指示灯显示红色
PORTD &= ~(1<<Green); //绿色指示灯灭
PORTB &= ~(1<<P0); //关断P0 4A恒流充电
PORTD &= ~(1<<P1); //关断P1 4A恒流充电
PORTB &= ~(1<<P2); //关断P2 4A恒流充电
PORTB |= (1<<P3); //打开P3 4A恒流充电
TC1321_SET(878); // D/A送电压14.4V
while(Second_count_2>1459) //24小时到 1459
{ //则跳到第七步
goto step_7;
}
adc_mux=0X07;
Delay(0xff); //A/D采样延时
ad_reulst();
Second_count_3=00;
if(adc_old > 0x33 && adc_old < 390 ) //电流
{
while(Second_count_3<2) //等待2秒,因为拔掉电池,电流下降也会满足此条件,但是应该进入
{ //0电流报警,而不该进入第四步,所以等待2秒
// temp |= (1<<anther);
// alarm();
// PORTB &= ~(1<<P0); //关断P0 4A恒流充电
// PORTD &= ~(1<<P1); //关断P1 4A恒流充电
// PORTB &= ~(1<<P2); //关断P2 4A恒流充电
// PORTB |= (1<<P3); //打开P3 4A恒流充电
;
}
adc_mux=0X07;
Delay(0xff); //A/D采样延时
ad_reulst();
if(adc_old > 0x33 && adc_old < 390 )
{
goto step_4;
}
}
adc_mux=0X01; //采样当前电池电压大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
if(adc_old > 390 ) //检测当前电压是不是大于14.4V A/D电压1.31
{
goto step_4; //则跳到第四步
}
}
/************************ 第四步 恒压、14.4V、橙色灯***************************/
step_4:
Second_count_1=00; //延时10小时,等于36000秒
Second_count_2=00; //Second_count_1*Second_count_2=60*600
while(1)
{
temp |= (1<<anther); //允许0电流检测
alarm(); //报警扫描
PORTB &= ~(1<<P0); //关断P0 4A恒流充电
PORTD &= ~(1<<P1); //关断P1 4A恒流充电
PORTB &= ~(1<<P2); //关断P2 4A恒流充电
PORTB |= (1<<P3); //打开P3 4A恒流充电
PORTD |= (1<<Green); //指示灯显示绿色
PORTD |= (1<<Red); //红色指示亮
TC1321_SET(878); // D/A送电压14.4V ,同时进行温度补偿
while(Second_count_2>600) //10小时到 600
{ //则跳到第七步
Second_count_1=00; //延时55秒
while(1) //延时3分钟,防止电流反灌
{
TC1321_SET_138(892); // D/A送电压13.8V ,同时进行温度补偿
if(Second_count_1>55)
{goto step_7;}
}
}
adc_mux=0X01; //采样当前电池电压大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
if(adc_old < 353) //检测当前电压是不是小于13V
{ //小于13V则跳到第3步
goto step_3;
}
adc_mux=0X07; //采样当前电流大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
Second_count_3=0; //为3秒等待做准备,因为拔掉电池插座也会满足此条件,但应该进入0电流报警,所以等3秒再检测电流
if(adc_old > 0x33 && adc_old < 217) //检测当前电流是不是小于2A---0.6V A/D
{ //小于则跳到第5步
while(Second_count_3<4)
{
// temp |= (1<<anther);
// alarm();
// PORTB &= ~(1<<P0); //关断P0 4A恒流充电
// PORTD &= ~(1<<P1); //关断P1 4A恒流充电
// PORTB &= ~(1<<P2); //关断P2 4A恒流充电
// PORTB |= (1<<P3); //打开P3 4A恒流充电
;
}
adc_mux=0X07;
Delay(0xff); //A/D采样延时
ad_reulst();
Second_count_3=00; //延时3分钟
Second_count_4=00; //Second_count_1*Second_count_2=60*3
while(adc_old > 0x33 && adc_old < 217)//延时3分钟,防止电流反灌
{
TC1321_SET_138(900); // D/A送电压13.8V
while(Second_count_3<119){;} //死等2分钟
while(1)
{
adc_mux=0X01; //采样当前电池电压大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
if(adc_old < 353) //检测当前电压是不是大于13V
{goto step_3;}
adc_mux=0X07;
Delay(0xff); //A/D采样延时
ad_reulst();
//if(adc_old > 0x45 )
if(adc_old > 0x33 && adc_old < 217)
{goto step_7;}
TC1321_SET_1(814); // D/输出14.1V,不补偿
}
}
}
}
/************************ 第五步 分析、绿色灯 12V *****************************/
step_5:
goto step_3;
/****************** 第六步 最高充电电压、15.8V 绿色指示灯 *********************/
step_6:
goto step_3;
/******************* 第七步 维护模式、浮充13.8V 绿色指示灯 ********************/
step_7:
Second_count_1=00; //延时48小时,等于172800秒
Second_count_2=00; //Second_count_1*Second_count_2=60*2880
while(1)
{
temp |= (1<<anther);
alarm(); //报警扫描
PORTD |= (1<<Green); //指示灯显示绿色
PORTD &= ~(1<<Red); //红色指示灯灭
PORTB &= ~(1<<P0); //关断P0 2A恒流充电
PORTD &= ~(1<<P1); //关断P1 2A恒流充电
PORTB |= (1<<P2); //打开P2 2A恒流充电
PORTB &= ~(1<<P3); //关断P3 2A恒流充电
TC1321_SET_138(900); // D/A送电压13.8V
if(Second_count_2>28880) //大于48小时 28880
{ //则跳到第8步
goto step_8;
}
adc_mux=0X07;
Delay(0xff); //A/D采样延时
ad_reulst();
Second_count_3=00;
if(adc_old > 56 && adc_old < 90 ) //电流 0.5A
{
while(Second_count_3<3) //等待2秒,因为拔掉电池,电流下降也会满足此条件,但是应该进入
{ //0电流报警,而不该进入第四步,所以等待2秒
//temp |= (1<<anther);
//alarm();
//PORTB &= ~(1<<P0); //关断P0 2A恒流充电
//PORTD &= ~(1<<P1); //关断P1 2A恒流充电
//PORTB |= (1<<P2); //打开P2 2A恒流充电
//PORTB &= ~(1<<P3); //关断P3 2A恒流充电
;
}
adc_mux=0X07;
Delay(0xff); //A/D采样延时
ad_reulst();
if(adc_old > 56 && adc_old < 90 )
{
goto step_8;
}
}
adc_mux=0X01; //采样当前电池电压大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
if(adc_old < 353) //检测当前电压是不是小于13V
{ //小于则跳到第3步
goto step_3;
}
}
/***************** 第八步 脉冲维护充电 13.8V 绿色指示灯 ***********************/
step_8:
_nop_();
while(1)
{temp &= ~(1<<anther); //关断0电流报警
alarm(); //报警扫描
PORTB &= ~(1<<P0); //关断P0 0.16A恒流充电
PORTD |= (1<<P1); //打开P1 0.16A恒流充电
PORTB &= ~(1<<P2); //关断P2 0.16A恒流充电
PORTB &= ~(1<<P3); //关断P3 0.16A恒流充电
TC1321_SET_1(945); // D/A送电压11.5V
PORTD |= (1<<Green); //指示灯显示绿色
PORTD &= ~(1<<Red); //红色指示灯灭
adc_mux=0X01; //采样当前电池电压大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
if(adc_old < 345) //检测当前电压是不是小于13V
{ //如果小于则跳到第3步
goto step_3;
}
adc_mux=0X01; //采样当前电池电压大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
if(adc_old < 350) //检测当前电压是不是小于13.2V
{ //则用脉冲充电
PORTD |= (1<<Green); //指示灯显示绿色
PORTD &= ~(1<<Red); //红色指示灯灭
PORTB &= ~(1<<P0); //关断P0 2A恒流充电
PORTD |= (1<<P1); //打开P1 2A恒流充电
PORTB &= ~(1<<P2); //关断P2 2A恒流充电
PORTB &= ~(1<<P3); //关断P3 2A恒流充电
TC1321_SET_138(892); // D/A送电压13.8V
adc_mux=0X01; //采样当前电池电压大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
while(adc_old >= 345 && adc_old < 365) //检测当前电压是不是小于13.75V
{
adc_mux=0X01; //采样当前电池电压大小
Delay(0xff); //A/D采样延时
ad_reulst(); //刷新A/D采样值
}
}
}
}
}
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*
if(adc_old!=adc_rel)
{
adc_old=adc_rel;
if(adc_old > 0x45 && adc_old < 0x190)
{ PORTD |= (1<<PD2);PORTD &= ~(1<<PD3);}
else
//PORTC &= ~((1<<PC3)|(1<<PC4)|(1<<PC5));//
{PORTD &= ~(1<<PD2); PORTD |= (1<<PD3); }
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -