📄 prj.c
字号:
{
r_CtrKey_Delay=0;
b_LongKey_Status=0;
b_pin_CtrKey_Sleep=1;
}
}
else
{
b_pin_CtrKey_Sleep=0;
if(b_CtrKey_1)
{
r_CtrKey_Delay++;
if(r_CtrKey_Delay>100)
{
b_CtrKey_1=0;
r_LongKeyTime=0;
b_LongKey_Status=0;
}
}
else
{
if(b_250MS_5S)
{
b_250MS_5S=0;
r_LongKeyTime++;
if(r_LongKeyTime>4&&!b_LongKey_Status)
{
b_CtrKey_Action=1;
b_LongKey_Status=1;
}
}
r_CtrKey_Delay=0;
}
}
}
#if 0
///================================================================
void pro_LightKEY()
{
if(_pin_LightKEY)
{
if(!b_LightKey_1)
{
r_LightKey_Delay++;
if(r_LightKey_Delay>100)
{
b_LightKey_1=1;
}
}
else
{
r_LightKey_Delay=0;
b_LongKey_Status_Light=0;
b_pin_LightKey_Sleep=1;
}
}
else
{
b_pin_LightKey_Sleep=0;
if(b_LightKey_1)
{
r_LightKey_Delay++;
if(r_LightKey_Delay>100)
{
b_LightKey_1=0;
r_LongKeyTime_Light=0;
b_LongKey_Status_Light=0;
}
}
else
{
if(b_250MS_5S_Light)
{
b_250MS_5S_Light=0;
r_LongKeyTime_Light++;
if(r_LongKeyTime_Light>4&&!b_LongKey_Status_Light)
{
r_LightNum++;
if(r_LightNum>2) r_LightNum=0;
b_LongKey_Status_Light=1;
}
}
r_CtrKey_Delay=0;
}
}
}
#endif
///================================================================
void pro_PowerInput()
{
if(_pin_PowerIN)
{
if(!b_PowerIN)
{
r_PowerInput_Delay++;
if(r_PowerInput_Delay>150)
{
b_PowerIN=1;
b_Out_5V=0; /// 拔掉充电线路的时候, 关闭输出. ///2012-2-3 14:06
_pin_Out_5V=0;
}
}
else
{
r_PowerInput_Delay=0;
b_EXT_PWR=0;
b_pin_PowerIN_Sleep=1;
}
}
else
{
b_pin_PowerIN_Sleep=0;
if(b_PowerIN)
{
r_PowerInput_Delay++;
if(r_PowerInput_Delay>150)
{
b_PowerIN=0;
b_EXT_PWR=1;
r_250MS_20S=0;
}
}
else
r_PowerInput_Delay=0;
}
}
///================================================================
void pro_LED()
{
if(b_Charge)
{
if(b_ChargeFull) /// Charge Full Flag
{
_pin_LEDH=0;
_pin_LEDMH=0;
_pin_LEDML=0;
_pin_LEDL=0;
}
else
{
if(b_250MS_1S)
{
b_250MS_1S=0;
r_blink_Time++;
if(r_blink_Time>=10)
{
if(r_VBat_Step==0) r_blink_Time=0;
if(r_VBat_Step==1) r_blink_Time=2;
if(r_VBat_Step==2) r_blink_Time=4;
if(r_VBat_Step==3) r_blink_Time=6;
if(r_VBat_Step==4) r_blink_Time=6;
}
}
if((r_blink_Time>>1)==0)
{
_pin_LEDH=1;
_pin_LEDMH=1;
_pin_LEDML=1;
_pin_LEDL=1;
}
if((r_blink_Time>>1)==1)
{
_pin_LEDH=1;
_pin_LEDMH=1;
_pin_LEDML=1;
_pin_LEDL=0;
}
if((r_blink_Time>>1)==2)
{
_pin_LEDH=1;
_pin_LEDMH=1;
_pin_LEDML=0;
_pin_LEDL=0;
}
if((r_blink_Time>>1)==3)
{
_pin_LEDH=1;
_pin_LEDMH=0;
_pin_LEDML=0;
_pin_LEDL=0;
}
if((r_blink_Time>>1)==4)
{
_pin_LEDH=0;
_pin_LEDMH=0;
_pin_LEDML=0;
_pin_LEDL=0;
}
}
}
else
{
if(b_Out_5V)
{
if(r_VBat_Step==0)
{
_pin_LEDH=1;
_pin_LEDMH=1;
_pin_LEDML=1;
if(b_250MS_1S)
{
b_250MS_1S=0;
_pin_LEDL=!_pin_LEDL;
}
}
if(r_VBat_Step==1)
{
_pin_LEDH=1;
_pin_LEDMH=1;
_pin_LEDML=1;
_pin_LEDL=0;
}
if(r_VBat_Step==2)
{
_pin_LEDH=1;
_pin_LEDMH=1;
_pin_LEDML=0;
_pin_LEDL=0;
}
if(r_VBat_Step==3)
{
_pin_LEDH=1;
_pin_LEDMH=0;
_pin_LEDML=0;
_pin_LEDL=0;
}
if(r_VBat_Step==4)
{
_pin_LEDH=0;
_pin_LEDMH=0;
_pin_LEDML=0;
_pin_LEDL=0;
}
}
if(!b_Out_5V)
{
_pin_LEDH=1;
_pin_LEDMH=1;
_pin_LEDML=1;
_pin_LEDL=1;
}
}
}
///================================================================
/// 通话结束 // 无对外放电(无5V输出) // 无外部电源输入 // 按键释放
void sleep()
{
if(b_pin_CtrKey_Sleep&&b_pin_PowerIN_Sleep&&!b_Out_5V&&b_pin_LightKey_Sleep)
{
_pin_LEDH=1;
_pin_LEDMH=1;
_pin_LEDML=1;
_pin_LEDL=1;
_pin_Out_5V=0;
_adcr=0; //==========HT46R065
_acsr=0x41; // ADC module power off
_halt();
_adcr=0x10;
_acsr=0x01;
r_Low_Voltage_Time=0;
}
}
///================================================================
void main()
{
pro_function_initial();
r_8Count=8;
_t0on=1;
for(;r_250MS_20S<8;)
{
if(b_2ms)
{
b_2ms=0;
rl_VBat=AdcSub(c_Bat_Voltage);
}
pro_VBat_L();
}
while(1)
{
_clrwdt();
pro_CtrKEY();
// pro_LightKEY();
pro_PowerInput();
pro_Check_ChargeFull();
//if(!_pin_Out_5V) pro_VBat();
// else
pro_VBat_L();
if(b_2ms)
{
if(r_8Count)
{
r_8Count--;
rl_OUT_Current_sum+=AdcSub(c_OUT_Current);
rl_VBat_sum+=AdcSub(c_Bat_Voltage);
}
else
{
rl_Out_Current=rl_OUT_Current_sum/4;
rl_VBat=rl_VBat_sum/4;
rl_OUT_Current_sum=0;
rl_VBat_sum=0;
r_8Count=4;
}
}
//-------------------------------------------------------------------------
if(b_EXT_PWR) // 有外部电源
{
b_Charge=1;
_pin_Out_5V=1;
}
else // 无外部电源
{
b_Charge=0;
b_ChargeFull=0;
r_blink_Time=10;
}
if(b_CtrKey_Action)
{
b_CtrKey_Action=0;
b_Out_5V=!b_Out_5V;
r_Close_5V_Delay=0;
}
switch(r_LightNum)
{
case 0:
_pin_Light=1;
_pin_LLight=1;
break;
case 1:
_pin_LLight=1;
_pin_Light=0;
break;
case 2:
_pin_Light=1;
_pin_LLight=0;
break;
default:
r_LightNum=0;
break;
}
if(b_Out_5V) // 对外放电的状态控制
{
_pin_Out_5V=1;
if(rl_Out_Current_OVER_Time>2500&&(rl_Out_Current<=c_C100mA))
{
b_Out_5V=0;
}
}
else
{
//_pin_Out_5V=0;
rl_Out_Current_OVER_Time=0;
}
if(rl_Out_Current>=c_C100mA)
{
rl_Out_Current_OVER_Time=0;
}
//-------------------------------------------------------------------------
if(b_2ms)
{
b_2ms=0;
pro_LED();
sleep();
}
}
}
/* 定时器中断程序 */ /// 2ms 中断
void TIMER_ISR()
{
b_2ms=1;
r_VBat_Delay++;
if(rl_Out_Current_OVER_Time<4000&&b_Out_5V)
rl_Out_Current_OVER_Time++;
r_250MS++;
if(r_250MS>=125)
{
b_250MS_1S=1;
b_250MS_2S=1;
b_250MS_3S=1;
b_250MS_5S=1;
b_250MS_5S_Light=1;
b_250MS_20S=1;
r_250MS=0;
}
if(b_250MS_20S)
{
if(!b_Low_Voltage)
{
r_Low_Voltage_Time=0;
}
else
{
if(r_Low_Voltage_Time<80) r_Low_Voltage_Time++;
else
{
b_Out_5V=0;
//_pin_Out_5V=0;
}
}
if(r_250MS_20S<250) r_250MS_20S++;
b_250MS_20S=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -