本帖最后由 aerwa 于 2016-3-20 12:01 编辑
不知道你用的是什么单片机, 支持位操作不, 这是我430的写读返回, 和你的不一样, 你一定要确认SPI 的写读返回单步仿真的时候 MISO的值要能返回出MOSI的值。
unchar SPI_RW(unchar byte)
{
unsigned char bit_ctr;
// P1DIR&=~BIT1;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
{
if((byte&0x80)==0X80)
{
NRF_MOSI=1;
}
else NRF_MOSI=0; // output 'uchar', MSB to MOSI
byte = (byte << 1); // // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
NRF_SCK=1; // Set SCK high..
if(NRF_MISO) // 读MISO到byte最低位
{
byte|= 0X01;
}
NRF_SCK=0; // ..then set SCK low again
}
return(byte); // return read uchar
} |