//#ifndef _VARIABLE_
//#define _VARIABLE_
#define TURN_ON_WDT 0
#define DOUBLE_LED_COM_RED 0
#if (TURN_ON_WDT)
#define clrwdt() asm("clrwdt")
#else
#define clrwdt() asm("nop")
#endif
#if (DOUBLE_LED_COM_RED)
#define ON 0
#define OFF 1
#else
#define ON 1
#define OFF 0
#endif
#define uchar unsigned char
#define uint unsigned int
#define bitset(Var,bitnum) ((Var) |= (1 << (bitnum)))
#define bitclr(Var,bitnum) ((Var) &= (1 << (bitnum)))
/////////////////////////////////////////////////////////////////////////
#define nop() asm("nop")
/////////////////////////////////////////////////////////////////////////
union byte_type_t
{
uchar byte;
struct p8_bit
{
uchar bit0:1 ; // 1
uchar bit1:1 ; // 2
uchar bit2:1 ; // 3
uchar bit3:1 ; // 4
uchar bit4:1 ; // 5
uchar bit5:1 ; // 6
uchar bit6:1 ; // 7
uchar bit7:1 ; // 8
} bitt;
};
typedef volatile union byte_type_t BYTE;
union word_type_t
{
uint word;
struct p16_bit
{
uchar bit0:1 ; // 1
uchar bit1:1 ; // 2
uchar bit2:1 ; // 3
uchar bit3:1 ; // 4
uchar bit4:1 ; // 5
uchar bit5:1 ; // 6
uchar bit6:1 ; // 7
uchar bit7:1 ; // 8
uchar bit8:1 ; // 9
uchar bit9:1 ; // 10
uchar bit10:1 ; // 11
uchar bit11:1 ; // 12
uchar bit12:1 ; // 13
uchar bit13:1 ; // 14
uchar bit14:1 ; // 15
uchar bit15:1 ; // 16
} bitt;
};
typedef volatile union word_type_t WORD;
/////////////////////// define Volt ////////////////////////////////
#define VOLT_SOLAR_7V 0xCC //real:1v
////////////////////////////////////////////////////************************
#define VOLT_0D0T2V 0x5 //Uopen > Ubt + 0.2v,charg led on.
#define VOLT_0D0T7V 0x8F //0.7*8=5.6v; <5.6v bt not in
#define VOLT_8V 0xCC //Frist >8V 1S,Bt is in/Charg <8v reset(bt take out)
#define VOLT_10DOT6V 0x10F //>10.6V GO OUT
#define VOLT_10DOT4V 0x10A //In charg,<10.4v,reset
#define VOLT_10DOT5V 0x10C //Frist < 10.5v, bt is fault
#define VOLT_11V 0x119 //Load on,bt <11v Off load
#define VOLT_11DOT2V 0x11E //Frist >11.2v,can open load
#define VOLT_13V 0x14C //In float mode,<13v go charg
#define VOLT_14V 0x166 //1.75*8=14v; over 14v,is fault bt
#define VOLT_15V 0x180 //Frist:over 15v,is fault bt
#define VOLT_15DOT1V 0x182 //In charg:over 15.1v,is fault bt
#define VOLT_14DOT4V 0x170 //charg 14.4v,<13v start charg
#define VOLT_14DOT9V 0x17d //over 15v is error,<14.9v go out
#define VOLT_26DOT8V 0x2B0 //real 26.9v
#define VOLT_27V 0x2B3 //Usolar > 27v,error 26.8v
//volt dispaly//
#define VOLT_11DOT3V 0x123 //real:11.4v 0x121
#define VOLT_11DOT5V 0x126
#define VOLT_12DOT3V 0x13D //real:12.4v 0x13A
#define VOLT_12DOT5V 0x140
#define VOLT_13DOT4V 0x159 //real:13.4v 0x157
#define VOLT_13DOT6V 0x15C
#define VOLT_31A 0x400 //CHARG OVER AMP
extern persistent BYTE FLAG1;
#define KEY_LOCK_FG FLAG1.bitt.bit0 //********************
#define GO_RESET1_FG FLAG1.bitt.bit1 //
#define BATT_FULL_FG FLAG1.bitt.bit2 //
#define OVER_14DOT4V_FG FLAG1.bitt.bit3
#define SOLAR_FLASH_FG FLAG1.bitt.bit4
#define SOLAR_OVER_BT_FG FLAG1.bitt.bit5
#define BEGIN_4S_30S_FG FLAG1.bitt.bit6
#define OVER_27V_FG FLAG1.bitt.bit7
extern persistent BYTE FLAG2;
#define BTLED_FLASH_GREEN_FG FLAG2.bitt.bit0
#define OVER_13DOT6V_FG FLAG2.bitt.bit1
#define OVER_12DOT5V_FG FLAG2.bitt.bit2
#define OVER_11DOT5V_FG FLAG2.bitt.bit3
#define FLASH_LOAD_OVER_AMP_FG FLAG2.bitt.bit4
#define LOW_11V_FG FLAG2.bitt.bit5
#define LESS_10DOT6V_FG FLAG2.bitt.bit6
#define NOT_HAVE_SOLAR_FG FLAG2.bitt.bit7
extern persistent BYTE FLAG3;
#define OVER_15V_FG FLAG3.bitt.bit0
#define OVER_31A_FG FLAG3.bitt.bit1
#define FLOAT_CHARG_FG FLAG3.bitt.bit2
#define LESS_12DOT5V_FG FLAG3.bitt.bit3
//#define LOAD_LEVEL_FG FLAG3.bitt.bit4
//#define LOAD_CHECK_FG FLAG3.bitt.bit5
extern persistent BYTE FLAG4;
#define LOAD_ON_FG FLAG4.bitt.bit0
#define FAULT_BT_FG FLAG4.bitt.bit1
/////////////////////// define AD_Ch ///////////////////////////
#define AD_BATT 0x02
#define AD_CHARG_CURRENT 0x05 //0x04
#define AD_LOAD_CURRENT 0x04 //0x05
#define AD_NTC 0x08
//#endif
/////////////////////// define use Ram ///////////////////////////
extern persistent volatile uchar u_cUpData_Volt1;
extern persistent volatile uchar u_cUpData_Volt2;
extern persistent volatile uchar u_cLow_11V_1;
extern persistent volatile uchar u_cLow_11V_2;
extern persistent volatile uchar u_cReset_Delay1;
extern persistent volatile uchar u_cReset_Delay2;
extern persistent volatile uchar u_cCharg_OverSTOP_5s_1;
extern persistent volatile uchar u_cCharg_OverSTOP_5s_2;
extern persistent volatile uchar u_cFast_Up_Error1;
extern persistent volatile uchar u_cFast_Up_Error2;
//****************
extern persistent volatile uchar flash_over_AMP_led_1;
extern persistent volatile uchar flash_over_AMP_led_2;
extern persistent volatile uchar flash_over_AMP_led_3;
extern persistent volatile uchar flash_solar_led_1;
extern persistent volatile uchar flash_solar_led_2;
extern persistent volatile uchar flash_bt_volt_led_1;
extern persistent volatile uchar flash_bt_volt_led_2;
extern persistent volatile uchar u_cKey_press;
extern persistent volatile uchar u_cDelay_ms;
extern persistent volatile uchar u_cCheck_Temp_ms;
extern persistent volatile uchar u_cBTtake_in_1s_1;
extern persistent volatile uchar u_cBTtake_in_1s_2;
extern persistent volatile uchar flash_fault_led_1;
extern persistent volatile uchar flash_fault_led_2;
extern persistent volatile uchar ntc_table;
extern persistent volatile uchar u_
cOver31A_D3min_1;
extern persistent volatile uchar u_cOver31A_D3min_2;
extern persistent volatile uchar u_cOver31A_D3min_3;
extern persistent volatile uchar u_cCheck_Hi1_ms;
extern persistent volatile uchar u_cCheck_Hi2_ms;
extern persistent volatile uchar u_cCheck_Hi3_ms;
extern persistent volatile uchar u_cCheck_200ms;
extern persistent volatile uchar ntc_temp;
extern persistent volatile uchar temp_buff;
extern persistent volatile uchar u_cNtc_time_1; //NTC not change,over 10s,change volt
extern persistent volatile uchar u_cNtc_time_2;
extern persistent volatile uchar u_cCharg_OverAMP_3s_1;
extern persistent volatile uchar u_cCharg_OverAMP_3s_2;
extern persistent volatile uchar u_cLoadOverAMP_3s_1;
extern persistent volatile uchar u_cLoadOverAMP_3s_2;
extern persistent volatile uint u_sNTC_VOLT;
extern persistent volatile uint u_sBATT_VOLT;
extern persistent volatile uint u_sLoadCurr_VOLT;
extern persistent volatile uint u_sChargCurr_VOLT;