📄 charge.c
字号:
void Init_All()
{
Clr_Dog();
Init_Var();
Init_IO();
Init_AD();
Init_Timer();
Init_RTC();
Init_WDT();
Init_Interrupt();
Led_Ctrl(1,2); //L3闪烁——正常运行
Led_Ctrl(0,0); //L2灭——没有过充或过放
charge_ctrl = 0; //负荷12关
charge_ctrlB = 0; //负荷11关
charge_output = 1; //充电
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
uchar Get_Mode()
{
uchar mode;
Clr_Dog();
mode = 0;
if(!P11)
{
mode += 1;
}
if(!P10)
{
mode += 2;
}
if(!P13)
{
mode += 4;
}
if(!P12)
{
mode += 8;
}
return(mode);
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
uchar GetAd()
{
uchar i;
uint BatTmp,SunTmp;
EAD = 0;
BatTmp = 0;
SunTmp = 0;
for(i=0;i<8;i++)
{
BatTmp += AdValue.BatAd[i];
SunTmp += AdValue.SunAd[i];
}
BatValue = BatTmp/8;
SunValue = SunTmp/8;
return(BatValue);
EAD = 1;
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
void Main_Logic12(uchar TimeMode)
{
Clr_Dog();
if(BatValue>TINGCHONG12)// && charge_output==0)
{
enPWM = 0; //禁止PWM
charge_output = 0; //停止充电
PowerFlag = 1; //允许放电
Led_Ctrl(1,2); //运行状态灯L3闪烁
Led_Ctrl(0,1); //过充过放灯L2亮
}
else if(BatValue>GUOCHONG12)
{
enPWM = 1; //允许PWM
PowerFlag = 1; //允许放电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮
else
Led_Ctrl(1,2);
Led_Ctrl(0,1); //过充过放灯L2亮
}
else if(BatValue>YUNFANG12)
{
enPWM = 0; //禁止PWM
charge_output = 1; //全速充电
PowerFlag = 1; //允许放电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮
else
Led_Ctrl(1,2);
Led_Ctrl(0,0); //过充过放灯L2灭
}
else;
Clr_Dog();
if(BatValue<GUOFANG12)
{
charge_ctrlB = 0; //关闭负荷11
charge_ctrl = 0; //关闭负荷12
enPWM = 0; //禁止PWM
charge_output = 1; //全速充电
PowerFlag = 0; //禁止放电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮(充电)
else
Led_Ctrl(1,2);
Led_Ctrl(0,2); //过充过放灯L2闪烁(过放)
}
else
{
if(BatValue<YUNCHONG12)
{
enPWM = 0; //禁止PWM
charge_output = 1; //全速充电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮(充电)
else
Led_Ctrl(1,2);
Led_Ctrl(0,0); //过充过放灯L2灭
}
if(PowerFlag)
{
if(TimeMode == 0)
{
charge_ctrlB = 1; //启动负荷
charge_ctrl = 1; //启动负荷
CtrlFlag = 1;
}
else
{
if(SunValue>=LIANGDENG12)
Delay4min2 = 0;
if(SunValue<=MIEDENG12)
Delay4min1 = 0; //延时清0
if(SunValue<NODELAY12)
{
charge_ctrlB = 1; //启动负荷11
if(CtrlFlag)
{
charge_ctrl = 1; //启动负荷12
}
if(ClrFlag)
{
Seconds = 0; //清0
Minutes = 0; //清0
Hours = 0; //启动负荷的同时时间清0开始计数
ClrFlag = 0; //禁止清0
}
}
else if(SunValue<LIANGDENG12)
{
if(Delay_4min(0)) /*延时4min*/
{
if(SunValue<LIANGDENG12)
{
charge_ctrlB = 1; //启动负荷
if(CtrlFlag)
{
charge_ctrl = 1; //启动负荷
}
if(ClrFlag)
{
Seconds = 0; //清0
Minutes = 0; //清0
Hours = 0; //启动负荷的同时时间清0开始计数
ClrFlag = 0; //禁止清0
}
}
}
}
else;
if(SunValue>MIEDENG12)
{
if(Delay_4min(1))/*延时4min*/
{
if(SunValue>MIEDENG12)
{
charge_ctrlB = 0; //关闭负荷11
charge_ctrl = 0; //关闭负荷12
ClrFlag = 1; //允许清0
CtrlFlag = 1;
}
}
}
if(Hours >= TimeMode && ClrFlag==0)
{
charge_ctrl = 0; //关闭负荷12
ClrFlag = 1; //允许清0
CtrlFlag = 0;
}
}
}
}
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
void Main_Logic24(uchar TimeMode)
{
Clr_Dog();
if(BatValue>TINGCHONG24 && charge_output==0)
{
enPWM = 0; //禁止PWM
charge_output = 0; //停止充电
PowerFlag = 1; //允许放电
Led_Ctrl(1,2); //运行状态灯L3闪烁
Led_Ctrl(0,1); //过充过放灯L2亮
}
else if(BatValue>GUOCHONG24)
{
enPWM = 1; //允许PWM
PowerFlag = 1; //允许放电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮
else
Led_Ctrl(1,2);
Led_Ctrl(0,1); //过充过放灯L2亮
}
else if(BatValue>YUNFANG24)
{
enPWM = 0; //禁止PWM
charge_output = 1; //全速充电
PowerFlag = 1; //允许放电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮
else
Led_Ctrl(1,2);
Led_Ctrl(0,0); //过充过放灯L2灭
}
else;
Clr_Dog();
if(BatValue<GUOFANG24)
{
charge_ctrlB = 0; //关闭负荷11
charge_ctrl = 0; //关闭负荷12
enPWM = 0; //禁止PWM
charge_output = 1; //全速充电
PowerFlag = 0; //禁止放电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮(充电)
else
Led_Ctrl(1,2);
Led_Ctrl(0,2); //过充过放灯L2闪烁(过放)
}
else
{
if(BatValue<YUNCHONG24)
{
enPWM = 0; //禁止PWM
charge_output = 1; //全速充电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮(充电)
else
Led_Ctrl(1,2);
Led_Ctrl(0,0); //过充过放灯L2灭
}
if(PowerFlag)
{
if(TimeMode == 0)
{
charge_ctrlB = 1; //启动负荷
charge_ctrl = 1; //启动负荷
CtrlFlag = 1;
}
else
{
if(SunValue>=LIANGDENG24)
Delay4min2 = 0;
if(SunValue<=MIEDENG24)
Delay4min1 = 0; //延时清0
if(SunValue<NODELAY24)
{
charge_ctrlB = 1; //启动负荷11
if(CtrlFlag)
{
charge_ctrl = 1; //启动负荷12
}
if(ClrFlag)
{
Seconds = 0; //清0
Minutes = 0; //清0
Hours = 0; //启动负荷的同时时间清0开始计数
ClrFlag = 0; //禁止清0
}
}
else if(SunValue<LIANGDENG24)
{
if(Delay_4min(0)) /*延时4min*/
{
if(SunValue<LIANGDENG24)
{
charge_ctrlB = 1; //启动负荷
if(CtrlFlag)
{
charge_ctrl = 1; //启动负荷
}
if(ClrFlag)
{
Seconds = 0; //清0
Minutes = 0; //清0
Hours = 0; //启动负荷的同时时间清0开始计数
ClrFlag = 0; //禁止清0
}
}
}
}
else;
if(SunValue>MIEDENG24)
{
if(Delay_4min(1))/*延时4min*/
{
if(SunValue>MIEDENG24)
{
charge_ctrlB = 0; //关闭负荷11
charge_ctrl = 0; //关闭负荷12
ClrFlag = 1; //允许清0
CtrlFlag = 1;
}
}
}
if(Hours >= TimeMode && ClrFlag==0)
{
charge_ctrl = 0; //关闭负荷12
ClrFlag = 1; //允许清0
CtrlFlag = 0;
}
}
}
}
}
/********************END********************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -