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