|
四个通道都测电压,但是读通道1得到通道4的值,然后循环这样,读通道4得到通道3的值。。。。。。
这是读AD值的函数
unsigned char Read_AD(unsigned char CH)
{
unsigned char Digital;
IIC_Read(SlaveAddr,CH,&Digital,1);
return Digital;
}
其中IIC_Read是
bit IIC_Read(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
{
unsigned char i;
Start_I2c(); //启动总线
SendByte(sla); //发送器件地址
if(ack==0)return(0);
SendByte(suba); //发送器件子地址
if(ack==0)return(0);
Start_I2c();
SendByte(sla+1);
if(ack==0)return(0);
for(i=0;i<no-1;i++)
{
*s=RcvByte(); //发送数据
Ack_I2c(); //发送就答位
s++;
}
*s=RcvByte();
NoAck_I2c(); //发送非应位
Stop_I2c(); //结束总线
return(1);
}
然后主程序里
while(1)
{
val[0]=Read_AD(0);
//Send_Byte(val[0]); //串口输出看看值
//delay_ms(10);
val[1]=Read_AD(1);
val[2]=Read_AD(2);
val[3]=Read_AD(3);
Display();
delay_ms(500);
}
0对应1通道,但读出的值是4通道的,我用万能表,测过了,4通道输入的值确实和读到的1通道的电压值一样! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|