|
发表于 2015-12-11 14:02:10
|
显示全部楼层
最近在弄ad7705的通讯,参考了楼主的代码,然后又去AD官网下载了参考代码,
比较后发现楼主代码时序逻辑有点小问题,也许这么写,使用上没问题,但不推荐。
比如以读AD7705为例
楼主代码
unsigned char read_AD7705_byte(void)
{
unsigned char data = 0;
unsigned char i = 0;
for( i=0; i<8; i++ )
{
data <<= 1;
AD_CLK0;
asm("nop");
asm("nop");
asm("nop");
if(AD_DOUT) //读Dout数值
{
data++;
}
AD_CLK1; //然后产生SCLK
asm("nop");
asm("nop");
asm("nop");
}
return data;
}
AD参考代码
void readfromreg(bytenumber) //The subroutine read from the corresponding register
int bytenumber;
{
int j;
unsigned char temp1;
CS=0;
temp1=0x00;
for(j=0;j<bytenumber;j++)
{
SCLOCK=0;
SCLOCK=1; //产生SCLK上升沿
if(DOUT==0) //然后读Dout数值
temp1=temp1<<1;
else
{
temp1=temp1<<1;
temp1=temp1+0x01;
}
if(j==7||j==15||j==23)
{
printf("%02BX",temp1);
temp1=0x00;
}
}
CS=1;
}
附上逻辑时序图 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|