2017-06-20

/************單片機(jī):HT66018??********/

/************ ?日期:160315-160323?********/

//20160318 更改單片機(jī) 改為018 添加單節(jié)電壓采集

//20160323 總電壓電阻配比更改。

//20160323 放電中止時(shí)莽红,添加充電器高壓判斷。

//20160323 硬件需改動(dòng)够掠。電壓采樣方式改用MOS蚪黑,LED外加上拉,充電加二極管。

//版本號(hào)V1.0

#include "HT66F018.h"

//宏定義

#define VERSION_HIGH??1

#define VERSION_LOW???0

#define TIME2MS5_10MS??4

#define TIME2MS5_20MS??8

#define TIME10MS_20MS??2

#define TIME10MS_30MS??3

#define TIME10MS_50MS??5

#define TIME10MS_100MS??10

#define TIME10MS_200MS??20

#define TIME10MS_300MS??30

#define TIME10MS_500MS??50

#define TIME10MS_1S???100

#define PWM_MAX????1024

#define PWM_START???200

#define CHG_OVER_TIME??TIME_4H

#define TIME_4H????14400

//充電狀態(tài)

#define CHG_HIGH_STATE ??1

#define CHG_STATE ? ? ???2

#define DHG_STATE ? ? ? ?3

#define CHG_HIGH_VOLTAGE?CHG_VOLTAGE_10V9?//4.2*n+0.4+2.1

#define CHG_LOW_VOLTAGE??CHG_VOLTAGE_2V

//配比電阻為47K/15K 15/62*4096/3.3*u=300.29u

#define CHG_VOLTAGE_10V9 ? ?3273

#define CHG_VOLTAGE_2V ? ?601

//錯(cuò)誤狀態(tài)標(biāo)志位

#define CHG_HIGH_FLAG??1

#define BAT_DEAD_FLAG??2

#define CUT_WIRE_FLAG??3

//充放電錯(cuò)誤區(qū)分標(biāo)志

#define CHG_ERROR_FLAG ? ? ?1

//工作模式

#define POWER_ON_MODE??0

#define CHG_MODE?? ? ?1

#define CHG_END_MODE??2

#define DHG_MODE???3

#define ERROR_MODE???4

#define CHG_OVTEMP_MODE??5

#define CHG_OVVOL_MODE??6

#define END_MODE???7?????

//電池狀態(tài)

#define BAT_LEVEL_FULL ? ? ? ? ???BAT_VOLTAGE_8V2??//4.1*2

#define BAT_LEVEL_LOW?????BAT_VOLTAGE_6V??//3*2

#define BAT_PWM_LEVEL_HIGH????BAT_VOLTAGE_5V??//2.5*2

#define BAT_PWM_LEVEL_LOW????BAT_VOLTAGE_3V??//1.5*2

//電阻配比 47K/15K 15/62*u*4096/3.3=300.293u

#define BAT_VOLTAGE_8V2 ????2462????

#define BAT_VOLTAGE_6V?????1802

#define BAT_VOLTAGE_5V?????1501

#define BAT_VOLTAGE_3V?????901

#define BAT_FULL_STATE ?????1

#define BAT_OK_STATE?????2

#define BAT_LOW_STATE ?????3

#define BAT_PWM_STATE?????4

#define BAT_DEAD_STATE?????5

//單節(jié)檢測 電阻配比47K/30K ?30/77*u*4096/3.3=483.589u

//和總壓采樣倍率是483.589/300.293=1.61

#define CELL_CUT??????CELL_VOLTAGE_1V

#define CELL_LOW??????CELL_VOLTAGE_2V7

#define CELL_FULL??????CELL_VOLTAGE_4V18

#define CELL_VOLTAGE_1V??????484

#define CELL_VOLTAGE_2V7?????1306

#define CELL_VOLTAGE_4V18?????2021

#define CELL_STATE_OK ? ? ? ????0

#define CELL_STATE_CUT ? ? ? ????1

#define CELL_STATE_LOW ? ? ? ????2

#define CELL_STATE_FULL ? ? ? ????3

#define CURRENT_OVER_STATE ? ? ? ? ???1

#define CURRENT_OK_STATE ? ? ? ? ???0

#define CURRENT_OVER_LEVEL_HIGH???CURRENT_20A

#define CURRENT_OVER_LEVEL_LOW???CURRENT_10A

//采樣電阻4毫歐 4*i*0.001*4096/3.3=4.965i

#define CURRENT_20A??????99

#define CURRENT_10A??????50

#define TEMP_65C???697 ? ? ? ?//2.051K

#define TEMP_50C???1082 ? ? ? //3.588K

#define TEMP_40C???1420 ? ? ? //5.309K

#define TEMP_0C????3123 ? ? ? //32.116K

#define TEMP_N10C???3448 ? ? ? //53.198K

//AD通道宏定義 66F018

#define AD_TEMP_CHANNEL??2?????//AN2 溫度

#define AD_BAT_CHANNEL??4?????//AN4 電池總壓

#define AD_CHG_CHANNEL??3?????//AN3 充電器識(shí)別

#define AD_CURRENT_CHANNEL?5?????//AN5 電流

#define AD_BAT1_CHANNEL??6?????//AN6 第一節(jié)電池電壓

//控制端口宏定義 66F018

#define PWM_PORT_HIGH ? _pb|=0b00001000???//pb3 PWM 端口拉高

#define PWM_PORT_LOW ? ?_pb&=0b11110111 ??//pb3 PWM 端口拉低

#define PWM_ON ? ???_t2on=1?????//tp2 放電PWM輸出

#define PWM_OFF ? ???_t2on=0

#define CHG_ON ? ? ? ? ?_pa|=0b00001000???//pa3 輸出高

#define CHG_OFF ? ? ? ? _pa&=0b11110111???//pa3 輸出低

#define BAT_AD_ON ? ? ? _pb|=0b01000000???//pb6 高總電壓采樣IO控制口的打開

#define BAT_AD_OFF ? ? ?_pb&=0b10111111???//pb6 低總電壓采樣IO控制口的關(guān)閉

#define BAT1_AD_ON ? ? ?_pb|=0b00100000???//pb5 高第一節(jié)電壓采樣IO控制口的打開

#define BAT1_AD_OFF ? ? _pb&=0b11011111???//pb5 低第一節(jié)電壓采樣IO控制口的關(guān)閉

#define LEDR_ON ??_pb&=0b11111110???//pb0紅燈低亮

#define LEDR_OFF ??_pb|=0b00000001???//pb0 紅燈高滅

#define LEDG_ON ??_pb&=0b11111101???//pb1 綠燈低亮

#define LEDG_OFF ??_pb|=0b00000010???//pb1 綠燈高滅

#define VER_HIGH??_pb|=0b00010000???//pb4 版本號(hào)管腳

#define VER_LOW???_pb&=0b11101111???//pb4 版本號(hào)管腳

//變量定義

unsigned int ?uiReset;

unsigned char?ucTime_10mS;

//AD變量

unsigned char ? ucADChannel;

//AD充電變量

unsigned char ? ucADCHGFirst;

unsigned int ? ?uiADCHGValue;

unsigned int ? ?uiADCHGValueSUM;

unsigned char ? ucADCHGTime1;

unsigned char ? ucADCHGTime2;

unsigned char ? ucADCHGTime3;

unsigned char ? ucCHGDHGState;

//AD總電壓變量

unsigned char ? ucADBATFirst;

unsigned int ? ?uiADBATValue;

unsigned int ? ?uiADBATValueSUM;

unsigned char ? ucADBATTime1;

unsigned char ? ucADBATTime2;

unsigned char ? ucADBATTime3;

unsigned char ? ucADBATTime4;

unsigned char ? ucADBATTime5;

unsigned char ? ucBATState;

//AD第一節(jié)電壓變量

unsigned char ? ucADBAT1First;

unsigned int ? ?uiADBAT1Value;

unsigned int ? ?uiADBAT1ValueSUM;

unsigned char ? ucADBAT1Time1;

unsigned char ? ucADBAT1Time2;

unsigned char ? ucADBAT1Time3;

unsigned char ? ucCell1State;

//AD第二節(jié)電壓變量

unsigned int ? ?uiADBAT2Value;

unsigned char ? ucADBAT2Time1;

unsigned char ? ucADBAT2Time2;

unsigned char ? ucADBAT2Time3;

unsigned char ? ucCell2State;

//AD電流變量

unsigned char ? ucADCurrFirst;

unsigned int ? ?uiADCURRValue;

unsigned int ? ?uiADCURRValueSUM;

unsigned char ? ucADCURRTime1;

unsigned char ? ucADCURRTime2;

//unsigned char ? ucADCHGTime3;

unsigned char ? ucCURRState;

//AD溫度變量

unsigned char ? ucADTempFirst;

unsigned int ? ?uiADTempValue;

unsigned int ? ?uiADTempValueSUM;

unsigned char ? ucADTempTime1;

unsigned char ? ucADTempTime2;

unsigned char ? ucADTempTime3;

unsigned char ? ucTempState;

//充放電控制等變量

unsigned char ? ucWorkMode;

unsigned char ? ucTime_1S;

unsigned char ? ucBATStateFlag;

unsigned char ? ucPWMTime;

unsigned char ? uiCHGTime;

unsigned int ? ?uiPWMNow;

unsigned int ? ?uiPWMGoal;

unsigned char ? ucDHGPWMTime;

unsigned char ? ucVersionTime;

unsigned char ? ucERRORFlag;

//函數(shù)聲明

void SystemInit(void);??//系統(tǒng)初始化

void VariInit(void);??//變量初始化

void Timer(void);???//變量初始化

void FeedWDT(void);???//清看門狗

unsigned int Get_AD_Value(unsigned char ucADChannel);

void Control_Function(void);

void Delay_MS(unsigned char);

void AD_Manage(void);

void Version_Fution(void);

//函數(shù)定義

void SystemInit()???//系統(tǒng)初始化

{

_smod=0b11100000;???//系統(tǒng)時(shí)鐘4M

_lvrc=0b00110011;???//低壓復(fù)位2.55V

_cpc=0x08;????//關(guān)閉比較器 關(guān)閉CX

_acerl=0b01111100;??//AN2-AN6

_tmpc=0b00000100;???//tp2使能 tp0 tp1除能 系統(tǒng)時(shí)鐘輸出關(guān)閉 PB4作IO口

LEDG_OFF;?????//初始化關(guān)閉燈

LEDR_OFF;

BAT_AD_OFF;????//關(guān)閉總電壓AD開關(guān)

BAT1_AD_OFF;????//關(guān)閉第一節(jié)電壓AD開關(guān)

CHG_OFF;?????//充電控制口關(guān)閉

PWM_OFF;?????//放電PWM 關(guān)閉

PWM_PORT_HIGH;???//放電控制口關(guān)閉 MOS GS強(qiáng)制拉低

VER_LOW;?????//版本號(hào)初始為低

//端口初始化

_pawu=0x00;????//關(guān)閉喚醒

_papu=0x00;????//關(guān)閉上拉

_pac=0b11110000;???//pa4-pa7 ad輸入 其余輸出 0輸出1輸入

_pa&=0b11111110;???//pa0

_pa&=0b11111101;???//pa1

_pa&=0b11111011;???//pa2

_pbpu=0x00;????//關(guān)閉上拉

_pbc=0b00000100;???//PB2 AD 輸入 0輸出1輸入

?

_pcpu=0x00;????//關(guān)閉上拉

_pcc=0x00;????//輸出

_pc=0x00;

//定時(shí)器2.5MS

_tm0c0=0b00000000;??//頻率1M

_tm0c1=0b11000001;??//定時(shí)模式 比較器A匹配

_tm0al=0xc4;

_tm0ah=0x09;????//2500 定時(shí)2.5MS

_t0ae=0;?????//禁止中斷

_t0on=1;?????//打開定時(shí)器已添。開始定時(shí)

//放電MOS

_tm2c0=0b00000000;??//頻率1M

_tm2c1=0b10100100;??//PWM輸出 CCRP周期CCRA占空比 反向

_tm2rp=0x04;????//周期為4*256*1us=1024us

//AD

_adcr1=0b00000010;??//頻率1M 內(nèi)部參考源

_ade=0;?????//關(guān)中斷

//WDT

_wdtc=0b01010010;???//128MS

FeedWDT();

//再次初始化端口

LEDG_OFF;?????//初始化關(guān)閉燈

LEDR_OFF;

BAT_AD_OFF;????//關(guān)閉總電壓AD開關(guān)

BAT1_AD_OFF;????//關(guān)閉第一節(jié)電壓AD開關(guān)

CHG_OFF;?????//充電控制口關(guān)閉

PWM_OFF;?????//放電PWM 關(guān)閉

PWM_PORT_HIGH;???//放電控制口關(guān)閉 MOS GS強(qiáng)制拉低

VER_LOW;?????//版本號(hào)初始為低

}

