⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc._c

📁 前两年在一家模型公司开发的
💻 _C
字号:

/********************************************************************************/
//		
// 		builder : 2007-04-10
// 		Target  : ATMEAG 48V
// 		Crystal : 内部 8.00 MHz
//
//		ADC 转换模块
		
/********************************************************************************/

#include 	<iom48v.h>
#include 	<macros.h>

#define		uchar	unsigned char
#define		uint	unsigned int

#define 	CH0		0xC0
#define		CH1		0xC1
#define		CH2		0xC2
#define 	CH3     0xC3
#define 	CH4		0xC4
#define		CH5		0xC5
#define		CH6		0xC6
#define 	CH7     0xC7


void adc_int(void)
{
	 ADMUX	= 0x40;		//set adc power avcc and the ref is Avref
 	 ADCSRA	= 0xC2; 	//enable adc and the div parame is 8	 
}


/*---------------------------------------------------------------
   			ADC 
----------------------------------------------------------------*/

uint adc_colect(uchar chanal)
{
 	uchar i;
	uint  ad_add;
	uint  temp,temp1;
	uint  adh;
	
	if(chanal==0)  		ADMUX = CH0;
	else if(chanal==1)	ADMUX = CH1;
	else if(chanal==2)	ADMUX = CH2;
	else if(chanal==3)	ADMUX = CH3;
	else if(chanal==4)	ADMUX = CH4;
	else if(chanal==5)	ADMUX = CH5;
	else if(chanal==6)	ADMUX = CH6;
	else if(chanal==7)	ADMUX = CH7;
	
	ad_add = 0;
	
	for(i=0;i<8;i++)
	{
 		ADCSRA = ADCSRA|(1<<ADSC);			   //start the adc
		while(ADCSRA&(1<<ADSC));			   //wait for the adc finish
 		
 		ADCSRA = ADCSRA|(1<<ADSC);			   //start the adc
		while(ADCSRA&(1<<ADSC));			   //wait for the adc finish
		
		temp1 = ADCL;
		temp  = (ADCH&0x03)<<8;
		temp   += temp1;
		ad_add += temp;                                                                      
	}
	adh = ad_add>>3;
	return(adh);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -