位操作 写读同步(无线) (语音1760 1700) ( 无线24l01)

************************************************************************** 

*     函数原型: unsigned char ISD_SendData(unsigned char dat); 

*     功       能:  向CPU 发送&读回数据 (用于语音1760 1700)

**************************************************************************/ 

unsigned char ISD_SendData(unsigned char dat)            // 保证外部SS=1 

{ 

  unsigned char i,j,BUF_ISD=dat; 



  SCK=1;                                 // 初始条件 

  SS=0;                                 // 使能ISD1700 的SPI 

    for(j=4;j>0;j--)                // 延迟 

     {;}     

  for(i=0;i<8;i++)                   // 发送&接收8 位数据 

  { 

     SCK=0; 

     for(j=2;j>0;j--)               // 延迟 

     {;} 

     if(BUF_ISD&0x01)                    // 将BUF_ISD 中的最低位数据发送到MOSI 端口 

         MOSI=1; 

     else 

         MOSI=0; 



     BUF_ISD>>=1;                         // BUF_ISD 右移一位 

      if(MISO)                        // 逐个接收MISO 端口的数据。将数据存在BUF_ISD 

//的最高位 

        BUF_ISD|=0x80; 



     SCK=1; 

     for(j=6;j>0;j--)            // 延迟 

     {;}    

    }     

  MOSI=0;     

  return(BUF_ISD);            //返回接收到的数据 

} 









/*无线24l01*/

unsigned char SPI_RW(unsigned char byte)

{

	unsigned char  bit_ctr;	



   	for(bit_ctr=0;bit_ctr<8;bit_ctr++)   	// output 8-bit

   	{

   		if(byte & 0x80) 

   			RF_MOSI = 1;

   		else 

   			RF_MOSI = 0;

   		byte = (byte << 1);           

   		RF_SCK = 1;                 

   		if(RF_MISO) byte |= 1;

   		RF_SCK = 0;            		

   	}



    return(byte);           		   //返回接收到的数据 

}


你可能感兴趣的:(位操作)