系统时钟16.6M,采样IO P1.6 和P1.7,设置为高阻态输入模式
读出来的全是0,求大神指点。。
具体代码如下:
void Init_AD(u8 Mode)
{
// 0 1 2 3 4 5 6 7 对应转换时钟为
//Fsys/2 /4 /6 /8 /12 /16 /24 /32
//Bank0;
if(Mode == ADC_ENB)
{
ADCON = 0X80 ; //打开ADC模块
ADT = 0 ;
ADT |= (6<<5) ; // 16.6M SYSCLC /24
ADT |= 5 ; //采样时间设置 0-15
ADCH |=0XC0; //设置p1.6 p1.7采样IO
}
else
{
ADCON &= ~0x80 ; //关闭ADC模块
}
}
//*************************************
// 函数名称:AdcSwitch
// 函数功能: 在单通道模式下转换某一通道的AD值
// 在(扫描模式下)连续转化1-Chanel的AD值
// 入口参数:要转换的AD通道号
// 出口参数:无
/***************************************/
void AdcSwitch(u8 Chanel)
{
u8 i = 0 ;
for(i=20;i>0;i--) ;
//Bank0; ;
//
ADCON = (ADCON & ~(7<<1)) | Chanel ; //选择通道
ADCON = 0X80 ; //打开ADC模块
ADCON |= 0x01 ; //开始转换AD
while(ADCON & 0x01); //等待转换结束
return ;
}
u16 ReadAD(u8 Chanel)
{
AdcSwitch(Chanel) ; //选择通道 并进行AD转换
return (u16 )(ADDH<<2+ADDL); //返回AD值
}
|