最近在调一个程序,用max1148做程序采集!可是怎么调读出的数据都是不对,程序如下,帮我看看程序有什么问题吗?
//定义与MAX1148BEUP的接口
sbit DOUT = P1^4;
sbit SSTRB = P1^3;
sbit DIN = P1^2;
sbit nCS = P1^1;
sbit CLK = P1^0;
//MAX1148采样程序
unsigned int MAX1148AD_Sample(unsigned char Ctrl_Cmd)
{
unsigned char i,tmp_data;
unsigned int adc_value = 0;
tmp_data = Ctrl_Cmd;
nCS = 0; //写控制字
for(i=0; i<8; i++)
{
DIN = tmp_data & 0x80;
CLK=1;
tmp_data <<= 1;
CLK=0;
}
// _nop_();
// _nop_();
while(!SSTRB); //等待SSTRB为高
for(i=0;i<16;i++)
{
adc_value <<= 1;
CLK = 1;
adc_value |= DOUT;
CLK = 0;
}
nCS = 1;
return(adc_value & 0x3FFF);
}
我用的是ch2通道,采取单通道采样,控制字是0x9E! |