void adcInit(void)
{
Enable_ADC_BandGap;
gAdcChannel=1;
clr_ADCS;//或者clr_ADCF;这里就看你使用的是中断的形式还是轮询的形式
set_ADCS;//如果你使用的是官网的没有做任何修改的BSP的话,这句一定要加上,因为
//单独Enable_ADC_BandGap是不会启动ADC转换的,后面的也是一样的
}
void sysAdcCheck(void)//ADC数据处理的函数 轮询的方式,如果是中断的方式就直接是在中断处理函数中
{
u16 adcTempData;
if(ADCS == 0)
{//adc 数据已经采集出来了
adcTempData = (ADCRH<<4)+ADCRL;//得到结果
clr_ADCEN;//还没有处理完数据的时候先将ADC关闭掉,
switch(gAdcChannel)
{
case 1:
Eanble_ADC_AIN2;
set_ADCS;//建议最好重新自己写一下这些使能某个通道的宏定义,将这句话包含进去
gAdcChannel=2;//通道也最好使用宏定义,比如是电压的通道,电流的通道 等
break;
case 2:
Eanble_ADC_AIN3;
set_ADCS;//建议最好重新自己写一下这些使能某个通道的宏定义,将这句话包含进去
gAdcChannel=3;//通道也最好使用宏定义,比如是电压的通道,电流的通道 等
break;
case 3://所有的通道都结束了 就回到最开始的那个通道
Eanble_ADC_AIN1;
set_ADCS;//建议最好重新自己写一下这些使能某个通道的宏定义,将这句话包含进去
gAdcChannel=1;//通道也最好使用宏定义,比如是电压的通道,电流的通道 等
break;
default:
Eanble_ADC_AIN1;
set_ADCS;//建议最好重新自己写一下这些使能某个通道的宏定义,将这句话包含进去
gAdcChannel=1;//通道也最好使用宏定义,比如是电压的通道,电流的通道 等
break;
}
}
}
|