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

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

?? liion.c

?? ATMEL AVR 單片機 ni-mh 電池充電控制原代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
        		/*Flag min temperature termination and ERROR. Save 
    	    	the termination value and the max limit value for debug 
    		    information*/
    			SETBIT(TERMINATION,TEMP_MIN);
    			SETBIT(CHARGE_STATUS,ERROR);
    			#ifdef DEBUG 
	    		term_value1 = temp;
		    	term_value2 = MIN_TEMP_FAST;
		    	#endif
		    }		 
        }
		else if(!(CHKBIT(CHARGE_STATUS,ERROR)))
		{
    		/*Flag max charge voltage charge termination and ERROR. Save 
    		the termination value and the max limit value for debug 
    		information*/
			SETBIT(TERMINATION,VOLT_MAX);
			SETBIT(CHARGE_STATUS,ERROR);
			#ifdef DEBUG 
			term_value1 = temp;
			term_value2 = MAX_VOLT_ABS;
			#endif
		}		 
	}		 
	else if(!(CHKBIT(CHARGE_STATUS,ERROR)))
	{
	    if (temp < MIN_TEMP_ABS)
		{
		    //Flag min temperature termination and save the limit value
		    #ifdef DEBUG 
		    term_value2 = MIN_TEMP_ABS;
		    #endif
			SETBIT(TERMINATION,TEMP_MIN); 
		}
		else
		{
		    //Flag max temperature termination and save the limit value
			SETBIT(CHARGE_STATUS,TEMP_MAX);
			#ifdef DEBUG 
			term_value2 = MAX_TEMP_ABS;
			#endif
		}
	    //Flag ERROR and save the measured value causing the error for debug	
	    SETBIT(CHARGE_STATUS,ERROR);        
	    #ifdef DEBUG 
	    term_value1 = temp; 				
	    #endif
	}
}
// Trickle Charge Algorithme
//************************************************************************************

