之前用STC89C52芯片,AD7895工作正常,换成AT89C2051后AD芯片不工作了。。。不知怎么回事,求大神帮忙啊。。。
AD转换程序:
/*************************AD7895初始化**************************/
void AD_init(void)
{
SCLK=0;
SDATA = 0;
}
/**********************AD7895读数据*****************************/
int AD_read()
{
uchar i;
int outdata0=0;
CONVST=1;
_nop_();
CONVST=0;
_nop_();
while(BUSY);
CONVST=1;
_nop_();
for(i=0;i<16;i++)
{
SCLK=0; //同时喂狗
outdata0=outdata0<<1;
if(SDATA == 1)
outdata0|=0x01;
SCLK=1;
}
_nop_();
return(outdata0);
}
/*********************Judge函数(AD读取判断)*******************/
void Judge()
{
outdata1 = 0;
outdata2 = 0; //清零
outdata3 = 0;
AD_init();
outdata=AD_read();
outdata1 = outdata;
outdata2 = outdata;
outdata3 = outdata;
temp = 0x07ff; //与负电压相与的值0111 1111 1111
outdata3&=temp; //消去负标志位
outdata=0; //清零
outdata2>>=11; //取正负标志位
if(outdata2 == 0x00)
{
if(outdata1 > v1)
{
count++;//二分压后判定值
}
}
else if(outdata2 == 0x01)
{
if(outdata3 < v2)
{
count++; //二分压后判定值
}
}
}
|