#include <reg52.h>
#include <Intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit MISO=P1^4; //主收从发
sbit MOSI=P1^3; //主发从收
sbit SCK=P1^2; //串行时钟信号
sbit CE=P1^1; //芯片使能
sbit CSN=P1^5; //片选信号
sbit IRQ=P1^6; //中断查询
/*************************************************************/
uchar seg[10]={~0x3f,~0x06,~0x5b,~0x4f,~0x66};
bit TxBufEndFlg = 1; //数据发送完成标志
uchar checkack();
uchar TxBuf[20]={0};
uchar RxBuf[20]={0};
uchar SPI_RW(uchar uchars);
uchar SPI_Read(uchar reg);
uchar SPI_RW_Reg(uchar reg, uchar value);
uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);
uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars);
uchar KeyScanPrg();
uchar KeyInState,KeyStateCnt;
/************************************************************/
#define TX_ADR_WIDTH 5 //发送地址长度为5个字节
#define RX_ADR_WIDTH 5 //接收地址长度为5个字节
#define TX_PLOAD_WIDTH 20 //发送数据长度为20个字节
#define RX_PLOAD_WIDTH 20 //接收数据长度为20个字节
uchar code TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址
uchar code RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址
//SPI命令
#define READ_REG 0x00 //读第0个寄存器
#define WRITE_REG 0x20 //写第0个寄存器
#define RD_RX_PLOAD 0x61 //在接收模式下使用,读有效数据
#define WR_TX_PLOAD 0xA0 //在发送模式下使用,写有效数据
#define FLUSH_TX 0xE1 //在发送模式下使用,清TX FIFO寄存器
#define FLUSH_RX 0xE2 //在接收模式下使用,清RX FIFO寄存器
#define REUSE_TX_PL 0xE3 //发送方使用,重复发送最后的数据
#define NOP 0xFF //空操作,用于读状态寄存器STATUS的值
//NRF24L01寄存器地址
#define CONFIG 0x00 //配置寄存器,8bit
#define EN_AA 0x01 //自动应答设置寄存器,8bit
#define EN_RXADDR 0x02 //接收地址设置寄存器,8bit
#define SETUP_AW 0x03 //地址宽度设置寄存器,8bit
#define SETUP_RETR 0x04 //自动重复发送设置寄存器,8bit
#define RF_CH 0x05 // RF通道寄存器,8bit(工作频率设置)
#define RF_SETUP 0x06 //RF设置寄存器,8bit(发射速率、功耗功能设置)
#define STATUS 0x07 //状态寄存器,8bit
#define OBSERVE_TX 0x08 //发送检测寄存器,8bit
#define CD 0x09 //载波检测寄存器,8bit
#define RX_ADDR_P0 0x0A //接收地址数据通道0,40bit
#define RX_ADDR_P1 0x0B
#define RX_ADDR_P2 0x0C