|
问题如下:不知道是不是编写程序有错误,AD这一部分不起作用,ads8320连接的单片机,它是一个16位串行数据模数转换芯片,连接没什么错误,希望大家帮我看看程序哪里写错了,谢谢!
程序如下:
、、、、、
sbit AD_clk=P1^0;
sbit AD_Dout=P1^1;
sbit AD_cs=P1^2;
Uint ad16;
、、、、、
uint ADS8320( )
{
uchar i;
AD_cs=0;
_nop_(); //12M晶振 1us(高低电平的持续时间大于200ns)
_nop_();
AD_clk=0;
_nop_();
_nop_();
AD_clk=1;//上升沿开始采样
AD_start=1;
while(AD_Dout)
{
_nop_();
_nop_();
AD_clk=0;
_nop_(); //采样完成判定
_nop_();
AD_clk=1;
}
_nop_();
_nop_();
AD_clk=0;//开始转化
_nop_();
_nop_();
AD_clk=1;
_nop_(); //等待转化
_nop_();
AD_clk=0;
for(i=0;i<16;i++)
{
_nop_();
_nop_();
AD_clk=1;
_nop_();
_nop_();
AD_clk=0; //上升沿转化
ad16<<=1;
if(AD_Dout==1)
{
ad16=ad16|0x0001;
}
else
{
ad16=ad16&0xfffe;
}
}
AD_cs=1;
AD_start=0;
return(ad16);
}
时序图如下:
|
-
1.png
(40.54 KB, 下载次数: 38)
时序图
-
2.png
(44.02 KB, 下载次数: 41)
连接图
|