www.pudn.com > temp_control.rar > adc.c


/*============================文件信息===========================*/ 
/*文   件   名:adc.c                                            */ 
/*创   建   人:葛康                                             */ 
/*最后修改日期:2006年2月24日                                    */ 
/*文 件 描  述: 无                                              */ 
/*===============================================================*/ 
 
#include "AT91SAM7S64.h" 
#include "lib_AT91SAM7S64.h" 
 
extern void led_on(char led, char index); 
extern void led_delay(void);  
 
/*****************************************************************/ 
/*函数名称:adc_init                                             */ 
/*功能描述:初始化ADC的相关积存器                                */ 
/*输入参数:无                                                   */ 
/*输出参数:无                                                   */ 
/*****************************************************************/ 
void adc_init(void) 
{  
 
  //AT91F_ADC_SoftReset(AT91C_BASE_ADC); 
  AT91F_ADC_CfgPMC ();                             //使能ADC时钟 
  AT91F_ADC_CfgModeReg(AT91C_BASE_ADC,0x0f1f3f00); //软件启动,10位分辨率,128分频 
  AT91F_ADC_EnableChannel(AT91C_BASE_ADC,0xD0);//使能通道4\6\7 
  AT91F_ADC_DisableIt(AT91C_BASE_ADC,0xfffff);     //禁止所有的ADC中断	   
} 
 
 
/*****************************************************************/ 
/*函数名称:ad4_read                                             */ 
/*功能描述:读取ADC的转换结果                                    */ 
/*输入参数:无                                                   */ 
/*输出参数:ad_val                                               */ 
/*****************************************************************/ 
unsigned short ad4_read(void) 
{ 
	unsigned short ad_val; 
	volatile unsigned int status; 
	//adc_init();                                   //初始化ADC 
	AT91F_ADC_StartConversion(AT91C_BASE_ADC);    //启动AD转换 
	status =AT91F_ADC_GetStatus(AT91C_BASE_ADC); 
	if(status&AT91C_ADC_EOC4) 
	{ 
	ad_val=AT91F_ADC_GetConvertedDataCH4(AT91C_BASE_ADC)&0x3ff;//读取转换结果	 
	} 
	return ad_val; 
} 
 
 
/*****************************************************************/ 
/*函数名称:ad6_read                                             */ 
/*功能描述:读取ADC的转换结果                                    */ 
/*输入参数:无                                                   */ 
/*输出参数:ad_val                                               */ 
/*****************************************************************/ 
unsigned short ad6_read(void) 
{ 
	unsigned short ad_val; 
	volatile unsigned int status; 
	//adc_init();                                   //初始化ADC 
	AT91F_ADC_StartConversion(AT91C_BASE_ADC);    //启动AD转换 
	status =AT91F_ADC_GetStatus(AT91C_BASE_ADC); 
	if(status&AT91C_ADC_EOC6) 
	{ 
	ad_val=AT91F_ADC_GetConvertedDataCH6(AT91C_BASE_ADC)&0x3ff;//读取转换结果	 
	} 
	return ad_val; 
} 
 
 
/*****************************************************************/ 
/*函数名称:ad7_read                                             */ 
/*功能描述:读取ADC的转换结果                                    */ 
/*输入参数:无                                                   */ 
/*输出参数:ad_val                                               */ 
/*****************************************************************/ 
unsigned short ad7_read(void) 
{ 
	unsigned short ad_val; 
	volatile unsigned int status; 
	//adc_init();                                 //初始化ADC 
	AT91F_ADC_StartConversion(AT91C_BASE_ADC);    //启动AD转换 
	status =AT91F_ADC_GetStatus(AT91C_BASE_ADC); 
	if(status&AT91C_ADC_EOC7) 
	{ 
	ad_val=AT91F_ADC_GetConvertedDataCH7(AT91C_BASE_ADC)&0x3ff;//读取转换结果	 
	} 
	return ad_val; 
}