/*********變量初始化**********/

void VariInit()

{

ucTime_10mS=0;

//AD變量

ucADChannel=AD_CHG_CHANNEL;

//AD充電器判斷變量

ucADCHGFirst=0;?

uiADCHGValue=0;

uiADCHGValueSUM=0;

ucADCHGTime1=0;

ucADCHGTime2=0;

ucADCHGTime3=0;

ucCHGDHGState=0;

//AD總電壓變量

ucADBATFirst=0;

uiADBATValue=0;

uiADBATValueSUM=0;

ucADBATTime1=0;

ucADBATTime2=0;

ucADBATTime3=0;

ucADBATTime4=0;

ucADBATTime5=0;

ucBATState=0;

//AD第一節(jié)電壓變量

ucADBAT1First=0;

uiADBAT1Value=0;

uiADBAT1ValueSUM=0;

ucADBAT1Time1=0;

ucADBAT1Time2=0;

ucADBAT1Time3=0;

ucCell1State=0;

//AD第二節(jié)電壓變量

uiADBAT2Value=0;

ucADBAT2Time1=0;

ucADBAT2Time2=0;

ucADBAT2Time3=0;

ucCell2State=0;

//AD電流變量

ucADCurrFirst=0;

uiADCURRValue=0;

uiADCURRValueSUM=0;

ucADCURRTime1=0;

ucADCURRTime2=0;

ucCURRState=0;

//AD溫度變量

ucADTempFirst=0;

uiADTempValue=0 ;

uiADTempValueSUM=0;

ucADTempTime1=0;

ucADTempTime2=0;

ucADTempTime3=0;

ucTempState=0;

//AD充放電控制等變量

ucWorkMode=POWER_ON_MODE;

ucTime_1S=0;

ucBATStateFlag=0;

ucPWMTime=0;

uiCHGTime=0;

uiPWMNow=0;

uiPWMGoal=0;

ucDHGPWMTime=0;

ucVersionTime=0;

ucERRORFlag=0;

}

/*********定時(shí)**********/

void Timer()

{

ucDHGPWMTime++;?????//放電PWM軟啟動(dòng)計(jì)時(shí)

ucTime_10mS++;

if(ucTime_10mS>=TIME2MS5_10MS)?//10MS計(jì)時(shí)

{

? ucTime_10mS=0;

?

? //AD充電器判斷變量

? ucADCHGTime1++;

? ucADCHGTime2++;

? ucADCHGTime3++;

?

? //AD總電壓變量

? ucADBATTime1++;

? ucADBATTime2++;

ucADBATTime3++;

ucADBATTime4++;

ucADBATTime5++;

//AD第一節(jié)電壓變量

ucADBAT1Time1++;

? ucADBAT1Time2++;

ucADBAT1Time3++;

//AD第二節(jié)電壓變量

ucADBAT2Time1++;

? ucADBAT2Time2++;

ucADBAT2Time3++;

//AD電流變量

ucADCURRTime1++;

ucADCURRTime2++;

//AD溫度變量

ucADTempTime1++;

ucADTempTime2++;

ucADTempTime3++;

//AD充放電控制等變量

ucPWMTime++;?????//PWM 充電計(jì)時(shí)

ucVersionTime++;????//版本號(hào)計(jì)時(shí)

ucTime_1S++;?????//1秒計(jì)時(shí)

if(ucTime_1S>=TIME10MS_1S)

{

?ucTime_1S=0;

?if(ucWorkMode==CHG_MODE)

?{?

??uiCHGTime++;???//充電計(jì)時(shí)

?}

}

?

}?

}

/*********清看門狗**********/

void FeedWDT()

{?

asm("CLR WDT");?

}

/*********系統(tǒng)延時(shí)空指令**********/

void Delay_MS(unsigned char j)??????//毫秒 不超過255毫秒

{

unsigned char i;

while(j--)

{

?for(i=0;i<94;i++)

?FeedWDT();

}?

}

/*********AD函數(shù)控制處理函數(shù)**********/

void AD_Manage()

