由于PIC单片机有八路AD转换通道,如果每路都写一个转换函数,哪样非常麻烦并且不便于写程序,缘此我写了一段如下转换可实现八路通用的函数:
uchar get_ad(uchar n) //带通道选择的AD采样函数
{
uchar advalu;
ADCON0=n;
ADCON1=0x80; //1000 0000右对齐
delay(2); //延时等待
ADGO=1; //启动AD转换
while(ADGO); //等待AD转换结束
advalu=ADRESH; //读AD转换的值
advalu*=256; //将读回的AD值左移八位
advalu+=ADRESL; //加上低八位
return (advalu); //返回AD值
}
调用如下,分别从0到7通道
ad0=get_ad(0xc1);
ad1=get_ad(0xc9);
ad2=get_ad(0xd1);
ad3=get_ad(0xd9);
ad4=get_ad(0xe1);
ad5=get_ad(0xe9);
ad6=get_ad(0xf1);
ad7=get_ad(0xf9);