?? 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 + -