位操作 写读同步(无线) (语音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);           		   //返回接收到的数据 
}


posted on 2013-08-16 18:41  you Richer  阅读(187)  评论(0编辑  收藏  举报