nrf24l01简单问题
uchar SPI_RW(uchar byte)//写一个字节到nRF24L01,并返回此时nRF24L01的状态及数据
{
ucharbit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) //先写字节的高位,再写低位
{
MOSI = (byte & 0x80); //MOSI取byte最高位
byte = (byte << 1); //byte左移一位
SCK = 1; //SCK从高到低时开始写入
byte |= MISO;
//获取MISO位.从MOSI写命令的同时,MISO返回nRF24L01的状态及数据
SCK = 0;
}
return(byte);
}
请问byte |= MISO;是如何把MISO返回的,如果返回不是直接把MISO赋值给一个变量?为什么非要将miso与byte或在赋给byte,这样一来不就影响了把byte写进nrf24l01(在byte移位之后改变了byte的值)?
能帮帮不
uchar SPI_RW(uchar byte)
{
uchar bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++)
{
MOSI=(byte&0x80);
byte=(byte<<1);
SCK=1;
byte|=MISO;
//led=MISO;Delay(150);
SCK=0;
}
我也是这个问题?给位大神有知道的吗?
这个不会影响!你可以自已定义一个char变量,返回的值是一样的!因为MOSI=(byte&0x80);所次是把byte的最高位写入MOSI;之后byte左移一位,那byte最低位就为0;后面的byte|=MISO,又把MISO写入byte的最低位,经过8次循环后,刚好把byte传入MOSI,MISO传入byte11
这个是有向左移位的,不影响最后的取值。
6L 正解!自己要多琢磨呀
