CS5550读写程序

CS5550读写程序

 

/*************************************************************************************
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读写程序)