/*************************************************************************************
CS5550 READ AND WRITE
sbit CS5_INT = P1^6;
sbit CS5_SCK = P1^7;
sbit CS5_SDI = P3^6;
sbit CS5_SDO = P3^7;
sbit CS5_CS = P4^3;
***************************************************************************************/
//unsigned long READ_CS550(unsigned long DATA); //READ DATA
//void WRITE_CS550(unsigned long DATA); //WRITE DATA
void READ_CS550(unsigned char DATA) //READ DATA读24BIT数据
{unsigned char M;
CS5_CS=1;
delay(10);
CS5_CS=0;
// Command Time
for(M=0;M<8;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
if(DATA&0X80) CS5_SDI=1;
else CS5_SDI=0;
DATA<<=1;
CS5_SCK=0;
_nop_();_nop_();_nop_();
}
CS5_SDI=1;
//High Byte
for(M=0;M<8;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
if(M==6)CS5_SDI=0;
CS5_SCK=0;
//delay(2);
CS555.BYTE[1]<<=1;
if(CS5_SDO) CS555.BYTE[1]|=0X01;
if(M==7)CS5_SDI=1;
_nop_();_nop_();_nop_();
}
//Mid Byte
for(M=0;M<8;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
if(M==6)CS5_SDI=0;
CS5_SCK=0;
// delay(2);
CS555.BYTE[2]<<=1;
if(CS5_SDO) CS555.BYTE[2]|=0X01;
if(M==7)CS5_SDI=1;
_nop_();_nop_();_nop_();
}
// Low Byte
for(M=0;M<8;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
if(M==6)CS5_SDI=0;
CS5_SCK=0;
// delay(2);
CS555.BYTE[3]<<=1;
if(CS5_SDO) CS555.BYTE[3]|=0X01;
if(M==7)CS5_SDI=1;
_nop_();_nop_();_nop_();
}
CS5_CS=1;
CS5_SCK = 1;
CS5_SDI = 1;
CS5_SDO = 1;
AD_DATA=CS555.BYTE[1];
AD_DATA*=65536;
AD_DATA+=CS555.UWORD[1];
}
void WRITE_CS550(unsigned char COUNT,unsigned long DATA) //WRITE DATA 像寄存器写24BIT数据
{ unsigned char M;
unsigned long F;
F=DATA;
CS5_CS=1;
delay(10);
CS5_CS=0;
delay(5);
// Command Time
for(M=0;M<8;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
if(COUNT&0X80) CS5_SDI=1;
else CS5_SDI=0;
COUNT<<=1;
CS5_SCK=0;
_nop_();_nop_();_nop_();
}
for(M=0;M<24;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
if(F&0X800000) CS5_SDI=1;
else CS5_SDI=0;
F<<=1;
CS5_SCK=0;
_nop_();_nop_();_nop_();
}
for(M=0;M<24;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
CS5_SDI=0;
CS5_SCK=0;
_nop_();_nop_();_nop_();
}
CS5_CS=1;
CS5_SCK = 1;
CS5_SDI = 1;
CS5_SDO = 1;
}
void MING_LING(unsigned char SS) //发送命令字
{
unsigned char M;
//unsigned long F;
//F=DATA;
CS5_CS=1;
delay(10);
CS5_CS=0;
delay(5);
for(M=0;M<24;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
CS5_SDI=0;
CS5_SCK=0;
_nop_();_nop_();_nop_();
}
// Command Time
for(M=0;M<8;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
if(SS&0X80) CS5_SDI=1;
else CS5_SDI=0;
SS<<=1;
CS5_SCK=0;
_nop_();_nop_();_nop_();
}
for(M=0;M<24;M++)
{
CS5_SCK=1;
_nop_();_nop_();_nop_();
CS5_SDI=0;
CS5_SCK=0;
_nop_();_nop_();_nop_();
}
//CS5_SCK=1;
// delay(10);
// CS5_SCK=0;
delay(10);
CS5_CS=1;
CS5_SCK = 1;
CS5_SDI = 1;
CS5_SDO = 1;
}
这是CS5550的程序,如有问题,请提出,谢谢~
用户377235 2015-1-19 09:07
您用的是什么型号的单片机?
xucun915_925777961 2011-1-7 13:12
用户400645 2010-1-11 22:00