许世霞 发表于 2014-10-14 16:54 
你确定是程序的问题?我没用过这个电路,就是说下我的看法。仔细看下电路是否正确,电源供电是否正常,模拟 ...
uint read_ads7825(void)
{
uchar i;
uint TempBit = 0;
uint TempData = 0;
DATACLK = 0; //´®ÐÐʱÖÓΪµÍµçƽ
RC = 1;
_nop_();
DATACLK = 1;
_nop_();
for (i = 0; i < 16; i++)
{
DATACLK = 0;
_nop_();
if (SDATA)
{
TempBit = 1; //¶Áȡһ¸ö¸ßµçƽ
}
else
{
TempBit = 0; //¶Áȡһ¸öµÍµçƽ
}
_nop_();
DATACLK = 1; //´®ÐÐʱÖÓΪµÍµçƽ
TempData = (TempData << 1) | TempBit;
}
_nop_();
DATACLK = 0;
_nop_();
DATACLK = 1;
_nop_();
DATACLK = 0;
_nop_();
DATACLK = 1;
return TempData;
}
/****************************ADS7825ת»»º¯Êý**************************/
/*º¯ÊýÔÐÍ:uint ads7825_convert(uchar channel)
/*º¯Êý¹¦ÄÜ:ADS7825ת»»º¯Êý
/*ÊäÈë²ÎÊý:ͨµÀºÅ
/*Êä³ö²ÎÊý:ת»»ºóµÄÊý¾Ý
/*µ÷ÓÃÄ£¿é:
/*½¨Á¢Ê±¼ä:
/*×÷Õß:
/**********************************************************************/
uint ads7825_convert(uchar channel)
{
if(channel==0x00)
{
A1 = 0, A0 = 0;
}
else if(channel==0x01)
{
A1 = 0, A0 = 1;
}
else if(channel==0x02)
{
A1 = 1, A0 = 0;
}
else
{
A1 = 1, A0 = 1;
}
RC = 1,
RC = 0; //RCµÍÂö³åʹÄÜת»»
RC = 1;
//while (!BUSY)
; //DRDYΪµÍ²»ÄܽøÐжÁ²Ù×÷
Temp = read_ads7825();
if(Temp<0)
Temp += 32768;
else
Temp -= 32767;
return(Temp); //½ÓÊÕµ½µÄÊý¾ÝΪAD16bit
}
|