这是坛友的程序片段,供参考。
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;
} |