|
|
這是壇友的程序片段,供參考。
uchar ad0832read(bit ch)
{
uchar i=0,value=0,value1=0;
CLK=0; //時(shí)鐘置低平
DO=1; //開(kāi)始信號(hào)為高電平
CS=0; //片選信號(hào)置低,啟動(dòng)AD轉(zhuǎn)換芯片
CLK=1; //輸入開(kāi)始信號(hào)(構(gòu)成一個(gè)正脈沖),時(shí)鐘上升沿,輸入開(kāi)始信號(hào)
CLK=0; //時(shí)鐘下降沿
DO =1; //模擬信號(hào)輸入模式選擇(1:?jiǎn)文P盘?hào),0:雙模差分信號(hào))
CLK=1; //時(shí)鐘上升沿,輸入開(kāi)始信號(hào)
CLK=0; //時(shí)鐘下降沿
DO=ch; //模擬信號(hào)輸入通道選擇(1:通道CH1,0:通道CH0)
CLK=1; //時(shí)鐘上升沿,輸入開(kāi)始信號(hào)
CLK=0; //時(shí)鐘下降沿
DO =1; //數(shù)據(jù)線(xiàn)置高,準(zhǔn)備接收數(shù)據(jù)
for(i=0;i<8;i++) //從高位移入數(shù)據(jù)
{
CLK=1;
CLK=0; //時(shí)鐘下降沿,AD0832輸出數(shù)據(jù),高位(MSB)先
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++) //從低位移入數(shù)據(jù)
{ //接收校驗(yàn)數(shù)據(jù)
value1>>=1;
if(DO)
value1+=0x80;
CLK=1;
CLK=0;
}
CLK=1; //數(shù)據(jù)線(xiàn)置高,釋放總線(xiàn),完成一次轉(zhuǎn)換
DO =1;
CS =1;
if(value==value1) //與校驗(yàn)數(shù)據(jù)比較,正確就返回?cái)?shù)據(jù),否則返回0
return value;
return 0;
} |
|