1、sbitIRQ=P32;/数字输入(可屏蔽中断)/*按键*/sbitKEY1=P27;/按键S1sbitKEY2=P22;/按键S2/*数码管位选*/sbitled1=P10;/LED0sbitled2=P11;/LED1sbit led3 =P12; /LED2led4 =P13;/LED3led5 =P14;/LED4/*NRF24L01*/#define TX_ADR_WIDTH 5 / 5 uints TX address width#define RX_ADR_WIDTH / 5 uints RX address width#define TX_PLOAD_WIDTH 20 / 20
2、 uints TX payload#define RX_PLOAD_WIDTH uint const TX_ADDRESSTX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01;/本地地址uint const RX_ADDRESSRX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01;/接收地址/*NRF24L01寄存器指令*/#define READ_REG 0x00 / 读寄存器指令#define WRITE_REG 0x20/ 写寄存器指令#define RD_RX_PLOAD 0x61 / 读取接收数据指令 读RX 有效数据#define W
3、R_TX_PLOAD 0xA0 / 写待发数据指令 写TX 有效数据#define FLUSH_TX 0xE1 / 冲洗发送 FIFO指令 /清除TX FIFO 寄存器应用于发射模式下#define FLUSH_RX 0xE2 / 冲洗接收 FIFO指令 /清除RX FIFO 寄存器应用于接收模式下#define REUSE_TX_PL 0xE3 / 定义重复装载数据指令 /重新使用上一包有效数据#define NOP 0xFF / 保留/*SPI(nRF24L01)寄存器地址*/#define CONFIG / 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x
4、01 / 自动应答功能设置 /使能自动应答功能 /此功能禁止后可与nRF2401 通讯#define EN_RXADDR 0x02 / 可用信道设置 /接收地址允许#define SETUP_AW 0x03 / 收发地址宽度设置#define SETUP_RETR 0x04 / 自动重发功能设置#define RF_CH 0x05 / 工作频率设置#define RF_SETUP 0x06 / 发射速率、功耗功能设置#define STATUS 0x07 / 状态寄存器#define OBSERVE_TX 0x08 / 发送监测功能#define CD 0x09 / 地址检测 #define
5、RX_ADDR_P0 0x0A / 频道0接收数据地址 数据通道0 接收地址#define RX_ADDR_P1 0x0B / 频道1接收数据地址#define RX_ADDR_P2 0x0C / 频道2接收数据地址#define RX_ADDR_P3 0x0D / 频道3接收数据地址#define RX_ADDR_P4 0x0E / 频道4接收数据地址#define RX_ADDR_P5 0x0F / 频道5接收数据地址#define TX_ADDR 0x10 / 发送地址寄存器#define RX_PW_P0 0x11 / 接收频道0接收数据长度#define RX_PW_P1 0x12
6、/ 接收频道1接收数据长度#define RX_PW_P2 0x13 / 接收频道2接收数据长度#define RX_PW_P3 0x14 / 接收频道3接收数据长度#define RX_PW_P4 0x15 / 接收频道4接收数据长度#define RX_PW_P5 0x16 / 接收频道5接收数据长度#define FIFO_STATUS 0x17 / FIFO栈入栈出状态寄存器设置 /FIFO 状态寄存器/*函数声明 */void Delay(unsigned int s); /大延时void inerDelay_us(unsigned char n);/小延时void init_NRF
7、24L01(void);/NRF24L01 初始化uint SPI_RW(uint dat);/根据SPI协议,写一字节数据到nRF24L01,同时从nRF24L01读出一字节uchar SPI_Read(uchar reg);/从reg寄存器读一字节void SetRX_Mode(void);/数据接收配置uint SPI_RW_Reg(uchar reg, uchar value);/写数据value到reg寄存器uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);/从reg寄存器读出bytes个字节,通常用来/读取接收通道数据或
8、接收/发送地址uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars); /把pBuf缓存中的数据写入到nRF24L01,通常用来写入发/射通道数据或接收/发送地址unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);/数据读取后放入rx_buf接收缓冲区中void nRF24L01_TxPacket(unsigned char * tx_buf);/发送 tx_buf中数据/*长延时*/void Delay(unsigned int s)unsigned int i;for(i=0; is; i+);/*/uintbdata sta; /状态标志sbitRX_DR=sta6;/RX_DR 为 sta 的第六位sbitTX_DS=sta5;/TX_DS 为 sta 的第五位sbitMAX_RT=sta4;/MAX_RT 为 sta 的第四位/*延时函数void inerDelay_us(unsigned char n)/延时,us 级