#include <61S2.h> uint SPI_RW(uint inf) { uint a; for(a=0;a<8;a++) //通过循环读取8位数据 { MOSI = (inf & 0x80); //读取inf的第7位数据 inf = (inf << 1); //将inf的位循环右移一位 SCK = 1; //SCK置高 inf |= MISO; //将MISO赋值给inf的最低位 SCK = 0; //SCK置低 } return(inf); //返回数据 } //下面为无线接收和发送的主函数 //无线发射主函数 void main() { unsigned char tf =0; unsigned char SEND_BUF [20]={0}; //定义发送数组 init_NRF24L01(); //初始化NRF24L01 while(1) { if(ANJIAN1==0) //判断外部键盘 { SEND_BUF[1] = 1 ; //保存数据 while(ANJIAN1==0); //按键松手检测 } if(ANJIAN2==0) //原理同按键1 { SEND_BUF[1] = 2 ; while(ANJIAN2==0); } if(ANJIAN3==0) //原理同按键1 { SEND_BUF[1] = 3 ; while(ANJIAN3==0); } if(ANJIAN4==0) //原理同按键1 { SEND_BUF[1] = 4 ; while(ANJIAN4==0); } nRF24L01_TxPacket(TxBuf); //发送数组内数据 Delay10ms(); //适当延时 Set_RECEIVE(); //配置为数据接收 RxBack(RxBuf); //接收无线模块的反馈信号 } } //无线接收主函数 #include <61S2.h> void main() { unsigned char Receive_Buf[20]={0}; //定义数组 init_NRF24L01(); //初始化NRF24L01芯片 init_PCA(); //初始化PCA模块 go(); //使小车初始状态为执行 while(1) { Set_RECEIVE(); //定义为接收信号模式 RxBack(Receive_Buf); //读取数据 if(Receive_Buf[1]==0x01) //判断接收数据是否满足要求 { go(); //前进 } if(Receive_Buf[1]==0x02) //同上 { right_1(); //右转 } if(Receive_Buf[1]==0x03) //同上 { left_1(); //左转 } if(Receive_Buf[1]==0x04) //同上 { back(); //后退 } Delay10ms(); //延时10毫秒 } }