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

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

?? adc.c

?? butterfly MP3源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
//***************************************************************************////  File........: ADC.c////  Author(s)...: ATMEL Norway////  Target(s)...: ATmega169////  Compiler....: AVR-GCC 3.3.1; avr-libc 1.2////  Description.: AVR Butterfly ADC routines////  Revisions...: 1.0////  YYYYMMDD - VER. - COMMENT                                       - SIGN.////  20030116 - 1.0  - Created                                       - LHM//  20031009          port to avr-gcc/avr-libc                      - M.Thomas//  20050610	      modified for VUW datalogger use		    - N.Lott////***************************************************************************//mtA//#include <inavr.h>//#include "iom169.h"#include <avr/io.h>#include <avr/pgmspace.h>#include "pgmspacehlp.h"//mtE#include "main.h"#include "ADC.h"#include "BCD.h"#include "LCD_functions.h"#include "types.h"//#include "timer0.h"#include "uart.h"//#include "speed.h"//MP3 Player #include "dataflash.h"#define Log2Flash 1// mt __flash int TEMP_Celcius_pos[] =    // Positive Celcius temperatures (ADC-value)const int TEMP_Celcius_pos[] PROGMEM =    // Positive Celcius temperatures (ADC-value)        {                           // from 0 to 60 degrees            806,796,786,775,765,754,743,732,720,709,697,685,673,661,649,            636,624,611,599,586,574,562,549,537,524,512,500,488,476,464,            452,440,429,418,406,396,385,374,364,354,344,334,324,315,306,            297,288,279,271,263,255,247,240,233,225,219,212,205,199,193,            187,        };// mt __flash int TEMP_Celcius_neg[] =    // Negative Celcius temperatures (ADC-value)const int TEMP_Celcius_neg[] PROGMEM =    // Negative Celcius temperatures (ADC-value)        {                           // from -1 to -15 degrees            815,825,834,843,851,860,868,876,883,891,898,904,911,917,923,        };/* Removed for space - NAL// mt __flash int TEMP_Farenheit_pos[] =  // Positive Farenheit temperatures (ADC-value)const int TEMP_Fahrenheit_pos[] PROGMEM =  // Positive Fahrenheit temperatures (ADC-value)        {                           // from 0 to 140 degrees		    938, 935, 932, 929, 926, 923, 920, 916, 913, 909, 906, 902, 898,     		894, 891, 887, 882, 878, 874, 870, 865, 861, 856, 851, 847, 842,     		837, 832, 827, 822, 816, 811, 806, 800, 795, 789, 783, 778, 772,     		766, 760, 754, 748, 742, 735, 729, 723, 716, 710, 703, 697, 690,     		684, 677, 670, 663, 657, 650, 643, 636, 629, 622, 616, 609, 602,     		595, 588, 581, 574, 567, 560, 553, 546, 539, 533, 526, 519, 512,     		505, 498, 492, 485, 478, 472, 465, 459, 452, 446, 439, 433, 426,     		420, 414, 408, 402, 396, 390, 384, 378, 372, 366, 360, 355, 349,     		344, 338, 333, 327, 322, 317, 312, 307, 302, 297, 292, 287, 282,     		277, 273, 268, 264, 259, 255, 251, 246, 242, 238, 234, 230, 226,     		222, 219, 215, 211, 207, 204, 200, 197, 194, 190, 187,         };*/   /*     // mt __flash int LIGHT_ADC[] = // Table used to find the Vref, when using the voltage-reading function const int LIGHT_ADC[] PROGMEM = // Table used to find the Vref, when using the voltage-reading function         {             0x35,0x60,0x80,0x0B0,0x11D,0x13D,0x15A,0x17A,0x197,0x1B9,0x1DA,            0x1F9,0x216,0x240,0x26D,0x282,0x2A2,0x2EF,0x332,0x3B0,0x3F2        };    *//*    //mt __flash float LIGHT_VOLTAGE[] = // Vref table correspondent to the LIGHT_ADC[] tableconst float LIGHT_VOLTAGE[] PROGMEM = // Vref table correspondent to the LIGHT_ADC[] table        {            2.818,2.820,2.824,2.827,2.832,2.835,2.839,2.841,2.843,2.847,2.850,            2.853,2.857,2.863,2.867,2.870,2.874,2.882,2.893,2.917,2.939        };*/float 	Vref = 2.900; // initial valuechar 	degree = CELCIUS; // char degree = CELCIUS;//MP3 Player extern char gLogging;//MP3 Player extern char gLogNow;//MP3 Player int 	gMaxTemp=1023;//MP3 Player int 	gMinTemp=0;/*******************************************************************************   Function name : ADC_init**   Returns :       None**   Parameters :    char input**   Purpose :       Initialize the ADC with the selected ADC-channel******************************************************************************/void ADC_init(char input){  	// todo : change to internal bandgap referencec when input = voltage.//	if (input == VOLTAGE_SENSOR){//		// disable the VCP (VC-peripheral)//		PORTF &= ~(1<<PF3); // mt sbi(PORTF, PORTF3);     // Enable //		DDRF &=  ~(1<<DDF3);    //		ADMUX = VOLTAGE_SENSOR|(1<<REFS0)|(1<<REFS1); // select internal bandgap reference see VOLTAGE_SENSOR definition//		Vref = 3.0;//	}else{// !!!:nick:20051120 	    PORTF |= (1<<PF3); // mt sbi(PORTF, PORTF3);     // Enable the VCP (VC-peripheral)		DDRF|=  (1<<DDF3); // sbi(DDRF, PORTF3);      		ADMUX = input;    // external AREF and ADCx		Vref = 2.900;  //  }    ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);    // set ADC prescaler to , 1MHz / 8 = 125kHz    	//MP3 PLayer : note above line has timing 8 x faster.    input = ADC_read();        // dummy }/*******************************************************************************   Function name : ADC_read**   Returns :       int ADC**   Parameters :    None**   Purpose :       Do a Analog to Digital Conversion******************************************************************************/int ADC_read(void){    char i;    int ADC_temp;	// mt int ADC = 0 ;	int ADCr = 0;        // To save power, the voltage over the LDR and the NTC is turned off when not used    // This is done by controlling the voltage from a I/O-pin (PORTF3)	/*    CBI(PORTD, PF4); // Set internal pullup    CBI(DDRF, DDF4    */	PORTF &= ~(1<<PF4); /// WARNING IS THIS A TYPO PORTD OR PORTF?????	DDRF &= ~(1<<DDF4);	/*    SBI(PORTF, PF3); // mt sbi(PORTF, PORTF3);     // Enable the VCP (VC-peripheral)    SBI(DDRF, DDF3); // sbi(DDRF, PORTF3);        	 */	PORTF |=(1<<PF3);	DDRF |= (1<<DDF3);		ADCSRA |= (1<<ADEN);	    //SBI(ADCSRA, ADEN);     // Enable the ADC    //do a dummy readout first    ADCSRA |= (1<<ADSC);        // do single conversion    while(!(ADCSRA & 0x10));    // wait for conversion done, ADIF flag active            for(i=0;i<8;i++)            // do the ADC conversion 8 times for better accuracy     {        ADCSRA |= (1<<ADSC);        // do single conversion        while(!(ADCSRA & 0x10));    // wait for conversion done, ADIF flag active                ADC_temp = ADCL;            // read out ADCL register        ADC_temp += (ADCH << 8);    // read out ADCH register                ADCr += ADC_temp;      // accumulate result (8 samples) for later averaging    }    ADCr = ADCr >> 3;     // average the 8 samples/*            CBI(PORTF,PF3);     // mt CBI(PORTF, PORTF3);     // disable the VCP    CBI(DDRF,DDF3);     // mt CBI(DDRF, PORTF3);          CBI(PORTF,PF6);     //disable VCP    CBI(DDRF,DDF6);    CBI(PORTF,PF4);     //disable the internal Pullup.    CBI(DDRF,DDF4);*/  //  PORTF &= ~(1<<PF3)|(1<<PF4)|(1<<PF6);	DDRF &= ~(1<<DDF3)|(1<<DDF4)|(1<<DDF6);	    	//CBI(ADCSRA, ADEN);      // disable the ADC	ADCSRA &= ~(1<<ADEN);    return ADCr;}/*******************************************************************************   Function name : ADC_periphery**   Returns :       None**   Parameters :    None**   Purpose :       Calculates the Temperature/Voltage/Ligth from the ADC_read*                   and puts it out on the LCD.******************************************************************************///void ADC_periphery(void)//{//    int ADCresult = 0;//    //    if (!gLogNow) {      // don't read while lig in process//	ADCresult=ADC_read();   // read ADC Value//	//	switch ((ADMUX & 7)){//	    case TEMPERATURE_SENSOR://		ADC2Temp(FALSE,ADCresult);//		break;//	    case DIR_SENSOR ://		ADC2Direction(FALSE,ADCresult);//		break;//	    case VOLTAGE_SENSOR://		ADC2Volt(FALSE,ADCresult);//		break;//	    case LIGHT_SENSOR://		ADC2Light(FALSE,ADCresult);//	}//    }//    //}/*******************************************************************************   Function name : ADC2Temp**   Returns :       nothing**   Parameters :    char log (char to log to rs232 else print to screen)*					int ADCResult (ADC reading to convert)**   Purpose :       Convert an ADC reading into a temp******************************************************************************/void ADC2Temp(char log,int ADCresult){    //   int ADCresult = 0;    //   int ADCresult_temp = 0;    int Temp_int=0;    int dif;    int top;        char Temp;    unsigned char i = 0;    char TL;    char TH;     char VH;	    char VL;    //    if (ADCresult<gMaxTemp)   // these appear backwards (the gt and lt) due to NTC of thermister//		gMaxTemp=ADCresult;//    if (ADCresult>gMinTemp)//		gMinTemp=ADCresult;        /*	if (gTempOffset)    {	ADCresult = ADCresult -gTempOffset;    }	              */    if(degree == CELCIUS){		if(ADCresult > 810){         // If it's a negtive temperature			for (i=0; i<=25; i++){   // Find the temperature				if (ADCresult <= pgm_read_word(&TEMP_Celcius_neg[i])){					// add a decimal reading					if (i>0){							dif= pgm_read_word(&TEMP_Celcius_neg[i])-pgm_read_word(&TEMP_Celcius_neg[i-1]);						top =(ADCresult-pgm_read_word(TEMP_Celcius_neg[i-1]))*100;												Temp_int = top/(dif+1);						i++;					}					break;				}			}						//LCD_putc(0, '-');       // Put a minus sign in front of the temperature		}		else if (ADCresult < 800){   // If it's a positive temperature			for (i=0; i<100; i++)  {				if (ADCresult >= pgm_read_word(&TEMP_Celcius_pos[i])){					// add a decimal reading					if (i>0){							dif= pgm_read_word(&TEMP_Celcius_pos[i-1])-pgm_read_word(&TEMP_Celcius_pos[i]);						top =(pgm_read_word(&TEMP_Celcius_pos[i-1])-ADCresult)*100;												Temp_int = top/(dif+1);						i--;					}					break;				}			}        	    //LCD_putc(0, '+');       // Put a plus sign in front of the temperature		} else{                        //If the temperature is zero degrees			i = 0;			LCD_putc(0, ' ');		}			Temp = CHAR2BCD2(i);        // Convert from char to bin		TL = (Temp & 0x0F) + '0';   // Find the low-byte		TH = (Temp >> 4) + '0';     // Find the high-byte				Temp= CHAR2BCD2(Temp_int);		VH = (Temp >> 4) + '0';		VL = (Temp & 0x0F) + '0';				if(log)	{			/*		Usart_Tx(TH);			Usart_Tx(TL);			Usart_Tx('.');			Usart_Tx(VH);			Usart_Tx(VL);			Usart_Tx(' ');	   			*///	#ifdef Log2Flash//			DF_SPI_RW(TH);//			DF_SPI_RW(TL);//			DF_SPI_RW('.');//			DF_SPI_RW(VH);//			DF_SPI_RW(VL);//			DF_SPI_RW(' ');	//	#endif		} else {			LCD_putc(0, TH);			LCD_putc(1, TL);			LCD_putc(2, VH);			LCD_putc(3, VL);			LCD_putc(4, '*');			LCD_putc(5, 'C');			LCD_Colon(TRUE);			LCD_putc(6, '\0');		}		    }    /*	else if (degree == FARENHEIT)     {	    for (i=0; i<=141; i++)   // Find the temperature	    {		if (ADCresult > pgm_read_word(TEMP_Farenheit_pos[i]))		{		    break;		}	    }        	    	    Temp_int = CHAR2BCD3(i);	    	    if (i > 99) // if there are three digits	    {		LCD_putc(0, '+');		TH = (Temp_int >> 8) + '0';   // Find the high-byte		LCD_putc(1, TH);	    }	    else    // if only two digits	    {		LCD_putc(0, ' ');		LCD_putc(1, '+');	    }	    	    TL = (Temp_int & 0x0F) + '0';   // Find the low-byte	    TH = ( (Temp_int >> 4) & 0x0F ) + '0';     // Find the high-byte                	    	    LCD_putc(2, TH);	    LCD_putc(3, TL);	    LCD_putc(4, '*');	    LCD_putc(5, 'F');	    LCD_putc(6, '\0');	    LCD_Colon(FALSE);	         }     */}/*******************************************************************************   Function name : ADC2Direction**   Returns :       nothing

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费看片app下载| 亚洲中国最大av网站| 欧洲av在线精品| 在线观看亚洲精品| 欧美艳星brazzers| 欧美精品久久久久久久多人混战| 在线免费观看视频一区| 91免费观看国产| 欧美吻胸吃奶大尺度电影| 欧美日韩在线三区| 日韩一级片网站| 国产日韩v精品一区二区| 国产亚洲福利社区一区| 自拍视频在线观看一区二区| 亚洲色欲色欲www| 日韩欧美国产精品| 日韩一区和二区| 日韩一级二级三级精品视频| 精品理论电影在线| 亚洲国产成人在线| 亚洲精品美腿丝袜| 美国毛片一区二区三区| 国产精品一区在线观看乱码| a在线播放不卡| 欧美二区三区的天堂| 精品日本一线二线三线不卡| 中文字幕一区二区在线播放| 亚洲国产精品久久不卡毛片| 国产一区不卡在线| 91精彩视频在线| 日韩精品一区在线观看| 国产精品久久久久久久第一福利 | 欧美精品一区在线观看| 9久草视频在线视频精品| 亚洲第一久久影院| 国产综合久久久久久鬼色| av网站免费线看精品| 欧美日韩久久不卡| 久久久久久久久久久电影| 中文字幕不卡的av| 日本亚洲视频在线| 丁香六月久久综合狠狠色| 欧美性猛片xxxx免费看久爱| 国产婷婷色一区二区三区| 亚洲va欧美va人人爽| 成人免费福利片| 日韩精品一区二区三区三区免费 | 91精品国产综合久久小美女| 欧美综合天天夜夜久久| 久久丝袜美腿综合| 三级久久三级久久久| 日本欧美韩国一区三区| 久久这里只精品最新地址| 日韩精品中文字幕在线不卡尤物 | 亚洲影院久久精品| 国产精品一二三四区| 制服丝袜日韩国产| 亚洲在线中文字幕| 色婷婷亚洲一区二区三区| 国产欧美一区二区三区在线老狼| 日韩精品欧美精品| 日本韩国欧美一区| 国产精品高潮呻吟久久| 国产高清在线观看免费不卡| 欧美电影免费观看高清完整版| 亚洲伦理在线免费看| 懂色av一区二区夜夜嗨| 亚洲精品一区二区三区精华液 | 欧美私人免费视频| 亚洲另类中文字| 91色婷婷久久久久合中文| 国产日韩欧美a| 国产99久久久精品| 国产精品午夜在线| 99re亚洲国产精品| 中文字幕在线一区| 不卡大黄网站免费看| 国产精品卡一卡二卡三| 成人精品国产福利| 亚洲视频在线观看一区| 成人福利在线看| 最新中文字幕一区二区三区| jizz一区二区| 一区二区三区不卡在线观看 | 欧美日韩免费电影| 亚洲综合一二区| 欧美精品成人一区二区三区四区| 亚洲大片精品永久免费| 欧美一级免费大片| 国产一区二区三区香蕉| 国产精品午夜春色av| 93久久精品日日躁夜夜躁欧美| 亚洲欧美另类图片小说| 在线观看国产91| 日本aⅴ亚洲精品中文乱码| 精品久久久久久久久久久久久久久久久| 免费成人在线视频观看| 久久精品欧美一区二区三区麻豆| 国产宾馆实践打屁股91| 亚洲免费观看高清完整版在线观看熊| 国产成人av资源| 亚洲免费观看高清完整版在线| 欧美亚洲高清一区二区三区不卡| 丝袜亚洲精品中文字幕一区| 欧美xxx久久| 91丨porny丨首页| 日本亚洲免费观看| 国产精品欧美极品| 欧美日本在线播放| 国产91精品露脸国语对白| 一区二区三区波多野结衣在线观看| 欧美三级在线看| 国产一区二区三区在线观看精品| 欧美国产一区在线| 337p亚洲精品色噜噜狠狠| 国产jizzjizz一区二区| 日韩制服丝袜先锋影音| 亚洲国产精品av| 91精品婷婷国产综合久久竹菊| a在线欧美一区| 九九九久久久精品| 亚洲午夜免费视频| 综合久久综合久久| 久久久精品国产免大香伊 | 免费久久精品视频| 亚洲欧美欧美一区二区三区| 精品欧美久久久| 精品视频一区二区三区免费| 国产不卡在线视频| 极品销魂美女一区二区三区| 一区二区欧美国产| 国产精品乱人伦一区二区| 欧美mv日韩mv国产网站app| 欧美色图天堂网| 91在线丨porny丨国产| 国产精品一区二区在线看| 日本vs亚洲vs韩国一区三区 | 91精选在线观看| 在线免费不卡视频| 91丝袜美腿高跟国产极品老师| 国产一区二区在线视频| 日韩电影免费在线观看网站| 洋洋成人永久网站入口| 中文文精品字幕一区二区| 丁香亚洲综合激情啪啪综合| 精品国产污污免费网站入口 | 国产精品资源在线看| 亚洲福利电影网| 一个色在线综合| 日韩伦理av电影| 中文字幕亚洲精品在线观看 | 亚洲国产毛片aaaaa无费看| 国产精品美女久久久久久久久| 国产农村妇女精品| 国产日韩欧美精品一区| 亚洲国产精品ⅴa在线观看| 国产日韩欧美精品电影三级在线| 久久久久久电影| 中文字幕一区免费在线观看| 中文字幕亚洲精品在线观看| 亚洲免费观看高清在线观看| 一区二区三区日韩在线观看| 亚洲精品国产视频| 欧美日韩高清一区二区不卡| 懂色av一区二区三区免费看| 久久久久综合网| 久久久久国产一区二区三区四区 | 99热精品一区二区| 欧美亚洲免费在线一区| 欧美日韩精品综合在线| 91麻豆精品国产91久久久久久久久 | 人人精品人人爱| 激情久久五月天| 成人激情文学综合网| 色天天综合色天天久久| 8x8x8国产精品| 精品免费国产二区三区| 国产精品狼人久久影院观看方式| 国产最新精品精品你懂的| 欧美精品日韩一本| 国产成人免费在线视频| 99热99精品| 精品视频1区2区| 欧美成人精品高清在线播放| 国产日本欧美一区二区| 一区二区三区.www| 久久99热狠狠色一区二区| 成人精品视频一区二区三区| 在线精品亚洲一区二区不卡| 精品精品国产高清a毛片牛牛 | 欧美一级夜夜爽| 国产精品久久久久aaaa樱花| 亚洲国产欧美一区二区三区丁香婷| 黑人巨大精品欧美黑白配亚洲| 高清shemale亚洲人妖| 91黄色在线观看| 久久久精品2019中文字幕之3| 亚洲激情图片qvod| 国产精品一二三四五| 欧美日韩一区二区在线观看视频 |