這是壇友的程序片段,供參考。
uchar ad0832read(bit ch)
{
uchar i=0,value=0,value1=0;
CLK=0; //時鐘置低平
DO=1; //開始信號為高電平
CS=0; //片選信號置低,啟動AD轉換芯片
CLK=1; //輸入開始信號(構成一個正脈沖),時鐘上升沿,輸入開始信號
CLK=0; //時鐘下降沿
DO =1; //模擬信號輸入模式選擇(1:單模信號,0:雙模差分信號)
CLK=1; //時鐘上升沿,輸入開始信號
CLK=0; //時鐘下降沿
DO=ch; //模擬信號輸入通道選擇(1:通道CH1,0:通道CH0)
CLK=1; //時鐘上升沿,輸入開始信號
CLK=0; //時鐘下降沿
DO =1; //數據線置高,準備接收數據
for(i=0;i<8;i++) //從高位移入數據
{
CLK=1;
CLK=0; //時鐘下降沿,AD0832輸出數據,高位(MSB)先
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++) //從低位移入數據
{ //接收校驗數據
value1>>=1;
if(DO)
value1+=0x80;
CLK=1;
CLK=0;
}
CLK=1; //數據線置高,釋放總線,完成一次轉換
DO =1;
CS =1;
if(value==value1) //與校驗數據比較,正確就返回數據,否則返回0
return value;
return 0;
} |