1.第一种模拟方式
u8 SPI2_ReadWriteByte(u8 byte)
{
u8 bit_ctr;
for(bit_ctr = 0; bit_ctr < 8; bit_ctr++)
{
if((byte&0x80)==0x80)
{ MOSI_MB_HIGH; }
else
{ MOSI_MB_LOW; }
byte =byte<< 1;
SCK_MB_HIGH;
if(READ_NRF24L01_MB_MISO)
{byte++; }
SCK_MB_LOW ;
}
return(byte);
}
2.第二种模拟方式
/************************************
写数据
************************************/
void SPI_Send_Dat(unsigned char dat)
{
unsigned char n;
SCK_D(1);
for(n=0;n<8;n++)
{
SCK_D(0);
if(dat&0x80)
MOSI_D(1);
else
MOSI_D(0);
dat<<=1;
SCK_D(1);
}
}
/************************************
模式三 读数据
************************************/
unsigned char SPI_Receiver_Dat(void)
{
unsigned char n ,dat,bit_t;
SCK_D(0);
for(n=0;n<8;n++)
{
SCK_D(0);
dat<<=1;
if(MISO_I())
dat|=0x01;
else
dat&=0xfe;
SCK_D(1);
}
SCK_D(1);
return dat;
}
#endif
/*************************************
*************************************/
void main()
{
SPI_Init();
DDRB = 0XFF;
//#if _CPOL
//SCK_D(0);
//#endif
while(1)
{
//SSEL_D(0);
//SPI_Send_Dat(0x01);
//SPI_Send_Dat(0x31);
//SSEL_D(1);
SSEL_D(0);
SPI_Send_Dat(0x81);
PORTB =SPI_Receiver_Dat();
SSEL_D(1);
//delay();
}
}
3.两种方式都可以用吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>