P0口实数据地址输出端,不能接AD的控制端A、B、C,单片机送数据好消漏的时候P0口的数值时变桥芹化的 相应的你AD的通路选择口A、B、C也是变化的 结果也就不正常了。把A、B、C接P1口或P2口就行 。
接地就表示你AD只用了通道0,只要你模拟数据的输入只用通道0就可以。 图看完了,主要看你需要的测量的是几组模拟量,如果只有一组就全接地,如果是多组就需要接P1口或者友烂P2口.
这个就不怎么清楚了 你贴在上面的程序看了下 没什么问题.你在从头好好理下思路看什么地方出错了.
float adc0809(void)
{
ADDA=0; //选择输入通道0
ADDB=0;
ADDC=0;
oe=0;//以下三条指令为起动 AD0809
st=0;
st=1;
st=0;
delaynms(1);
while(!eoc);//辩毕友等待转换结束
oe=1;//取出读得的数据
延时一下
ad_data0=ad_0809 ;//先返回AD的值携槐 在其他函数中处理
oe=0;
return ad_data0;
}
adda,addb,addc直接接p0.0,p0.1,p0.2,要注意上拉电阻 还有要定义 ad_0809 是AD的输出和单片机的接口 你就设成P1口吧 有问题在交数戚流
把电路图贴出来!!!
可以,不过就一直都是通道零了