📄 nrf24l01+̤
字号:
C51 COMPILER V7.00 NRF24L01 04/05/2010 10:30:48 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE NRF24L01
OBJECT MODULE PLACED IN nRF24L01.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nRF24L01.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include"nRF24L01.h"
2
3
4 uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0xb1,0xb2,0xb3,0xb4,0x01};//0x34,0x43,0x10,0x10,0x01}; // 路由节点
-地址
5 uchar code RX_ADDRESS1[TX_ADR_WIDTH] = {0xb0,0xb2,0xb3,0xb4,0x01};//写地址寄存器是先写低字节,因此后面几个
-字节相同
6 uchar code RX_ADDRESS2[1] = {0xb1};
7 uchar code RX_ADDRESS3[1] = {0xb2};
8 uchar code RX_ADDRESS4[1] = {0xb3};
9 uchar code RX_ADDRESS5[1] = {0xb4};
10 uchar RX_BUF[TX_PLOAD_WIDTH];
11 uchar TX_BUF[TX_PLOAD_WIDTH]=
12 {
13 0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08,
14 0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
15 0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,
16 0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,
17 };
18 uchar flag,status;
19 uchar DATA = 0x01;
20
21 uchar bdata sta;
22 sbit RX_DR = sta^6;
23 sbit TX_DS = sta^5;
24 sbit MAX_RT = sta^4;
25 /**************************************************/
26
27 /**************************************************
28 函数: init_io()
29
30 描述:
31 初始化IO
32 /**************************************************/
33 void init_io(void)
34 {
35 1 CE = 0; // 待机
36 1 CSN = 1; // SPI禁止
37 1 SCK = 0; // SPI时钟置低
38 1 IRQ = 1; // 中断复位
39 1 LED = 0x00; // 关闭指示灯
40 1 }
41 /**************************************************/
42
43 /**************************************************
44 函数:delay_ms()
45
46 描述:
47 延迟x毫秒
48 /**************************************************/
49 void delay_ms(uchar x)
50 {
51 1 uchar i, j;
52 1 i = 0;
53 1 for(i=0; i<x; i++)
C51 COMPILER V7.00 NRF24L01 04/05/2010 10:30:48 PAGE 2
54 1 {
55 2 j = 250;
56 2 while(--j);
57 2 j = 250;
58 2 while(--j);
59 2 }
60 1 }
61 /**************************************************/
62 /*延时函数
63 /******************************************************************************************/
64 void inerDelay_us(unsigned char n)
65 {
66 1 for(;n>0;n--)
67 1 _nop_();
68 1 }
69 /**************************************************
70 函数:SPI_RW()
71
72 描述:
73 根据SPI协议,写一字节数据到nRF24L01,同时从nRF24L01
74 读出一字节
75 /**************************************************/
76 uchar SPI_RW(uchar byte)
77 {
78 1 uchar i;
79 1 for(i=0; i<8; i++) // 循环8次
80 1 {
81 2 MOSI = (byte & 0x80); // byte最高位输出到MOSI
82 2 byte <<= 1; // 低一位移位到最高位
83 2 SCK = 1; // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
84 2 byte |= MISO; // 读MISO到byte最低位
85 2 SCK = 0; // SCK置低
86 2 }
87 1 return(byte); // 返回读出的一字节
88 1 }
89 /**************************************************/
90
91 /**************************************************
92 函数:SPI_RW_Reg()
93
94 描述:
95 写数据value到reg寄存器
96 /**************************************************/
97 uchar SPI_RW_Reg(uchar reg, uchar value)
98 {
99 1 uchar status;
100 1 CSN = 0; // CSN置低,开始传输数据
101 1 status = SPI_RW(reg); // 选择寄存器,同时返回状态字
102 1 SPI_RW(value); // 然后写数据到该寄存器
103 1 CSN = 1; // CSN拉高,结束数据传输
104 1 return(status); // 返回状态寄存器
105 1 }
106 /**************************************************/
107
108 /**************************************************
109 函数:SPI_Read()
110
111 描述:
112 从reg寄存器读一字节
113 /**************************************************/
114 uchar SPI_Read(uchar reg)
115 {
C51 COMPILER V7.00 NRF24L01 04/05/2010 10:30:48 PAGE 3
116 1 uchar reg_val;
117 1 CSN = 0; // CSN置低,开始传输数据
118 1 SPI_RW(reg); // 选择寄存器
119 1 reg_val = SPI_RW(0); // 然后从该寄存器读数据
120 1 CSN = 1; // CSN拉高,结束数据传输
121 1 return(reg_val); // 返回寄存器数据
122 1 }
123 /**************************************************/
124
125 /**************************************************
126 函数:SPI_Read_Buf()
127
128 描述:
129 从reg寄存器读出bytes个字节,通常用来读取接收通道
130 数据或接收/发送地址
131 /**************************************************/
132 uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
133 {
134 1 uchar status, i;
135 1 CSN = 0; // CSN置低,开始传输数据
136 1 status = SPI_RW(reg); // 选择寄存器,同时返回状态字
137 1 for(i=0; i<bytes; i++)
138 1 pBuf[i] = SPI_RW(0); // 逐个字节从nRF24L01读出
139 1 CSN = 1; // CSN拉高,结束数据传输
140 1 return(status); // 返回状态寄存器
141 1 }
142 /**************************************************/
143
144 /**************************************************
145 函数:SPI_Write_Buf()
146
147 描述:
148 把pBuf缓存中的数据写入到nRF24L01,通常用来写入发
149 射通道数据或接收/发送地址
150 /**************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -