|
发表于 2008-1-25 09:02:04
|
显示全部楼层
/************************************************************************
函数功能: 读7022数据底层函数
入口参数: bCmd:寄存器地址
出口参数: 数据
************************************************************************/
unsigned long Read7022(unsigned char bCmd)
{
unsigned char bI, bTemp;
unsigned long dwData, dwTemp;
CS_ATT = 1;
SCLK_ATT = 0;
CS_ATT = 0;
bTemp = 0x80;
for(bI=0; bI<8; bI++)
{
SCLK_ATT = 1;
if(bCmd & bTemp)
DIN_ATT = 1;
else
DIN_ATT = 0;
bTemp >>= 1;
SCLK_ATT = 0;
}
delay(10);
dwData = 0x00000000;//读24bit
for(bI=0; bI<24; bI++)
{
dwData <<= 1;
SCLK_ATT = 1;
delay(3);
if (DOUT_ATT)
{
dwData |= 1;
}
else
;
SCLK_ATT = 0;
}
CS_ATT = 1;
delay(20);
return dwData;
}
/************************************************************************
函数功能: 写7022数据底层函数
入口参数: bCmd:寄存器地址
dwData数据
出口参数: 无
************************************************************************/
void Write7022(unsigned char bCmd, unsigned long dwData)
{
unsigned char bI, bTemp;
unsigned long dwTemp;
CS_ATT = 1;
SCLK_ATT = 0;
CS_ATT = 0;
bCmd |= 0x80;//write
bTemp = 0x80;
for(bI=0; bI<8; bI++)
{
SCLK_ATT = 1;
if(bCmd & bTemp)
DIN_ATT = 1;
else
DIN_ATT = 0;
bTemp >>= 1;
SCLK_ATT=0;
}
delay(10);
dwTemp = 0x800000;
for(bI=0; bI<24; bI++)
{
if(dwData & dwTemp)
{
DIN_ATT = 1;
}
else
DIN_ATT = 0;
SCLK_ATT = 1;
delay(3);
SCLK_ATT = 0;
dwTemp >>= 1;
}
CS_ATT = 1;
delay(20);
} |
|