📄 bat_ctrl12_ac.c.bak
字号:
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
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灭——没有过充或过放
P04 = 0; //负荷12关
P05 = 0; //关闭交流充电
P14 = 0; //
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
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);
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
void GetAd()
{
uchar i;
uint BatTmp,SunTmp;
Clr_Dog();
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;
EAD = 1;
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
void Main_Logic12(uchar TimeMode)
{
Clr_Dog();
if(BatValue>TINGAC12)
{
P05 = 0; //关闭交流充电
}
if(BatValue <OFFAC12)
{
P05 = 0; //关闭交流充电
}
if(BatValue>OFFAC12+4 && BatValue<YUNAC12)
{
P05 = 1; //开启交流充电
}
Clr_Dog();
if(BatValue>TINGCHONG12)// && P14==0)
{
if(!StopFlag)
{
ET0 = 0;
enPWM = 0; //禁止PWM
P14 = 0; //停止充电
StopFlag = 1; //停止充电
ET0 = 1;
}
PowerFlag = 1; //允许放电
Led_Ctrl(1,2); //运行状态灯L3闪烁
Led_Ctrl(0,1); //过充过放灯L2亮
}
else if(BatValue>GUOCHONG12)
{
if(!StopFlag)
{
ET0 = 0;
enPWM = 1; //允许PWM
ET0 = 1;
}
PowerFlag = 1; //允许放电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮
else
Led_Ctrl(1,2);
Led_Ctrl(0,1); //过充过放灯L2亮
}
else if(BatValue>YUNFANG12)
{
if(!StopFlag)
{
ET0 = 0;
enPWM = 0; //禁止PWM
P14 = 1; //全速充电
ET0 = 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)
{
P04 = 0; //关闭负荷12
enPWM = 0; //禁止PWM
P14 = 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
P14 = 1; //全速充电
StopFlag = 0; //允许再次充电
if(SunValue>BatValue)
Led_Ctrl(1,1); //运行状态灯L3亮(充电)
else
Led_Ctrl(1,2);
Led_Ctrl(0,0); //过充过放灯L2灭
}
if(PowerFlag)
{
if(TimeMode == 0)
{
P04 = 1; //启动负荷
CtrlFlag = 1;
}
else
{
Clr_Dog();
if(SunValue>=LIANGDENG12)
Delay4min2 = 0;
if(SunValue<=MIEDENG12)
Delay4min1 = 0; //延时清0
if(SunValue<NODELAY12)
{
if(CtrlFlag)
{
P04 = 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)
{
if(CtrlFlag)
{
P04 = 1; //启动负荷
}
if(ClrFlag)
{
Seconds = 0; //清0
Minutes = 0; //清0
Hours = 0; //启动负荷的同时时间清0开始计数
ClrFlag = 0; //禁止清0
}
}
}
}
else;
Clr_Dog();
if(SunValue>MIEDENG12)
{
if(Delay_4min(1))/*延时4min*/
{
if(SunValue>MIEDENG12)
{
P04 = 0; //关闭负荷12
ClrFlag = 1; //允许清0
CtrlFlag = 1;
}
}
}
if(Hours >= TimeMode && ClrFlag==0)
{
P04 = 0; //关闭负荷12
ClrFlag = 1; //允许清0
CtrlFlag = 0;
}
}
}
}
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
void Clr_Dog()
{
EA = 0; //关闭中断
WFEED1 = 0xA5; //执行清零第一部分
WFEED2 = 0x5A; //执行清零第二部分
EA = 1; //开中断
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:port=1--L3,port=0--L2;mode=0常灭--mode=1--常亮mode=2--闪烁
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
void Led_Ctrl(bit port,uchar mode)
{
Clr_Dog();
if(mode == 2)
{
if(port)
enL3 = 1;
else
enL2 = 1;
}
else if(mode == 1)
{
if(port)
{
enL3 = 0;
P00 = 0;
}
else
{
enL2 = 0;
P01 = 0;
}
}
else
{
if(port)
{
enL3 = 0;
P00 = 1;
}
else
{
enL2 = 0;
P01 = 1;
}
}
}
/*********************************************************************/
/*函数名:
/*功能:
/*输入参数:
/*返回值:
/*调用函数:
/*被调用函数:
/*编写日期:
/*最后修改日期:
/********************************************************************/
bit Delay_4min(bit enDelay)
{
Clr_Dog();
if(enDelay)
{
enDelay1 = 1;
if(Delay4min1>=DELAY_MIN)
{
enDelay1 = 0;
Delay4min1 = 0;
return(1);
}
}
else
{
enDelay2 = 1;
if(Delay4min2>=DELAY_MIN)
{
enDelay2 = 0;
Delay4min2 = 0;
return(1);
}
}
return(0);
}
/********************END********************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -