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 编辑 ]
|