{

?unsigned int uiADTemp;

?switch(ucADChannel)

?{

? ?case AD_CHG_CHANNEL:

? ? ? ? ucADChannel=AD_BAT_CHANNEL;?????//充電器充電狀態(tài)AD判斷

? ? ? ? uiADTemp=Get_AD_Value(AD_CHG_CHANNEL);??//滾動(dòng)平均值?

? ? ? ? if(ucADCHGFirst==0)

? ? ? ? {

? ? ? ? ? ucADCHGFirst=1;

? ? ? ? ? uiADCHGValueSUM=uiADTemp<<2;

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? uiADCHGValueSUM=uiADCHGValueSUM+uiADTemp;

? ? ? ? }

? ? ? ? uiADCHGValue=uiADCHGValueSUM>>2;

? ? ? ? uiADCHGValueSUM=uiADCHGValueSUM-uiADCHGValue;

? ? ? ? if(uiADCHGValue>=CHG_HIGH_VOLTAGE)???//充電器高壓

? ? ? ? {

? ? ? ? ? ucADCHGTime2=0;

? ? ? ? ? ucADCHGTime3=0;

? ? ? ? ? if(ucADCHGTime1>=TIME10MS_100MS)

? ? ? ? ? {

? ? ? ? ? ?ucADCHGTime1=TIME10MS_100MS;

? ? ? ? ? ?ucCHGDHGState=CHG_HIGH_STATE;

? ? ? ? ? }??

? ? ? ? }

? ? ? ? else if(uiADCHGValue>=CHG_LOW_VOLTAGE)??//充電狀態(tài)

? ? ? ? {

? ? ? ? ? ucADCHGTime1=0;

? ? ? ? ? ucADCHGTime3=0;

? ? ? ? ? if(ucADCHGTime2>=TIME10MS_50MS)

? ? ? ? ? {

? ? ? ? ? ?ucADCHGTime2=TIME10MS_50MS;

? ? ? ? ? ?ucCHGDHGState=CHG_STATE;

? ? ? ? ? ?BAT_AD_ON; ????????//打開總電壓AD控制端口

? ? ? ? ? ?BAT1_AD_ON; ???????//打開第一節(jié)電壓AD控制端口

? ? ? ? ? }??

? ? ? ? }

? ? ? ? else???????????//放電狀態(tài)

? ? ? ? {

? ? ? ? ?

? ? ? ? ? ucADCHGTime1=0;

? ? ? ? ? ucADCHGTime2=0;

? ? ? ? ? if(ucADCHGTime3>=TIME10MS_50MS)

? ? ? ? ? {

? ? ? ? ? ?ucADCHGTime3=TIME10MS_50MS;

? ? ? ? ? ?ucCHGDHGState=DHG_STATE;

? ? ? ? ? ?BAT_AD_ON; ????????//打開總電壓AD控制端口

? ? ? ? ? ?BAT1_AD_ON; ???????//打開第一節(jié)電壓AD控制端口

? ? ? ? ? }??

? ? ? ? ?

? ? ? ? }

? ? ? ? break;

? ?case AD_BAT_CHANNEL:????????//總電壓AD

? ? ? ? ucADChannel=AD_BAT1_CHANNEL;?????//下一次電流AD????

? ? ? ? uiADTemp=Get_AD_Value(AD_BAT_CHANNEL);??//滾動(dòng)平均值?

? ? ? ? if(ucADBATFirst==0)

? ? ? ? {

? ? ? ? ? ucADBATFirst=1;

? ? ? ? ? uiADBATValueSUM=uiADTemp<<2;

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? uiADBATValueSUM=uiADBATValueSUM+uiADTemp;

? ? ? ? }

? ? ? ? uiADBATValue=uiADBATValueSUM>>2;

? ? ? ? uiADBATValueSUM=uiADBATValueSUM-uiADBATValue;

?

? ? ? ? if(uiADBATValue>=BAT_LEVEL_FULL)?//大于4.1*2

? ? ? ? {

? ? ? ? ? ?ucADBATTime2=0;

??? ?ucADBATTime3=0;

??? ?ucADBATTime4=0;

??? ?ucADBATTime5=0;

? ? ? ? ? ?if(ucADBATTime1>=TIME10MS_100MS)

? ? ? ? ? ?{

? ? ? ? ? ?? ucADBATTime1=TIME10MS_100MS;

? ? ? ? ? ?? ucBATState=BAT_FULL_STATE;?

? ? ? ? ? ??

? ? ? ? ? ?}

??

? ? ? ? }

? ? ? ? else if(uiADBATValue<=BAT_PWM_LEVEL_LOW)?//小于1.5*2

? ? ? ? {

? ? ? ? ? ?ucADBATTime1=0;

??? ?ucADBATTime3=0;

??? ?ucADBATTime4=0;

??? ?ucADBATTime5=0;

? ? ? ? ? ?if(ucADBATTime2>=TIME10MS_100MS)

? ? ? ? ? ?{

? ? ? ? ? ?? ucADBATTime2=TIME10MS_100MS;

? ? ? ? ? ?? ucBATState=BAT_DEAD_STATE;?

? ? ? ? ? ?}

??

? ? ? ? }

? ? ? ? else if(uiADBATValue<=BAT_PWM_LEVEL_HIGH)?//小于2.5*2 大于1.5*2

? ? ? ? {

? ? ? ? ? ?ucADBATTime1=0;

??? ?ucADBATTime2=0;

??? ?ucADBATTime4=0;

??? ?ucADBATTime5=0;

? ? ? ? ? ?if(ucADBATTime3>=TIME10MS_100MS)

? ? ? ? ? ?{

? ? ? ? ? ?? ucADBATTime3=TIME10MS_100MS;

? ? ? ? ? ?? ucBATState=BAT_PWM_STATE;

? ? ? ? ? ?? ?

? ? ? ? ? ?}

??

? ? ? ? }

? ? ? ? else if(uiADBATValue<=BAT_LEVEL_LOW)?//小于3.0*2 大于2.5*2

? ? ? ? {

? ? ? ? ? ?ucADBATTime1=0;

??? ?ucADBATTime2=0;

??? ?ucADBATTime3=0;

??? ?ucADBATTime5=0;

? ? ? ? ? ?if(ucADBATTime4>=TIME10MS_100MS)

? ? ? ? ? ?{

? ? ? ? ? ?? ucADBATTime4=TIME10MS_100MS;

? ? ? ? ? ?? ucBATState=BAT_LOW_STATE;

? ? ? ? ? ??

? ? ? ? ? ?}

??

? ? ? ? }

? ? ? ? else???????????//

? ? ? ? {

? ? ? ? ? ?ucADBATTime1=0;

??? ?ucADBATTime2=0;

??? ?ucADBATTime3=0;

??? ?ucADBATTime4=0;

? ? ? ? ? ?if(ucADBATTime5>=TIME10MS_50MS)

? ? ? ? ? ?{

? ? ? ? ? ?? ucADBATTime5=TIME10MS_50MS;

? ? ? ? ? ?? ucBATState=BAT_OK_STATE;???

? ? ? ? ? ?}

? ? ? ? }

? ? ? ? break;

? ? /////////////////////////////

? ? case AD_BAT1_CHANNEL:????????//總電壓AD

? ? ? ? ucADChannel=AD_CURRENT_CHANNEL;?????//下一次電流AD????

? ? ? ? uiADTemp=Get_AD_Value(AD_BAT1_CHANNEL);???//滾動(dòng)平均值?

? ? ? ? if(ucADBAT1First==0)

? ? ? ? {

? ? ? ? ? ucADBAT1First=1;

? ? ? ? ? uiADBAT1ValueSUM=uiADTemp<<2;

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? uiADBAT1ValueSUM=uiADBAT1ValueSUM+uiADTemp;

? ? ? ? }

? ? ? ? uiADBAT1Value=uiADBAT1ValueSUM>>2;

? ? ? ? uiADBAT1ValueSUM=uiADBAT1ValueSUM-uiADBAT1Value;

?

?

? ? ? ? /****/

? ? ? ? if(uiADBAT1Value>=CELL_FULL)??????//大于4.18

? ? ? ? {

? ? ? ? ? ?ucADBAT1Time2=0;

??? ?ucADBAT1Time3=0;

? ? ? ? ? ?if(ucADBAT1Time1>=TIME10MS_1S)

? ? ? ? ? ?{

? ? ? ? ? ?? ucADBAT1Time1=TIME10MS_1S;

? ? ? ? ? ?? ucCell1State=CELL_STATE_FULL;?

? ? ? ? ? ?}

??

? ? ? ? }

? ? ? ? else if(uiADBAT1Value<=CELL_CUT)?????//小于1V

? ? ? ? {

? ? ? ? ? ?ucADBAT1Time1=0;

??? ?ucADBAT1Time3=0;

? ? ? ? ? ?if(ucADBAT1Time2>=TIME10MS_1S)

? ? ? ? ? ?{

? ? ? ? ? ?? ucADBAT1Time2=TIME10MS_1S;

? ? ? ? ? ?? ucCell1State=CELL_STATE_CUT;?

? ? ? ? ? ?}

??

? ? ? ? }

? ? ? ? else if(uiADBAT1Value<=CELL_LOW)?????//小于2.7V

? ? ? ? {

? ? ? ? ? ?ucADBAT1Time1=0;

??? ?ucADBAT1Time2=0;

? ? ? ? ? ?if(ucADBAT1Time3>=TIME10MS_1S)

? ? ? ? ? ?{

? ? ? ? ? ?? ucADBAT1Time3=TIME10MS_1S;

? ? ? ? ? ?? ucCell1State=CELL_STATE_LOW;

? ? ? ? ? ???

? ? ? ? ? ?}

??

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? ?ucADBAT1Time1=0;

??? ?ucADBAT1Time2=0;

??? ?ucADBAT1Time3=0;

? ? ? ? ? ?ucCell1State=CELL_STATE_OK;?

??

? ? ? ? }

? ?//////////////

? ? ? ? if((unsigned int) (uiADBATValue*1.61)>uiADBAT1Value)????//采樣配比差異 放大后,一樣比例滥酥。

? ? ? ? {

? ? ? ? ? ? uiADBAT2Value=(unsigned int) (uiADBATValue*1.61)-uiADBAT1Value;

?? ? ? ? if(uiADBAT2Value>=CELL_FULL)??????//大于4.18

?? ? ? ? {

?? ? ? ? ? ?ucADBAT2Time2=0;

???? ?ucADBAT2Time3=0;

?? ? ? ? ? ?if(ucADBAT2Time1>=TIME10MS_1S)

?? ? ? ? ? ?{

?? ? ? ? ? ?? ucADBAT2Time1=TIME10MS_1S;

?? ? ? ? ? ?? ucCell2State=CELL_STATE_FULL;?

?? ? ? ? ? ?}

???

?? ? ? ? }

?? ? ? ? else if(uiADBAT2Value<=CELL_CUT)?????//小于1V

?? ? ? ? {

?? ? ? ? ? ?ucADBAT2Time1=0;

???? ?ucADBAT2Time3=0;

?? ? ? ? ? ?if(ucADBAT2Time2>=TIME10MS_1S)

?? ? ? ? ? ?{

?? ? ? ? ? ?? ucADBAT2Time2=TIME10MS_1S;

?? ? ? ? ? ?? ucCell2State=CELL_STATE_CUT;?

?? ? ? ? ? ?}

???

?? ? ? ? }

?? ? ? ? else if(uiADBAT2Value<=CELL_LOW)?????//小于2.7V

?? ? ? ? {

?? ? ? ? ? ?ucADBAT2Time1=0;

???? ?ucADBAT2Time2=0;

?? ? ? ? ? ?if(ucADBAT2Time3>=TIME10MS_1S)

?? ? ? ? ? ?{

?? ? ? ? ? ?? ucADBAT2Time3=TIME10MS_1S;

?? ? ? ? ? ?? ucCell2State=CELL_STATE_LOW;?

?? ? ? ? ? ?? ??

?? ? ? ? ? ?}

???

?? ? ? ? }

?? ? ? ? else

?? ? ? ? {

?? ? ? ? ? ?ucADBAT2Time1=0;

???? ?ucADBAT2Time2=0;

???? ?ucADBAT2Time3=0;

?? ? ? ? ? ?ucCell2State=CELL_STATE_OK;?

???

?? ? ? ? }

??

? ? ? ? }?

? ? ? ///////

? ? ? ? break;

? ? ///////////////////////////////

? ?case AD_CURRENT_CHANNEL:

? ? ? ? ucADChannel=AD_TEMP_CHANNEL;

? ? ? ? uiADTemp=Get_AD_Value(AD_CURRENT_CHANNEL);

? ? ? ? if(uiADCURRValue>=CURRENT_OVER_LEVEL_HIGH)

? ? ? ? {

? ? ? ? ? ucADCURRTime2=0;

? ? ? ? ? if(ucADCURRTime1>=TIME10MS_500MS)

? ? ? ? ? {

? ? ? ? ? ? ?ucADCURRTime1=TIME10MS_500MS;

? ? ? ? ? ? ?ucCURRState=CURRENT_OVER_STATE;?

? ? ? ? ? }

? ? ? ? }

? ? ? ? else if(uiADCURRValue>=CURRENT_OVER_LEVEL_LOW)

? ? ? ? {

? ? ? ? ? ucADCURRTime1=0;

? ? ? ? ? if(ucADCURRTime2>=TIME10MS_1S)

? ? ? ? ? {

? ? ? ? ? ? ?ucADCURRTime2=TIME10MS_1S;

? ? ? ? ? ? ?ucCURRState=CURRENT_OVER_STATE;?

? ? ? ? ? }

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ?ucADCURRTime1=0;

? ? ? ? ?ucADCURRTime2=0;

? ? ? ? ?ucCURRState=CURRENT_OK_STATE;

? ? ? ? }

? ? ? ? break;

? ?case AD_TEMP_CHANNEL:

? ? ? ? ucADChannel=AD_CHG_CHANNEL;

? ? ? ? uiADTemp=Get_AD_Value(AD_TEMP_CHANNEL);

? ? ? ? if(ucADTempFirst==0)

? ? ? ? {

? ? ? ? ? ucADTempFirst=1;

? ? ? ? ? uiADTempValueSUM=uiADTemp<<2;?

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? uiADTempValueSUM=uiADTempValueSUM+uiADTemp;?

? ? ? ? }

? ? ? ? uiADTempValue=uiADTempValueSUM>>2;

? ? ? ? uiADTempValueSUM=uiADTempValueSUM-uiADTempValue;

? ? ? ? if((uiADTempValue>=TEMP_N10C)||(uiADTempValue<=TEMP_65C))

? ? ? ? {

? ? ? ? ?

? ? ? ? ? ucADTempTime2=0;

? ? ? ? ? ucADTempTime3=0;

? ? ? ? ? if(ucADTempTime1>=TIME10MS_1S)

? ? ? ? ? {

? ? ? ? ? ? ?ucADTempTime1=TIME10MS_1S;

? ? ? ? ? ? ?ucTempState=1;???????????//放電過溫<-10 >65

? ? ? ? ? }

? ? ? ? ?

? ? ? ? }

? ? ? ? else if((uiADTempValue>=TEMP_0C)||(uiADTempValue<=TEMP_50C))

? ? ? ? {

? ? ? ? ? ucADTempTime1=0;

? ? ? ? ? ucADTempTime3=0;

? ? ? ? ? if(ucADTempTime2>=TIME10MS_1S)

? ? ? ? ? {

? ? ? ? ? ? ?ucADTempTime2=TIME10MS_1S;

? ? ? ? ? ? ?ucTempState=2;???????????//充電過溫<0 >50

? ? ? ? ? }

? ? ? ? }

? ? ? ? else if((uiADTempValue>TEMP_50C)&&(uiADTempValue<=TEMP_40C))

? ? ? ? {

? ? ? ? ? ucADTempTime1=0;

? ? ? ? ? ucADTempTime2=0;

? ? ? ? ? if(ucADTempTime3>=TIME10MS_1S)

? ? ? ? ? {

? ? ? ? ? ? ?ucADTempTime3=TIME10MS_1S;

? ? ? ? ? ? ?ucTempState=3;???????????//40-50°

? ? ? ? ? }

? ? ? ? ?

? ? ? ? }

? ? ? ? else???????????????//0-40

? ? ? ? {

? ? ? ? ? ucADTempTime1=0;

? ? ? ? ? ucADTempTime2=0;

? ? ? ? ? ucADTempTime3=0;

? ? ? ? ? ucTempState=0;

? ? ? ? }

? ? ? ? break;

?

? ? default:

? ? ? ? ucADChannel=AD_CHG_CHANNEL;

? ? ? ? break;

?

?

?}

?

?

}

