如题,一个数据采集系统中的AD部分,仿真时,AD没有反映,还请大虾们帮忙看看程序哪里出了问题。<br /><br />硬件部分连接比较简单,<br />CS接P3.5;<br />CLK接P3.7;<br />DIN接P3.4;<br />DOUT接P3.3;<br /><br />驱动程序为:<br />uint ad_read()<br />{uchar i,ADHigh,ADLow;<br />uint adResult;<br /> CS=1;<br /> CLK=0;<br /> DIN=0;<br /> DOUT=0;<br /> adResult=0;<br /> ADHigh=0;<br /> ADLow=0;<br /> CS=0;<br /> for(i=0;i<=11;i++) /*12位输入控制字,取0通道,12位输出,故均为0*/<br /> {DIN=0;<br /> CLK=1;<br /> CLK=0;<br /> }<br />CS=1;<br />Delay(); /*延时,转换时间*/<br />CS=0;<br />for(i=0;i<4;i++) /*输出高4位*/<br />{<br /> CLK=1;<br /> ADHigh=DOUT;<br /> ADHigh<<=1;<br /> if(DOUT)<br /> ADHigh|=0x01;<br /> CLK=0;<br /> } <br />for(i=0;i<8;i++) /*输出低8位*/<br />{CLK=1;<br /> ADLow=DOUT;<br /> ADLow<<=1;<br /> if(DOUT)<br /> ADLow|=0x01;<br /> CLK=0;<br /> }<br /> CS=1;<br /> adResult=(uint)ADHigh; /*合成16位的转换结果*/<br /> adResult<<=8;<br /> adResult|=ADLow;<br /> return(adResult);<br /> }<br /> <br /><br /> |
|