//---------------------------------------
// 功能: Atmega128L控制ADS7816进行AD采集
// 编写:
// 2006.11
unsigned int ads7816(void)
{
unsigned int AD_Temp;
unsigned char i,count;
unsigned char AD_Low8=0,AD_High4=0;
AD_Temp = 0;
AD_CS_0; // 片选
bFlagADTimeOver = 1; // 加入超时处理
AD_TimeOverCount = 0;
while(AD_DATA==1)
{
AD_CLK_1;
Delay(10);
AD_CLK_0;
Delay(10);
if(AD_TimeOverCount == 2)
break; // 如果在100ms内未能采集成功,则退出
}
bFlagADTimeOver = 0;
AD_TimeOverCount = 0;
for(i=0;i《4;i++)
{
AD_CLK_1;
Delay(10);
AD_CLK_0;
Delay(10);
AD_High4 = (AD_High4《《1);
if(AD_DATA == 1)
AD_High4 |= 0x01;
}
for(i=0;i《8;i++)
{
AD_CLK_1;
Delay(10);
AD_CLK_0;
Delay(10);
AD_Low8=(AD_Low8《《1);
if(AD_DATA == 1)
AD_Low8 |= 0x01;
}
AD_CS_1;
AD_High4 &= 0x0F;
AD_Temp = AD_High4*256 + AD_Low8;
return(AD_Temp);
}
//---------------------------------------
// 功能: Atmega128L控制ADS7816进行AD采集
// 编写:
// 2006.11
unsigned int ads7816(void)
{
unsigned int AD_Temp;
unsigned char i,count;
unsigned char AD_Low8=0,AD_High4=0;
AD_Temp = 0;
AD_CS_0; // 片选
bFlagADTimeOver = 1; // 加入超时处理
AD_TimeOverCount = 0;
while(AD_DATA==1)
{
AD_CLK_1;
Delay(10);
AD_CLK_0;
Delay(10);
if(AD_TimeOverCount == 2)
break; // 如果在100ms内未能采集成功,则退出
}
bFlagADTimeOver = 0;
AD_TimeOverCount = 0;
for(i=0;i《4;i++)
{
AD_CLK_1;
Delay(10);
AD_CLK_0;
Delay(10);
AD_High4 = (AD_High4《《1);
if(AD_DATA == 1)
AD_High4 |= 0x01;
}
for(i=0;i《8;i++)
{
AD_CLK_1;
Delay(10);
AD_CLK_0;
Delay(10);
AD_Low8=(AD_Low8《《1);
if(AD_DATA == 1)
AD_Low8 |= 0x01;
}
AD_CS_1;
AD_High4 &= 0x0F;
AD_Temp = AD_High4*256 + AD_Low8;
return(AD_Temp);
}
举报