/*********充放電控制處理函數(shù)**********/

void Control_Function()

{

?switch(ucWorkMode)

?{

??case POWER_ON_MODE:

??? LEDG_OFF;????????//初始化關(guān)閉燈

??? LEDR_OFF;

??? PWM_OFF;????????//電機(jī)停止

??? PWM_PORT_HIGH;???????//拉高 電機(jī)停止

??? CHG_OFF;????????//充電停止

??? if(ucCHGDHGState==CHG_HIGH_STATE)??//充電器高壓

??? {

??? ??ucWorkMode=ERROR_MODE;

??? ??ucBATStateFlag=CHG_HIGH_FLAG;

??? }

??? else if(ucCHGDHGState==CHG_STATE)??//充電狀態(tài)

??? {

??? ? ?if(ucBATState==BAT_FULL_STATE)

??? ? ?{

??? ? ??ucWorkMode=CHG_END_MODE;??//充滿??

??? ? ?}

??? ? ?else if(ucBATState==BAT_DEAD_STATE)?//電池不良電壓小于1.5*n

??? ? ?{

??? ? ??ucWorkMode=ERROR_MODE;

??? ? ??ucBATStateFlag=BAT_DEAD_FLAG;?

??? ? ??ucERRORFlag=CHG_ERROR_FLAG;

??? ? ??

??? ? ?}

??? ? ?else

??? ? ?{

??? ? ??ucWorkMode=CHG_MODE;

??? ? ??ucPWMTime=0;

??? ? ??uiCHGTime=0;

???

??? ? ?}?

??? }

??? else if(ucCHGDHGState==DHG_STATE)

??? {

??? ??if((ucBATState==BAT_DEAD_STATE)||(ucBATState==BAT_PWM_STATE)||(ucBATState==BAT_LOW_STATE))//小于3.0*2V

??? ??{

??? ???ucWorkMode=END_MODE;

??? ????

??? ??}

??? ??else if((ucBATState==BAT_OK_STATE)||(ucBATState==BAT_FULL_STATE))

??? ??{

??? ???ucWorkMode=DHG_MODE;

??? ???uiPWMNow=PWM_START;

??? ???uiPWMGoal=PWM_MAX;

??? ???LEDG_OFF;

??? ???LEDR_OFF;

??? ???PWM_ON;?

??? ??

??? ??}

??? ??

??? ???

??? }

???

??? break;

??case CHG_MODE:

??? LEDR_ON;

??? LEDG_OFF;

??? _pa2=~_pa2;

??? if(ucBATState==BAT_PWM_STATE)???//脈沖充電

??? {

??? ?if(ucPWMTime>=TIME10MS_200MS)

??? ?{

??? ? ??ucPWMTime=0;

??? ? ??CHG_OFF; ?

??? ?}

??? ?else if(ucPWMTime>=TIME10MS_100MS)

??? ?{

??? ??CHG_ON; ?

??? ?}

??? ?else

??? ?{

??? ??CHG_OFF; ?

??? ?}

??? ?

??? }

??? else?????????//正常充電

??? {

??? ?CHG_ON;

??? ??_pa0=~_pa0;?

??? }

??? if((ucCell1State==CELL_STATE_FULL)||(ucCell2State==CELL_STATE_FULL))//單節(jié)充滿

??? {

??? ?CHG_OFF;

??? ?ucWorkMode=CHG_END_MODE;??

??? }

??? else if((ucCell1State==CELL_STATE_CUT)||(ucCell2State==CELL_STATE_CUT))//斷線

??? {

??? ?CHG_OFF;

??? ?ucWorkMode=ERROR_MODE;

??? ?ucBATStateFlag=CUT_WIRE_FLAG;

??? ?ucERRORFlag=CHG_ERROR_FLAG;

??? ?

??? }

???

??? if(uiCHGTime>=CHG_OVER_TIME)??????????//充電計(jì)時(shí)溢出

??? {

??? ?CHG_OFF;

??? ?ucWorkMode=CHG_END_MODE;

??? }

??? if((ucTempState==1)||(ucTempState==2))????????//充電過溫大于50度小于0度

??? {

??? ?CHG_OFF;

??? ?ucWorkMode=CHG_OVTEMP_MODE;?

??? }

??? if(ucCHGDHGState==DHG_STATE)??????????//拔掉充電器關(guān)機(jī)

??? {

??? ?ucWorkMode=END_MODE;?

??? }

???

???

???

??? break;

??case CHG_END_MODE:

??? LEDG_ON;

??? LEDR_OFF;

??? CHG_OFF;

??? if(ucCHGDHGState==DHG_STATE)??????????//拔掉充電器關(guān)機(jī)

??? {

??? ?ucWorkMode=END_MODE;?

??? }

???

???

??

??? break;

??case DHG_MODE:

??? LEDG_ON;

??? if(ucCHGDHGState==CHG_STATE)???//充電狀態(tài)

??? {

??? ? ?if(ucBATState==BAT_FULL_STATE)

??? ? ?{

??? ? ??ucWorkMode=CHG_END_MODE;??//充滿??

??? ? ?}

??? ? ?else if(ucBATState==BAT_DEAD_STATE)?//電池不良電壓小于1.5*n

??? ? ?{

??? ? ??ucWorkMode=ERROR_MODE;

??? ? ??ucBATStateFlag=BAT_DEAD_FLAG;

??? ? ??ucERRORFlag=CHG_ERROR_FLAG;

??? ? ???

??? ? ?}

??? ? ?else

??? ? ?{

??? ? ??ucWorkMode=CHG_MODE;

??? ? ??ucPWMTime=0;

??? ? ??uiCHGTime=0;

??? ? ?}

???

??? }?

??? if(ucDHGPWMTime>=TIME2MS5_20MS)?//軟啟動(dòng)

??? {?

??? ?ucDHGPWMTime=0;

??? ?unsigned int uiPWMTemp;

??? ?uiPWMTemp=0;

??? ?if(uiPWMNow

??? ?{

??? ??uiPWMTemp=uiPWMGoal-uiPWMNow;

??? ??if(uiPWMTemp>=20)

??? ??{

??? ???uiPWMNow=uiPWMNow+20;?

??? ??}

??? ??else

??? ??{

??? ???uiPWMNow=uiPWMNow+1;?

??? ??}

??? ???

??? ??

??? ?}

??? ?_tm2al=(unsigned char)uiPWMNow;

??? ?_tm2ah=(unsigned char)(uiPWMNow>>8);

??? }

??? if(ucCURRState==CURRENT_OVER_STATE)?//過流

??? {

??? ? LEDG_OFF;???????//關(guān)閉燈

??? ? LEDR_OFF;

??? ? PWM_OFF;???????//電機(jī)停止

??? ? PWM_PORT_HIGH;??????//拉高 電機(jī)停止?

??? ? ucWorkMode=END_MODE;??

??? }

?

??? if((ucCell1State==CELL_STATE_CUT)||(ucCell2State==CELL_STATE_CUT))?//斷線

??? {

??? ?LEDG_OFF;???????//關(guān)閉燈

??? ?LEDR_OFF;

??? ?PWM_OFF;???????//電機(jī)停止

??? ?PWM_PORT_HIGH;?

??? ?ucWorkMode=ERROR_MODE;

??? ?ucBATStateFlag=CUT_WIRE_FLAG;?

??? }

??? else if((ucCell1State==CELL_STATE_LOW)||(ucCell2State==CELL_STATE_LOW))//欠壓

??? {

??? ? LEDG_OFF;???????//關(guān)閉燈

??? ? LEDR_OFF;

??? ? PWM_OFF;???????//電機(jī)停止

??? ? PWM_PORT_HIGH;??????//拉高 電機(jī)停止?

??? ? ucWorkMode=END_MODE;?

??? ? ?

??? }

???

??? if(ucTempState==1)??????//過溫

??? {

??? ? LEDG_OFF;???????//關(guān)閉燈

??? ? LEDR_OFF;

??? ? PWM_OFF;???????//電機(jī)停止

??? ? PWM_PORT_HIGH;??????//拉高 電機(jī)停止?

??? ? ucWorkMode=END_MODE;???

??? }

??? if(ucBATState==BAT_LOW_STATE)???//小于3.0*2V

??? {

??? ? if(ucTime_1S>=TIME10MS_1S)???//低壓報(bào)警顯示 綠燈常亮紅燈閃

? ???? {

? ???? ?ucTime_1S=0;

? ???? ?LEDR_OFF;?

? ???? }

? ???? else if(ucTime_1S>=TIME10MS_500MS)

? ???? {

? ???? ?LEDR_ON;?

? ???? }

? ???? else

? ???? {

? ???? ?LEDR_OFF;

? ???? }?

??? }

???

??? break;

??case ERROR_MODE:

??

??? PWM_OFF;????????//電機(jī)停止

??? PWM_PORT_HIGH;???????//拉高 電機(jī)停止

??? CHG_OFF;?

??? if(ucBATStateFlag==CHG_HIGH_FLAG)??//充電器高壓 紅綠燈閃

??? {

? ???? if(ucTime_1S>=TIME10MS_1S)

? ???? {

? ???? ?ucTime_1S=0;

? ???? ?LEDG_OFF;

? ???? ?LEDR_ON;?

? ???? }

? ???? else if(ucTime_1S>=TIME10MS_500MS)

? ???? {

? ???? ?LEDG_ON;

? ???? ?LEDR_OFF;?

? ???? }

? ???? else

? ???? {

? ???? ?LEDG_OFF;

? ???? ?LEDR_ON;?

? ???? }

? ????if(ucCHGDHGState==DHG_STATE)??????????//拔掉充電器關(guān)機(jī)

??? ?{

??? ??ucWorkMode=END_MODE;?

??? ?}

???

? ???? ?

??? }

??? else if((ucBATStateFlag==BAT_DEAD_FLAG)||(ucBATStateFlag==CUT_WIRE_FLAG))?//電池超低壓或者斷線 紅燈閃

??? {

??? ?if(ucTime_1S>=TIME10MS_1S)

? ???? {

? ???? ?ucTime_1S=0;

? ???? ?LEDR_OFF;

? ???? ?LEDG_OFF;?

? ???? }

? ???? else if(ucTime_1S>=TIME10MS_500MS)

? ???? {

? ???? ?LEDR_ON;

? ???? ?LEDG_OFF;?

? ???? }

? ???? else

? ???? {

? ???? ?LEDR_OFF;

? ???? ?LEDG_OFF;

? ???? ?

? ???? }

? ???? if(ucERRORFlag==CHG_ERROR_FLAG)??????????//充電斷線超低壓錯(cuò)誤

? ???? {

? ???? ?if(ucCHGDHGState==DHG_STATE)??????????//拔掉充電器關(guān)機(jī)

??? ??{

??? ???ucWorkMode=END_MODE;

??? ???ucERRORFlag=0;?

??? ??}

? ???? ??

? ???? }??

??? }

??? break;

??case CHG_OVTEMP_MODE:

??? LEDR_ON;

??? CHG_OFF;

??? if(ucTempState==0)

??? {

??? ?ucWorkMode=CHG_MODE;?

??? }

??? if(ucCHGDHGState==DHG_STATE)??????????//拔掉充電器關(guān)機(jī)

??? {

??? ?ucWorkMode=END_MODE;?

??? }

???

???

???

?? ? break;

??case END_MODE:

??? LEDG_OFF;????????//初始化關(guān)閉燈

??? LEDR_OFF;

??? PWM_OFF;????????//電機(jī)停止

??? PWM_PORT_HIGH;???????//拉高 電機(jī)停止

??? CHG_OFF;

??? ucCURRState=CURRENT_OK_STATE;

??? if(ucCHGDHGState==CHG_HIGH_STATE)??//充電器高壓

??? {

??? ??ucWorkMode=ERROR_MODE;

??? ??ucBATStateFlag=CHG_HIGH_FLAG;

??? }

??? else if(ucCHGDHGState==CHG_STATE)??//充電狀態(tài)

??? {

??? ? ?if(ucBATState==BAT_FULL_STATE)

??? ? ?{

??? ? ??ucWorkMode=CHG_END_MODE;??//充滿??

??? ? ?}

??? ? ?else if(ucBATState==BAT_DEAD_STATE)?//電池不良電壓小于1.5*n

??? ? ?{

??? ? ??ucWorkMode=ERROR_MODE;

??? ? ??ucBATStateFlag=BAT_DEAD_FLAG;

??? ? ??ucERRORFlag=CHG_ERROR_FLAG;?

??? ? ?}

??? ? ?else????????//充電

??? ? ?{

??? ? ??ucWorkMode=CHG_MODE;

??? ? ??ucPWMTime=0;

??? ? ??uiCHGTime=0;

??? ? ?}

??? }?

???

??? break;

??

??default:

??? ucWorkMode=POWER_ON_MODE;? ??

??

?}

}

/****************版本函數(shù)**************/

void Version_Fution()

{

unsigned char ucvertemplongth,ucvertemplow;

?//總長度=版本高位+版本低位+2

?ucvertemplongth=VERSION_HIGH+VERSION_LOW+2;

?//低電平時(shí)間=版本低位+1

?ucvertemplow=VERSION_LOW+1;

?if(ucVersionTime>=ucvertemplongth)

?{

??ucVersionTime=0;

??VER_LOW;

??

?}

?else if(ucVersionTime>=ucvertemplow)//高電平時(shí)間

?{

??VER_HIGH;

??

?}

?else //低電平時(shí)間

?{

??VER_LOW;

??

?}?

?

?

}

/*********AD返回值**********/

unsigned int Get_AD_Value(unsigned char ucADChannel)

{

unsigned int uiADValue;

unsigned int uiADTemp;

_adcr0=ucADChannel;

_start=0;?????//開啟AD

_start=1;

_start=0;?

while(_eocb==1);

uiADValue=_adrh;

uiADValue= uiADValue<<4;

uiADTemp=_adrl;

uiADTemp=uiADTemp>>4;

uiADValue=uiADValue+uiADTemp;

return(uiADValue);

?

}

/*********主函數(shù)**********/

void main()

{

?_emi=0;

?SystemInit();

?Delay_MS(10);

?SystemInit();

?//if(uiReset!=0x2535)

?//{

? ?VariInit();

?// ?uiReset=0x2535;?

//?}

?_emi=1;

?while(1)

?{

??FeedWDT();

??Timer();

??AD_Manage();

??Control_Function();

??Version_Fution();

??while(_t0af==0);

??_t0af=0;?

?}

} ? ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末更舞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坎吻,更是在濱河造成了極大的恐慌缆蝉,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刊头,居然都是意外死亡贝搁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門芽偏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雷逆,“玉大人,你說我怎么就攤上這事污尉“蛘埽” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵被碗,是天一觀的道長某宪。 經(jīng)常有香客問我,道長锐朴,這世上最難降的妖魔是什么兴喂? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮焚志,結(jié)果婚禮上衣迷,老公的妹妹穿的比我還像新娘。我一直安慰自己酱酬,他們只是感情好壶谒,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膳沽,像睡著了一般汗菜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挑社,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天陨界,我揣著相機(jī)與錄音,去河邊找鬼痛阻。 笑死菌瘪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的录平。 我是一名探鬼主播麻车,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼斗这!你這毒婦竟也來了动猬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤表箭,失蹤者是張志新(化名)和其女友劉穎赁咙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彼水,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年崔拥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凤覆。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡链瓦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盯桦,到底是詐尸還是另有隱情慈俯,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布拥峦,位于F島的核電站贴膘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏略号。R本人自食惡果不足惜刑峡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玄柠。 院中可真熱鬧突梦,春花似錦、人聲如沸随闪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铐伴。三九已至,卻和暖如春俏讹,著一層夾襖步出監(jiān)牢的瞬間当宴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國打工泽疆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留户矢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓殉疼,卻偏偏與公主長得像梯浪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瓢娜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 該文為個(gè)人學(xué)習(xí)筆記挂洛,如有錯(cuò)誤,請(qǐng)各位大佬指導(dǎo)~~~ 針對(duì)于一些未具體說明知識(shí)點(diǎn)眠砾,后續(xù)會(huì)進(jìn)行補(bǔ)充虏劲。 知識(shí)點(diǎn)可能會(huì)有點(diǎn)...
    半截鉛筆閱讀 244評(píng)論 0 0
  • For as long as humans have romanced each other, otherd ha...
    Eudemonia_b8cf閱讀 290評(píng)論 0 0
  • 行之途 其實(shí)一切都是巧合,所有的都不阻礙預(yù)定的軌道發(fā)展。 事情的發(fā)生還得追溯到去年的夏天柒巫,如果...
    陌圖閱讀 201評(píng)論 0 2
  • 現(xiàn)在我們的社會(huì)快節(jié)奏励堡、高強(qiáng)度的生活方式,令不少人養(yǎng)成了不良的健康生活習(xí)慣:經(jīng)常性的外食外賣堡掏、鍛煉次數(shù)幾乎為零应结、睡眠...
    一顆梧桐樹閱讀 1,660評(píng)論 4 27