注册会员
- 积分
- 96
- 威望
- 54
- 贡献
- 20
- 兑换币
- 34
- 注册时间
- 2013-9-5
- 在线时间
- 11 小时
|
2#
楼主 |
发表于 2014-3-15 11:53:19
|
只看该作者
#include "ADC.h"
int AD_Value_temp;
int sum;
void ADC_init(void)
{
MCF_GPIO_PANPAR = 0xFF;
MCF_ADC_CTRL1 = 0b0101000000000010;//循环顺序扫描模式,AN0~7设为单端输入,禁止中断,停止转换
//SMODE=2.循环顺序扫描
//CHNCFG=0,8路ANn都设为单端输入
//HLMTIE=0,禁止超上限中断
//LLMTIE=0,禁止超下限中断
//ZCIE=O,禁止过零中断
//EOSIEO=0,禁止转换完成中断
//SYNC0=1,由SYNC0输入或写START0启动扫描
//START=0,未启动扫描
//STOP0=1,停止转换
MCF_ADC_CTRL2 = 0b0000000000001001;
//DIV=20,ADC时钟频率
//(fAD=fBUS/((9+1)*2)
MCF_ADC_POWER = 0b0000000010100100;
//PD0=0,转换器A上电
//PD1=0,转换器B上电
//PD2=1,参考电压电路上电依赖于转换器A/B
//APD=0,禁止自动掉电
//PUDELAY=10;上电延时为1O个ADC时钟周期
//ASB=0,禁止自动低功耗模式
MCF_ADC_CAL = 0b0000000000000000;
//SEL_VREFH=0,SEL_VREFL=O
//使用内部参考电压VRH和VRL
MCF_ADC_CTRL1 &= 0xBFFF;
while(MCF_ADC_POWER&MCF_ADC_POWER_PSTS0) ;
while(MCF_ADC_POWER&MCF_ADC_POWER_PSTS1) ;
MCF_ADC_CTRL1 |= 0X2000;
}
uint16 ADonce(uint16 ANn)
{
uint16 result;
while(MCF_ADC_ADSTAT&(1<<ANn)==0);
result= ((MCF_ADC_ADRSLT(ANn))>>3);
return result;
}
|
|