AD转换读取的数值不正确
u8 lc548c_init(void)
{
CS = 1;
CLK = 0;
return 1;
}
u8 lc548c_read(void)
{
u8 k = 0;
u8 dat = 0;
CS = 0;
delay4us(1);
for(k=0;k<8;k++)
{
if(DATA == 1) // DATA=P14
{
dat |=0x01; // 第一位赋值1
}
else
{
dat |=0x00; // 第零位赋值1
}
dat=dat<<1; // 0001->0010
_nop_();
_nop_();
_nop_();
CLK = 1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
CLK = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
CS = 1;
return dat;
}
试试这个,应该没问题了!
lc548c_init(void)
{
CS = 1;
CLK = 0;
return 1;
}
u8 lc548c_read(void)
{
u8 k = 0;
u8 dat = 0;
CS = 0;
delay4us(1);
for(k=0;k<8;k++)
{
CLK = 1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
CLK = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_(); if(DATA == 1) // DATA=P14
{
dat |=0x01; // 第一位赋值1
}
else
{
dat |=0x00; // 第零位赋值1
}
dat=dat<<1; // 0001->0010
_nop_();
_nop_();
_nop_();
}
CS = 1;
CLK = 0;
return dat;
}
还是不对啊,读出来的AD值和测出来的电压不匹配啊