void TRICKLE_charge(void)
{
    unsigned int temp = 0;
    unsigned char trickle_finish_min = 0;
    unsigned char trickle_finish_hour = 0;
      
	time.sec = 0x00;
  	time.min = 0x00;
  	time.hour = 0x00;
  	time.t_count = 0x3878;


    OCR1 = 0x00; 
    TCCR1B = 0x01;                            //counter1 clock prescale = 1  
  
    #ifdef DEBUG 
    term_value1=0;
    #endif   
     
    while ((CHKBIT(CHARGE_STATUS,TRICKLE)) && (!(CHKBIT(CHARGE_STATUS,ERROR))))  
    {    
        // if TEMPERATURE within absolute limits
        temp = Battery(TEMPERATURE); 
        if ((temp < MIN_TEMP_ABS) || (temp > MAX_TEMP_ABS))
        {
             // if charge voltage lower than absolute max charge voltage
            if (Battery(VOLTAGE) <= (VOLT_TRICKLE + VOLT_TOLERANCE))
            {
                //Charge with constant current algorithme
                if (CHKBIT(CHARGE_STATUS,CONST_C))
                {
                    // set I_TRICKLE (with "soft start")
                    do
                    {
                        temp = Battery(CURRENT);
                        if ((temp < I_TRICKLE)&&(OCR1 < 0xFF))
                        {
                            OCR1++;
                        }
                        if ((temp > I_TRICKLE)&&(OCR1 > 0x00))
                        {
                            OCR1--;
                        }
                    }while (temp != I_TRICKLE); // I_TRICKLE 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 current algorithme                 
                if (CHKBIT(CHARGE_STATUS,CONST_V))
                {  
                    // set VOLT_TRICKLE (with "soft start")    
                    do                      // set VOLT_TRICKLE
                    {
                        temp = Battery(VOLTAGE);
                        if ((temp < VOLT_TRICKLE)&&(OCR1 < 0xFF))
                        {
                            OCR1++;
                        }
                        if ((temp > VOLT_TRICKLE)&&(OCR1 > 0x00))
                        {
                            OCR1--;
                        }
                    }while ((temp <= (VOLT_TRICKLE-(VOLT_TOLERANCE/4)))||(temp >= (VOLT_TRICKLE+(VOLT_TOLERANCE/4))));                       
                    // VOLT_TRICKLE is set now          }
                }


                // Check for error and charge termination conditions
                if ((time.hour == trickle_finish_hour) && (time.min == trickle_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 = trickle_finish_min;
					#endif
                }
    
                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 (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
				}
			}

            else if(!(CHKBIT(CHARGE_STATUS,ERROR)))
	   		{
        		/*Flag max charge voltage charge termination and ERROR. Save 
    	    	the termination value and the max limit value for debug 
    		    information*/
    			SETBIT(TERMINATION,VOLT_MAX);
	   			SETBIT(CHARGE_STATUS,ERROR);
	   			#ifdef DEBUG 
	    		term_value1 = temp;
		    	term_value2 = MAX_VOLT_ABS;
		    	#endif
    		}		 
	   	}		 
    	else if(!(CHKBIT(CHARGE_STATUS,ERROR)))
	    {   
	        if (temp < MIN_TEMP_ABS)
    		{
	    	    //Flag min temperature termination and save the limit value
	    	    #ifdef DEBUG 
		        term_value2 = MIN_TEMP_ABS;
		        #endif
			    SETBIT(TERMINATION,TEMP_MIN); 
		    }
    		else
	    	{
		        //Flag max temperature termination and save the limit value
			    SETBIT(CHARGE_STATUS,TEMP_MAX);
			    #ifdef DEBUG 
    			term_value2 =	MAX_TEMP_ABS;
    			#endif
	    	}
	        //Flag ERROR and save the measured value causing the error for debug	
            SETBIT(CHARGE_STATUS,ERROR);        
            #ifdef DEBUG 
	        term_value1 = temp; 				
	        #endif
    	}
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月开心婷婷久久| 久久久久国产免费免费| 国产福利一区二区三区在线视频| 首页综合国产亚洲丝袜| 午夜成人免费视频| 日韩国产精品久久久| 日韩电影免费一区| 精品制服美女丁香| 国产酒店精品激情| av不卡免费在线观看| 99视频热这里只有精品免费| 色综合视频一区二区三区高清| 9人人澡人人爽人人精品| 972aa.com艺术欧美| 91麻豆免费看片| 欧美日韩国产首页| 精品欧美一区二区三区精品久久| 久久嫩草精品久久久精品一| 亚洲国产成人一区二区三区| 国产精品伦理在线| 夜夜爽夜夜爽精品视频| 美女视频一区在线观看| 国产成人综合亚洲91猫咪| 91在线精品一区二区三区| 欧美私模裸体表演在线观看| 精品久久久久久久久久久久包黑料| 26uuu久久综合| 亚洲欧美另类久久久精品2019| 夜夜嗨av一区二区三区网页| 青青草精品视频| 成人黄色大片在线观看| 欧美亚洲一区二区在线观看| 亚洲精品在线免费观看视频| 中文字幕亚洲一区二区av在线 | 久久午夜色播影院免费高清| 久久久久久久网| 亚洲日本一区二区| 久久丁香综合五月国产三级网站| 国产馆精品极品| 欧美偷拍一区二区| 欧美激情一区二区三区全黄| 青青国产91久久久久久| 99久久久国产精品免费蜜臀| 日韩一区二区三区四区五区六区| 亚洲欧美中日韩| 日韩av在线发布| 97精品国产露脸对白| 精品久久久影院| 亚洲国产日韩一区二区| 不卡一区在线观看| 日韩午夜激情免费电影| 亚洲伦理在线免费看| 亚洲一卡二卡三卡四卡| 琪琪久久久久日韩精品| 91捆绑美女网站| 久久精品夜色噜噜亚洲a∨| 亚洲国产成人高清精品| 北条麻妃一区二区三区| 欧美成人激情免费网| 亚洲成人综合视频| 色94色欧美sute亚洲线路二| 欧美激情艳妇裸体舞| 免费精品视频在线| 欧美肥胖老妇做爰| 一区二区三区欧美| 色综合久久综合| 中文字幕精品综合| 国产精品一品二品| 26uuu亚洲| 久久av资源站| 精品国产污污免费网站入口| 老司机免费视频一区二区三区| 在线电影院国产精品| 亚洲一区二区三区激情| 欧美午夜在线一二页| 亚洲无线码一区二区三区| 欧美亚洲图片小说| 亚洲6080在线| 在线播放中文一区| 久久精品国产亚洲高清剧情介绍| 欧美一级午夜免费电影| 久久激情五月激情| 久久综合九色综合97_久久久| 国产精品一区二区黑丝| 91精品国产综合久久久蜜臀图片| 一区二区三区在线视频免费观看| 91在线一区二区三区| 综合在线观看色| 99国产精品久久久久久久久久久| 亚洲国产一区二区在线播放| 91在线观看美女| 亚洲高清视频中文字幕| 7777精品久久久大香线蕉| 久久精工是国产品牌吗| 国产亚洲午夜高清国产拍精品 | 久久先锋资源网| 国产成人精品亚洲777人妖| 国产精品美女一区二区三区| 一本久久a久久免费精品不卡| 亚洲精品成人在线| 91精品免费在线观看| 国产乱妇无码大片在线观看| 亚洲日本护士毛茸茸| 欧美日本韩国一区| 91精品国产乱| 天天做天天摸天天爽国产一区| 91精品国产综合久久久久| 九九九久久久精品| 亚洲欧美日韩成人高清在线一区| 在线亚洲人成电影网站色www| 日韩一区精品字幕| 国产精品理论在线观看| 欧美日韩国产一区二区三区地区| 美女视频第一区二区三区免费观看网站 | 欧美日韩中文另类| 国产精品66部| 亚洲 欧美综合在线网络| 欧美高清在线精品一区| 欧美日韩卡一卡二| 91在线丨porny丨国产| 麻豆精品一二三| 亚洲综合色成人| 中文字幕一区日韩精品欧美| 日韩一区二区在线观看| 色婷婷综合视频在线观看| 九九在线精品视频| 亚洲综合成人网| 国产精品嫩草影院com| 91精品婷婷国产综合久久竹菊| 成人av电影观看| 激情深爱一区二区| 日本网站在线观看一区二区三区 | 精品少妇一区二区三区视频免付费 | 欧美日韩国产大片| 白白色 亚洲乱淫| 高清在线成人网| 成人av在线播放网站| 免费在线观看视频一区| 亚洲精品乱码久久久久久久久 | 免费在线看成人av| 亚洲成av人片在线| 亚洲国产日韩av| 一区二区三区日韩精品视频| 中文字幕永久在线不卡| 欧美国产视频在线| 日本一区二区三区免费乱视频| 日韩欧美一级片| 91精品欧美综合在线观看最新| 在线观看视频一区二区欧美日韩| 99国产精品久久久久| 成人av高清在线| www.成人在线| av网站免费线看精品| 91视频91自| 色视频成人在线观看免| 色噜噜狠狠成人中文综合| 91在线小视频| 91黄色在线观看| 欧美影视一区在线| 欧美日韩在线三区| 91精品国产综合久久小美女| 欧美一区二区三区啪啪| 精品少妇一区二区三区免费观看 | 色先锋aa成人| 日韩欧美一区二区久久婷婷| 欧美日韩国产高清一区二区三区 | 岛国一区二区三区| 丁香啪啪综合成人亚洲小说 | 2024国产精品| 欧美国产一区在线| 中文字幕在线不卡一区| 亚洲精品videosex极品| 午夜精品aaa| 狠狠色伊人亚洲综合成人| 国产91丝袜在线播放0| 99久久伊人精品| 91久久精品一区二区| 91麻豆精品91久久久久同性| 久久综合成人精品亚洲另类欧美| 国产亚洲一本大道中文在线| 亚洲欧美色综合| 日韩成人精品在线| 粉嫩一区二区三区性色av| 在线欧美一区二区| 日韩女优av电影| 中文字幕一区二区不卡| 日韩激情av在线| 国产69精品久久99不卡| 欧美怡红院视频| 久久这里只有精品6| 亚洲三级电影网站| 老司机免费视频一区二区三区| 成人一区二区视频| 欧美日韩在线一区二区| 久久久久久久久久久99999| 亚洲综合视频在线观看| 国产精品99久| 欧美精品三级在线观看| 国产精品久久久久一区| 久久精品国产99国产精品|