adc0832读取两次结果不一样

2019-03-24 15:10发布

void choose_channel(uchar channel)
{
P2DIR|=BIT5+BIT4+BIT3;
TLC0832_CS_L;_NOP();
TLC0832_CLK_L;
TLC0832_DIO_H;//start bit
TLC0832_CLK_H;_NOP();// first up step
TLC0832_CLK_L;
TLC0832_DIO_H;//SGL_H choose one channel
TLC0832_CLK_H;_NOP();// second up step
TLC0832_CLK_L;
if(channel==1) TLC0832_DIO_H;//choose CH1 channel
else TLC0832_DIO_L;//choose CH0 channel
TLC0832_CLK_H;_NOP();// third up step
TLC0832_CLK_L;_NOP();
P2DIR&=~BIT4;
}

uchar REC_0832(uchar channel)
{
choose_channel(channel);
uchar temp=88,buf1=0,buf2=0,i;

for(i=0;i<8;i++)
{
buf1<<=1;
TLC0832_CLK_H;
TLC0832_CLK_L;
if(P2IN&BIT4) buf1|=0x01;
else buf1|=0x00;
}
for(i=0;i<8;i++)
{
buf2>>=1;
if(P2IN&BIT4) buf2|=0x80;
else buf2|=0x00;
TLC0832_CLK_H;
TLC0832_CLK_L;
}
if(buf1==buf2) temp=buf1;
TLC0832_CS_H;
TLC0832_CLK_H;
return temp;
}
大家帮忙看看啊,快崩溃了,跟时序和别人的程序也一样啊,怎么两次的数据都不一样啊现在知道数据不一样是正常了,现在放数码管上小的那个值会闪,应该有时候的值变化很大 ,这要怎么解决啊,以前用ad没碰到过  [ 本帖最后由 zhongxia2009 于 2011-12-20 19:33 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
cat3902982
2019-03-24 22:01
如果两次的值相差很大的话,可以检查下你的硬件,你的测量值 是否超过了你的量程了,还有就是把电源弄的干净点!

一周热门 更多>

相关问题

    相关文章