NRF24L01的C51单片机讲解文档格式.doc
- 文档编号:15494934
- 上传时间:2022-11-02
- 格式:DOC
- 页数:12
- 大小:95.50KB
NRF24L01的C51单片机讲解文档格式.doc
《NRF24L01的C51单片机讲解文档格式.doc》由会员分享,可在线阅读,更多相关《NRF24L01的C51单片机讲解文档格式.doc(12页珍藏版)》请在冰豆网上搜索。
sbit IRQ =P3^2;
//数字输入(可屏蔽中断)
/************************************按键***********************************************/
sbit KEY1=P2^7;
//按键S1
sbit KEY2=P2^2;
//按键S2
/************************************数码管位选******************************************/
sbit led1=P1^0;
//LED0
sbit led2=P1^1;
//LED1
sbit
led3=P1^2;
//LED2
led4=P1^3;
//LED3
led5=P1^4;
//LED4
/*********************************************NRF24L01***********************************/
#defineTX_ADR_WIDTH
5
//5uintsTXaddresswidth
#defineRX_ADR_WIDTH
//5uintsRXaddresswidth
#defineTX_PLOAD_WIDTH
20
//20uintsTXpayload
#defineRX_PLOAD_WIDTH
uintconstTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};
//本地地址
uintconstRX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};
//接收地址
/***************************************NRF24L01寄存器指令*******************************/
#defineREAD_REG
0x00
//读寄存器指令
#defineWRITE_REG
0x20
//写寄存器指令
#defineRD_RX_PLOAD
0x61
//读取接收数据指令读RX有效数据
#defineWR_TX_PLOAD
0xA0
//写待发数据指令写TX有效数据
#defineFLUSH_TX
0xE1
//冲洗发送FIFO指令
//清除TXFIFO寄存器应用于发射模式下
#defineFLUSH_RX
0xE2
//冲洗接收FIFO指令
//清除RXFIFO寄存器应用于接收模式下
#defineREUSE_TX_PL
0xE3
//定义重复装载数据指令
//重新使用上一包有效数据
#defineNOP
0xFF
//保留
/*************************************SPI(nRF24L01)寄存器地址***********************/
#defineCONFIG
//配置收发状态,CRC校验模式以及收发状态响应方式
#defineEN_AA
0x01
//自动应答功能设置
//使能自动应答功能
//此功能禁止后可与nRF2401通讯
#defineEN_RXADDR
0x02
//可用信道设置
//接收地址允许
#defineSETUP_AW
0x03
//收发地址宽度设置
#defineSETUP_RETR
0x04
//自动重发功能设置
#defineRF_CH
0x05
//工作频率设置
#defineRF_SETUP
0x06
//发射速率、功耗功能设置
#defineSTATUS
0x07
//状态寄存器
#defineOBSERVE_TX
0x08
//发送监测功能
#defineCD
0x09
//地址检测
#defineRX_ADDR_P0
0x0A
//频道0接收数据地址数据通道0接收地址
#defineRX_ADDR_P1
0x0B
//频道1接收数据地址
#defineRX_ADDR_P2
0x0C
//频道2接收数据地址
#defineRX_ADDR_P3
0x0D
//频道3接收数据地址
#defineRX_ADDR_P4
0x0E
//频道4接收数据地址
#defineRX_ADDR_P5
0x0F
//频道5接收数据地址
#defineTX_ADDR
0x10
//发送地址寄存器
#defineRX_PW_P0
0x11
//接收频道0接收数据长度
#defineRX_PW_P1
0x12
//接收频道1接收数据长度
#defineRX_PW_P2
0x13
//接收频道2接收数据长度
#defineRX_PW_P3
0x14
//接收频道3接收数据长度
#defineRX_PW_P4
0x15
//接收频道4接收数据长度
#defineRX_PW_P5
0x16
//接收频道5接收数据长度
#defineFIFO_STATUS
0x17
//FIFO栈入栈出状态寄存器设置
//FIFO状态寄存器
/*************************************函数声明****************************************/
voidDelay(unsignedints);
//大延时
voidinerDelay_us(unsignedcharn);
//小延时
voidinit_NRF24L01(void);
//NRF24L01初始化
uintSPI_RW(uintdat);
//根据SPI协议,写一字节数据到nRF24L01,同时从nRF24L01读出一字节
ucharSPI_Read(ucharreg);
//从reg寄存器读一字节
voidSetRX_Mode(void);
//数据接收配置
uintSPI_RW_Reg(ucharreg,ucharvalue);
//写数据value到reg寄存器
uintSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars);
//从reg寄存器读出bytes个字节,通常用来
//读取接收通道数据或接收/发送地址
uintSPI_Write_Buf(ucharreg,uchar*pBuf,ucharuchars);
//把pBuf缓存中的数据写入到nRF24L01,通常用来写入发
//射通道数据或接收/发送地址
unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf);
//数据读取后放入rx_buf接收缓冲区中
voidnRF24L01_TxPacket(unsignedchar*tx_buf);
//发送tx_buf中数据
/*****************************************长延时*****************************************/
voidDelay(unsignedints)
{
unsignedinti;
for(i=0;
i<
s;
i++);
}
/******************************************************************************************/
uint
bdatasta;
//状态标志
sbit RX_DR =sta^6;
//RX_DR为sta的第六位
sbit TX_DS =sta^5;
//TX_DS为sta的第五位
sbit MAX_RT =sta^4;
//MAX_RT为sta的第四位
/*延时函数
voidinerDelay_us(unsignedcharn) //延时,us级
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NRF24L01 C51 单片机 讲解