|
发表于 2012-1-7 23:31:38
|
显示全部楼层
回复【3楼】veryjc
-----------------------------------------------------------------------
/*******************************************************************/
/*
/* L3G4200D读寄存器
/*
/*******************************************************************/
uchar L3G_R(uchar add)
{
uchar k,dat=0xFF;
add |=0x80; //写寄存器;地址不自动增加;
CS=0;
for(k=0;k<8;k++) //将寄存器的地址写入L3G4200D中
{
SCK=0;
if((add << k) & 0x80)
{
SDI = 1;
}
else
{
SDI= 0;
}
SCK=1;
}
SDI=1;
for(k=0;k<8;k++) //将目标寄存器的数据读出来
{
SCK=0;
dat=dat<<1;
if(SDO==1)dat++;
SCK=1;
}
CS =1;
SDI=1;
SDI=1;
return(dat);
}
/*******************************************************************/
/*
/* L3G4200D写寄存器
/*
/*******************************************************************/
void L3G_W(uchar add,uchar dat)
{
uchar k;
add &=0x3F; //写寄存器;地址不自动增加;
CS =0;
for(k=0;k<8;k++) //将寄存器的地址写入L3G4200D中
{
SCK=0;
if((add << k) & 0x80)
{
SDI = 1;
}
else
{
SDI= 0;
}
SCK=1;
}
for(k=0;k<8;k++) //将配置数据写入L3G4200D寄存器中
{
SCK=0;
if((dat << k) & 0x80)
{
SDI = 1;
}
else
{
SDI= 0;
}
SCK=1;
}
SDI=1;
CS =1;
SDI=1;
SDO=1;
} |
|