初级会员
- 积分
- 156
- 金钱
- 156
- 注册时间
- 2013-8-1
- 在线时间
- 0 小时
|
下面为MINI版发送数据<span> Control_Point1_Open[16]给单片机,单片机接收数据并自动回复给mini板的代码。MINI版的程序不变。<br />
问题是:<br />
1、MINI板第一次发送数据给单片机的时候,单片机接收到的数据是<span> Control_Point1_Open[16]的数据,但是后面还多接收12个0X00。这是为什么?</span></span><br />
2、当单片机接收到MINI板的数据后,自动回复给MINI板,MINI板接收到的数据为12个0x00加<span>Control_Point1_Open[16]的数据。除第一次外再接收数据就</span><br />
少了0XAA,后面的数据就,只有<span>0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0xBB。这是为什么呢。<br />
</span><br />
void main()<br />
{<br />
uchar Control_Point1_Open[16]={0xAA,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA1,0x00,0xBB};<br />
uchar Respond_Point1_Open[16]={0xAA,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0xBB};<br />
uchar Rx_Buf[32]; //接收到的数据暂存器,最多32字节数据<br />
<br />
uchar i;<br />
uchar flag=0;<br />
init_NRF24L01();<br />
StartUART();<br />
<br />
while(NRF24L01_Check()) //检查不到24l01则报警 <br />
{<br />
LED0=0;<br />
delayms(200);<br />
LED0=1;<br />
delayms(200);<br />
}<br />
while(1)<br />
{<br />
RX_Mode();//接收模式 <br />
while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收数据 ,返回1则接收到数据 ,在等待接收数据期间,可以随时变成发送模式 <br />
{<br />
if(flag==16) //按了按键8 则变成发送模式,发送对应数据,发送完后变成接收模式 <br />
{ <br />
TX_Mode(); //发送模式 <br />
nRF24L01_TxPacket(Respond_Point1_Open); // 发送命令数据<br />
delay_ms(500);<br />
SPI_WR_Reg(WRITE_REG+NRFRegSTATUS,0XFF);<br />
flag=0; <br />
break; //退出最近的循环,从而变回接收模式,这句关键 <br />
}<br />
}<br />
<br />
for(i=0;i<16;i++)<br />
{<br />
if(Rx_Buf==Control_Point1_Open) //若接收到对应的数据则实现对应功能 <br />
{<br />
flag++;<br />
R_S_Byte(Rx_Buf); //为串口输出函数<br />
Rx_Buf=0;//清空数据 <br />
} <br />
} <br />
}<br />
}<br /> |
|