亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? liion.c

?? AVR官方設(shè)計(jì)的充電器
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/****************************************************************************
    
    Device      : AT90S2333

    File name   : LiIon.c
    
    Ver nr.     : 1.0

    Description : Source file for LiIon charging algorithme
                    - FAST_charge
                    - TRICKLE_charge
                  
    Compiler    : IAR icca90
   
    Author      : Asmund Saetre / Terje Frostad / Dietmar Koenig
 
    Change log  : 02.02.2000 Changed to fit Battery Charger refrence    
                  design board   AS  
                  17.04.2000 Debugged by AS 
                  16.05.2000 Final test and review AS
 
*************************************************************************************/
#include "LiIon.h"                      //Battery specific definitions

// Extern struct prototypes
extern time_struct time;

#ifdef DEBUG 
extern int term_value1;
extern int term_value2;
extern int charge_current_min;
extern int charge_current_max;
#endif

// Fast	Charge Algorithme
//***************************************************************************
void FAST_charge(void)
{
    unsigned int temp = 0;
    unsigned char fast_finish_hour = 0;
    unsigned char fast_finish_min = 0;
    unsigned char delay_hour = 0;  
    unsigned char delay_min = 0;
    unsigned char last_min = 0;

    #ifdef DEBUG 
	term_value1=0;
	#endif
	
	time.sec = 0x00;
  	time.min = 0x00;
  	time.hour = 0x00;
  	time.t_count = 0x3878;


    SETBIT(CHARGE_STATUS,CONST_C);
    CLRBIT(CHARGE_STATUS,DELAY); 
    
    // if TEMPERATURE within absolute limits
    temp = Battery(TEMPERATURE); 
    if ((temp < MIN_TEMP_ABS) && (temp > MAX_TEMP_ABS))
    {
        // if VOLTAGE lower than absolute VOLTAGE
        temp = Battery(VOLTAGE);    
        if (temp <= (MAX_VOLT_ABS + VOLT_TOLERANCE))
        {
            // if FAST charge TEMPERATURE high enough
            temp = Battery(TEMPERATURE); 
            if (temp < MIN_TEMP_FAST)
            {
                OCR1 = 0x0; 
                TCCR1B = 0x01;              //counter1 clock prescale = 1

                // calculate FAST charge finish time
                fast_finish_min = (time.min + MAX_TIME_FAST);
                fast_finish_hour = time.hour;
                while (fast_finish_min > 60)
                {
                    fast_finish_min = fast_finish_min - 60;
                    fast_finish_hour++;
                }
                while ((CHKBIT(CHARGE_STATUS,FAST)) && (!(CHKBIT(CHARGE_STATUS,ERROR))))
                {
                    // Charge with constant current algorithme
                    if (CHKBIT(CHARGE_STATUS,CONST_C))
                    {
                        // set I_FAST (with "soft start")
                        do
                        {
                            temp = Battery(CURRENT);
                            if ((temp < I_FAST)&&(OCR1 < 0xFF))
                                OCR1++;
                            if ((temp > I_FAST)&&(OCR1 > 0x00))
                                OCR1--;
                        }while (temp != I_FAST);        // I_FAST is set now

                        #ifdef DEBUG
                        /*Save the min and max charge current for debug 
                        information*/					
			    		if (temp <= charge_current_min)
				    		charge_current_min = temp;
					    if (temp > charge_current_max)
        	   				charge_current_max = temp;           
        	   			#endif	
                 
                        /*if VOLTAGE within range change from constant 
                        CURRENT charge mode to constant VOLTAGE charge mode*/
                        temp = Battery(VOLTAGE_WITH_PWM_TURNOFF);            
                        if ((temp >= (VOLT_TRICKLE - VOLT_TOLERANCE)) && (temp <= (VOLT_TRICKLE + VOLT_TOLERANCE)))
                        {
                            CLRBIT(CHARGE_STATUS,CONST_C);
                            SETBIT(CHARGE_STATUS,CONST_V);
                        }            
                    }    

                    // Charge with constant voltage algorithme
                    else if (CHKBIT(CHARGE_STATUS,CONST_V))
                    {       
                        // set VOLT_FAST (with "soft start")
                        do                                              
                        {
                            temp = Battery(VOLTAGE);
                            if ((temp < VOLT_FAST)&&(OCR1 < 0xFF))
                                OCR1++;
                            else if ((temp > VOLT_FAST)&&(OCR1 > 0x00))
                                OCR1--;
                        }while ((temp <= (VOLT_FAST -(VOLT_TOLERANCE/4)))||(temp >= (VOLT_FAST+(VOLT_TOLERANCE/4))));                       
                        // VOLT_TRICKLE is set now
                    }

                    // Check for error and charge termination conditions
                    
                    //If above max charge time, flag error    
                    if ((time.hour == fast_finish_hour) && (time.min == fast_finish_min))                               
                    {
                    	/*Stop the PWM, flag max time charge termination and
                    	ERROR. Save the termination value and the max limit
                    	value for debug information*/
						Stop_PWM();
                        SETBIT(TERMINATION,TIME_MAX);
                        SETBIT(CHARGE_STATUS,ERROR);
                        #ifdef DEBUG 
 						term_value1 = time.min;
						term_value2 = fast_finish_min;
						#endif
                    }

                    //If above max charge temperature, flag error    
                    temp = Battery(TEMPERATURE);
					if ( temp	<	MAX_TEMP_ABS)
					{
						/*Stop the PWM, flag max temperature charge 
						termination and ERROR. Save the termination value and
						the max limit value for debug information*/
						Stop_PWM();
						SETBIT(TERMINATION,TEMP_MAX);
						SETBIT(CHARGE_STATUS,ERROR);
						#ifdef DEBUG 
						term_value1 = temp;
						term_value2 =	MAX_TEMP_ABS;
						#endif
					}
                    //If beyond min charge temperature, flag error    					
                    if (temp > MIN_TEMP_FAST)
					{
						/*Stop the PWM, flag min temperature charge 
						termination and ERROR. Save the termination value and
						the max limit value for debug information*/
						Stop_PWM();
						SETBIT(TERMINATION,TEMP_MIN);
						SETBIT(CHARGE_STATUS,ERROR);
						#ifdef DEBUG 
						term_value1 = temp;
						term_value2 =	MIN_TEMP_ABS;
						#endif
					}
                    /*Every min check if MIN_I_FAST is reached, if so 
                    calculate the delay time. 
                    Check every 60 seconds if delay time after reached 
                    MIN_I_FAST is over, if so change to trickle charge*/
                    if (time.min != last_min)   
                    {
                        last_min = time.min;
                        if (((CHKBIT(CHARGE_STATUS,CONST_V)) && (!(CHKBIT(CHARGE_STATUS,DELAY))) && (Battery(CURRENT) <= MIN_I_FAST)))
                        {
                            // calculate DELAY finish time
                            delay_min = (time.min + FAST_TIME_DELAY);
                            delay_hour = time.hour;
                            while (delay_min > 60)
                            {
                                delay_min = delay_min - 60;
                                delay_hour++;
                            }            
                            SETBIT(CHARGE_STATUS,DELAY);  
                        }

                        // Check if delay time after min_I_FAST is done, if so change to trickle charge
                        if ((time.hour == delay_hour)&&(time.min == delay_min)&&(CHKBIT(CHARGE_STATUS,DELAY)))
                        {
                            /*Stop PWM and change from constant VOLTAGE charge 
                            mode back to constant CURRENT charge mode. Change 
                            charge mode from "FAST" to "TRICKLE" Save the 
                            termination value and the max limit value for debug
                            information*/
						    Stop_PWM();
                            SETBIT(TERMINATION,DELAY);
                            CLRBIT(CHARGE_STATUS,CONST_V);
                            SETBIT(CHARGE_STATUS,CONST_C);
                            CLRBIT(CHARGE_STATUS,FAST);               
                            SETBIT(CHARGE_STATUS,TRICKLE);            
                            #ifdef DEBUG 
  						    term_value1 = time.min;
						    term_value2 = delay_min;
						    #endif
                        }                         
                    }                        
                }
            }
            else if(!(CHKBIT(CHARGE_STATUS,ERROR)))
	   		{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
风间由美一区二区三区在线观看| 国产精品18久久久久久久久| 久久综合九色欧美综合狠狠| 一本大道久久精品懂色aⅴ| 琪琪一区二区三区| 亚洲另类在线一区| 亚洲国产精品高清| 精品少妇一区二区三区在线视频| 在线观看国产91| 丰满少妇久久久久久久| 免费人成黄页网站在线一区二区| 中文字幕一区二区三区不卡 | 日韩欧美一区电影| 色婷婷久久99综合精品jk白丝| 国产乱码精品一区二区三区忘忧草 | 欧美在线观看一区二区| 国产 日韩 欧美大片| 精品一区二区综合| 日本美女一区二区三区视频| 亚洲精品免费电影| 亚洲日本va午夜在线电影| 久久九九全国免费| 久久尤物电影视频在线观看| 日韩欧美在线一区二区三区| 欧美年轻男男videosbes| 欧美在线观看一区二区| 色国产精品一区在线观看| 成人av高清在线| 成人看片黄a免费看在线| 国产福利不卡视频| 国产精品自拍毛片| 国产精一区二区三区| 国产毛片精品视频| 国产成人在线看| 国产不卡高清在线观看视频| 国产黄人亚洲片| 成人性色生活片| 成人在线一区二区三区| fc2成人免费人成在线观看播放| 高清国产午夜精品久久久久久| 国产成人av资源| 成人免费观看视频| 91伊人久久大香线蕉| 色噜噜狠狠色综合中国| 欧美手机在线视频| 91麻豆精品国产91久久久资源速度| 欧美日韩国产精品自在自线| 欧美一区二区私人影院日本| 欧美成人一区二区三区在线观看| 日韩欧美国产麻豆| 国产亚洲精品超碰| 自拍av一区二区三区| 一二三四社区欧美黄| 午夜精品在线看| 激情综合网激情| 国产91富婆露脸刺激对白| 91女神在线视频| 欧美日韩电影一区| 欧美岛国在线观看| 国产精品污污网站在线观看| 一区二区三区波多野结衣在线观看| 亚洲综合清纯丝袜自拍| 免费人成在线不卡| 成人丝袜高跟foot| 欧美三级中文字| 精品国产一二三区| 亚洲色图色小说| 日本欧美韩国一区三区| 国产成人免费在线视频| 91黄色小视频| 欧美成人精品高清在线播放 | 国产日韩一级二级三级| 国产精品国产馆在线真实露脸| 亚洲大片精品永久免费| 国产精品亚洲成人| 欧美天天综合网| 久久品道一品道久久精品| 亚洲精品乱码久久久久| 久久电影网电视剧免费观看| 99这里只有久久精品视频| 67194成人在线观看| 中文字幕不卡三区| 视频一区二区欧美| 波多野结衣在线一区| 日韩一级在线观看| 亚洲人成精品久久久久| 看片网站欧美日韩| 日本福利一区二区| 国产欧美精品日韩区二区麻豆天美| 一区二区三区不卡在线观看| 国产精品一级在线| 欧美精品亚洲一区二区在线播放| 国产精品区一区二区三区| 日韩不卡手机在线v区| av爱爱亚洲一区| 久久午夜羞羞影院免费观看| 亚洲国产日韩av| eeuss鲁片一区二区三区在线看| 日韩三级电影网址| 亚洲一区二三区| 成人免费视频免费观看| 欧美xxxx在线观看| 天堂蜜桃一区二区三区 | 欧美性感一类影片在线播放| 久久久91精品国产一区二区三区| 日韩精品欧美精品| 欧洲精品视频在线观看| 欧美国产一区视频在线观看| 久久成人麻豆午夜电影| 91精品国产色综合久久久蜜香臀| 亚洲乱码国产乱码精品精98午夜| 国产成人av电影| 久久亚区不卡日本| 精品一区二区三区不卡| 欧美精品一级二级三级| 亚洲国产综合在线| 色狠狠av一区二区三区| 亚洲人成亚洲人成在线观看图片| 国产精品一区二区三区99| 日韩精品在线看片z| 日本成人在线一区| 91麻豆精品91久久久久同性| 亚洲一区二区免费视频| 91久久香蕉国产日韩欧美9色| 国产精品国产三级国产有无不卡| 国产大陆精品国产| 国产亚洲精品7777| 国产二区国产一区在线观看| 国产视频一区二区在线| 国产美女娇喘av呻吟久久| 久久久亚洲欧洲日产国码αv| 国产一区二区在线看| 精品国产乱码久久久久久老虎| 麻豆成人久久精品二区三区小说| 日韩一卡二卡三卡| 久久国内精品视频| 久久人人97超碰com| 国产一区二三区好的| 国产女主播一区| av中文字幕亚洲| 亚洲精品国产精华液| 欧美在线三级电影| 日韩国产在线一| 精品久久久久久最新网址| 精品一二三四区| 中文字幕欧美日韩一区| 丁香桃色午夜亚洲一区二区三区| 国产精品视频一二三区| 99久久精品99国产精品| 亚洲一区二区三区四区的| 欧美高清www午色夜在线视频| 另类专区欧美蜜桃臀第一页| 久久久久国产精品人| 91在线国产观看| 五月激情综合网| 久久久www成人免费无遮挡大片 | 欧美一区二区三区思思人| 奇米影视一区二区三区小说| 精品国产污污免费网站入口| 国产69精品久久99不卡| 亚洲综合在线免费观看| 欧美一区二区三区在线看| 国产一区二区电影| 综合久久综合久久| 91.com在线观看| 国产999精品久久| 亚洲女人****多毛耸耸8| 91精品视频网| 大尺度一区二区| 午夜久久电影网| 国产日韩欧美综合一区| 色综合咪咪久久| 老司机精品视频一区二区三区| 欧美国产禁国产网站cc| 欧美亚洲禁片免费| 国产成人精品免费视频网站| 亚洲一区二区三区激情| 久久综合九色欧美综合狠狠 | 欧美婷婷六月丁香综合色| 国内精品伊人久久久久av影院| 成人免费在线视频观看| 日韩写真欧美这视频| av一区二区三区四区| 麻豆精品一二三| 夜夜夜精品看看| 亚洲国产精品精华液ab| 91精品在线免费| 色婷婷av一区二区三区大白胸| 国模娜娜一区二区三区| 亚洲成av人**亚洲成av**| 国产精品美日韩| 欧美mv日韩mv国产网站| 欧美日韩中文另类| 成人av第一页| 精品一区二区三区久久久| 亚洲成人先锋电影| 亚洲美腿欧美偷拍| 国产欧美日本一区视频| 精品嫩草影院久久| 欧美精品日韩综合在线|