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 编辑 ]
此帖出自
小平头技术问答
一周热门 更多>