nrf24l01简单问题

2019-07-16 01:58发布

第一次接触模块化,就遇到如此问题:
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的值)?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
羽芼論翅
1楼-- · 2019-07-16 02:53
能帮帮不
羽芼論翅
2楼-- · 2019-07-16 04:49
{:23:}{:23:}{:23:}
l☆ve莪湜咜哋壞
3楼-- · 2019-07-16 06:23
 精彩回答 2  元偷偷看……
fpf888
4楼-- · 2019-07-16 11:51
我也是这个问题?给位大神有知道的吗?
树多自成林
5楼-- · 2019-07-16 14:00
这个不会影响!你可以自已定义一个char变量,返回的值是一样的!因为MOSI=(byte&0x80);所次是把byte的最高位写入MOSI;之后byte左移一位,那byte最低位就为0;后面的byte|=MISO,又把MISO写入byte的最低位,经过8次循环后,刚好把byte传入MOSI,MISO传入byte11
败笔惨
6楼-- · 2019-07-16 16:19
这个是有向左移位的,不影响最后的取值。

一周热门 更多>