本帖最后由 fangfei036 于 2012-7-18 16:34 编辑
各位前輩們好,關於PIC 16f877 的AD转换通道的疑惑,小弟不解,请多指教:void get_ad()
{
uchar t=1;
uint adval;
float advalf;
switch (t) //switch case 自己感覺也多餘,但是沒有這個結果也不正確啊
{
case 1:
{
//ADCON0=0x41;
CHS0=0;
CHS1=0;
CHS2=0; //能否這樣直接改變转换通道 RA0/AN0
for(i=0;i<8;i++)
{
ADGO=1;
while(ADGO);
adval=ADRESH;
adval=adval<<8|ADRESL;
ad_result+=adval;
}
ad_result= ad_result>>3;
adnum=ad_result;
t++;
break;
}
case 2:
{
CHS0=1;
CHS1=0;
CHS2=0;//能否這樣直接改變转换通道RA1/AN1???
//ADCON0=0x49;
//for(i=0;i<8;i++)
// {
ADGO=1;
adval=ADRESH;
adval=adval<<8|ADRESL;
ad_result+=adval;
// }
//ad_result= ad_result>>3;
vccnum=ad_result;
t=1;
break;
}
}
}
設置目的是需要連續获取两个接口的AD值,但是用硬件试了下,只能返回第一个ad的值,第二返回的不正确,请教前辈们指教,或者共享些切换AD通道的思路,或者是代码,谢谢了 修修改改都一天过去了,还没有整出来呢 谢谢了,在修改采样通道寄存器之后,进行了5ms的延时还是不行呢,要晕了 |