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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? liion.c

?? ATMEL AVR 單片機 ni-mh 電池充電控制原代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************
    
    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)))
	   		{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99日本精品| 国模少妇一区二区三区| 国产一区美女在线| 成人免费看黄yyy456| 色哟哟日韩精品| 精品国产精品一区二区夜夜嗨| 欧美高清在线一区| 午夜视频在线观看一区| 国产一区二区三区最好精华液| 99久久国产综合精品女不卡| 日韩丝袜美女视频| 亚洲免费大片在线观看| 老司机午夜精品| 91黄色免费看| 久久精品亚洲国产奇米99| 午夜在线电影亚洲一区| 99综合电影在线视频| 日韩一区二区三区电影| 亚洲精品第1页| 国产一区91精品张津瑜| 欧美日韩亚洲综合一区二区三区| 国产欧美精品日韩区二区麻豆天美| 亚洲午夜视频在线观看| 波波电影院一区二区三区| 日韩免费性生活视频播放| 一区二区三区中文在线| 国产成人免费在线视频| 欧美videos中文字幕| 午夜免费久久看| 91蜜桃在线免费视频| 久久久久97国产精华液好用吗| 午夜精品福利一区二区三区av| 成人av在线资源网站| 久久人人97超碰com| 午夜国产精品一区| av电影在线观看不卡| 精品久久久久香蕉网| 日韩国产欧美在线视频| 欧美日韩免费视频| 夜夜嗨av一区二区三区中文字幕| 粉嫩一区二区三区性色av| 日韩免费观看2025年上映的电影 | 久久蜜桃av一区精品变态类天堂| 日韩理论片网站| 丁香六月久久综合狠狠色| 欧美精品一区在线观看| 理论电影国产精品| 欧美一级理论片| 亚洲成人中文在线| 色婷婷久久久亚洲一区二区三区 | av电影一区二区| 久久精品一区二区三区不卡 | 成人午夜av影视| 久久久综合视频| 国产专区综合网| 国产欧美一区二区精品久导航| 国产精品影视在线| 久久精品视频一区二区| 国产美女在线精品| 精品国产免费人成在线观看| 欧美影院午夜播放| 亚洲视频综合在线| 色哟哟在线观看一区二区三区| 中文字幕在线不卡视频| 色婷婷综合视频在线观看| 亚洲精品久久久蜜桃| 欧洲亚洲精品在线| 日韩国产欧美三级| 337p日本欧洲亚洲大胆精品| 国产精品影视在线| 国产精品国产馆在线真实露脸 | 亚洲精品视频观看| 欧美唯美清纯偷拍| 美女视频免费一区| 国产日韩精品一区二区浪潮av| 99久久久无码国产精品| 亚洲高清免费视频| 日韩欧美国产午夜精品| 国产成人午夜片在线观看高清观看| 亚洲视频中文字幕| 制服丝袜日韩国产| 久久精品免费观看| 国产精品色一区二区三区| 91激情五月电影| 免费成人小视频| 最新高清无码专区| 日韩一区二区中文字幕| av日韩在线网站| 狠狠色综合播放一区二区| 亚洲天堂精品视频| 欧美成人video| 91视频.com| 久久99在线观看| 亚洲午夜视频在线| 久久精品视频一区二区三区| 欧美在线观看视频一区二区三区| 另类中文字幕网| 一区二区三区欧美在线观看| 欧美精品一区二区三区一线天视频 | 日韩午夜av一区| 国产成人免费网站| 1000精品久久久久久久久| 欧美一区二区三区播放老司机| 成人免费视频app| 欧美a级一区二区| 亚洲影院理伦片| 国产精品午夜在线观看| 欧美电视剧免费观看| 在线视频欧美精品| 成人免费高清在线| 国产综合色精品一区二区三区| 亚洲国产精品自拍| 亚洲欧美区自拍先锋| 欧美激情一二三区| 精品99久久久久久| 日韩女同互慰一区二区| 这里只有精品99re| 欧美亚洲一区二区在线| 91网站在线观看视频| 国产福利一区二区三区视频在线| 久久不见久久见免费视频1| 天堂在线亚洲视频| 天天av天天翘天天综合网 | 欧美日韩精品免费观看视频| 99精品热视频| 成人污视频在线观看| 国产露脸91国语对白| 精品无码三级在线观看视频| 日本伊人色综合网| 亚洲综合一区二区| 亚洲一区在线观看免费| 中文字幕日韩av资源站| 中文字幕不卡在线观看| 国产亚洲综合性久久久影院| 久久久久久一级片| 欧美另类久久久品| 久久久亚洲国产美女国产盗摄| 欧美成人国产一区二区| 精品久久久久久久久久久久包黑料| 91丨porny丨在线| 成人毛片老司机大片| 国产ts人妖一区二区| 成人免费黄色在线| 99久久精品国产网站| 欧洲精品一区二区| 91精品综合久久久久久| 这里只有精品电影| 亚洲精品一区二区在线观看| 国产欧美一区二区精品秋霞影院| 国产精品女同一区二区三区| 亚洲精品免费电影| 午夜久久久久久电影| 蜜桃视频在线一区| 国产电影一区在线| 91日韩精品一区| 91精品国产色综合久久不卡电影 | 亚洲欧美日韩国产成人精品影院| 国产精品色哟哟网站| 夜夜嗨av一区二区三区| 性做久久久久久免费观看| 麻豆91精品91久久久的内涵| 国产精品一区二区91| 91美女片黄在线观看| 欧美午夜一区二区| 久久综合久久综合久久综合| 亚洲欧洲日本在线| 日韩国产在线观看一区| 国产成人啪免费观看软件| 在线看不卡av| 久久久噜噜噜久久中文字幕色伊伊| 中文av一区二区| 日韩中文字幕亚洲一区二区va在线 | 亚洲图片一区二区| 18欧美亚洲精品| 日韩av电影免费观看高清完整版在线观看 | 一本久久a久久免费精品不卡| 欧美日韩高清一区二区三区| 久久久99精品免费观看不卡| 亚洲在线观看免费视频| 国产在线精品一区二区不卡了| 91网站最新地址| 国产丝袜美腿一区二区三区| 亚欧色一区w666天堂| 不卡av免费在线观看| 日韩欧美另类在线| 亚洲综合男人的天堂| 成人免费视频一区二区| 日韩欧美国产小视频| 中文字幕一区不卡| 亚洲成人综合网站| 老司机精品视频一区二区三区| 91视频免费观看| 中文字幕在线不卡一区| 丝袜a∨在线一区二区三区不卡| 日本 国产 欧美色综合| 欧美吞精做爰啪啪高潮| 中文字幕日本不卡| 国内精品伊人久久久久av一坑| 久久综合九色综合97_久久久| 麻豆成人久久精品二区三区红|