📄 nrf2401_rec.lst
字号:
C51 COMPILER V6.12 NRF2401_REC 04/27/2009 10:34:35 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE NRF2401_REC
OBJECT MODULE PLACED IN .\nrf2401_rec.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\nrf2401_rec.c DEBUG OBJECTEXTEND
stmt level source
1 #include "reg51.h"
2
3 sbit PWR = P2^7;
4 sbit CE = P2^6;
5 sbit CS = P2^5;
6 sbit DR1 = P2^4;
7 sbit CLK1 = P2^3;
8 sbit DATA = P2^2;
9
10 const unsigned int InitData[15] = // nRF2401 控制字 15 Byte
11 {
12 0x08, // 通道二接收数据宽度(bit)
13 0x08, // 通道一接收数据宽度(bit)
14 0x00, // 通道二地址(A24)
15 0x00, // 通道二地址(A23)
16 0x00, // 通道二地址(A22)
17 0x00, // 通道二地址(A21)
18 0x01, // 通道二地址(A20)
19 0x00, // 通道一地址(A14)
20 0x00, // 通道一地址(A13)
21 0x00, // 通道一地址(A12)
22 0x00, // 通道一地址(A11)
23 0x01, // 通道一地址(A10)
24 0xA3, // b7~b2:接收地址宽度,和发送端一致,不超过40bit;
25 // b1~b0:CRC模式选择(01-8bit;11-16bit;00/10-no)
26 0x4f, // b15:接收通道选择(0-通道1;1-通道1和2)
27 // b14:收发模式(0-Direct模式,1-ShockBurst模式)
28 // b13:波特率选择(0-250Kbps;1-1Mbps)
29 // b12~b10:晶振选择(000-4M;001-8M;010-12M;011-16M)
30 // b9~b8:发射功率(11-0db)
31 0x05 // b7~b1:发射频率配置
32 // b0:收发控制(0-发送;1-接收)
33 };
34
35 unsigned int AddrBuffer[5]; // 地址寄存器
36 unsigned int AddrByteCnt; // 地址Byte数
37
38 void nRF2401_ON(); // nRF2401A上电
39 //void nRF2401_OFF(); // nRF2401A掉电
40 void nRF2401_Initial(); // nRF2401A初始化
41 void nRF2401_WriteCommand(); // nRF2401A写命令字
42 void nRF2401_WriteByte(unsigned int uiData); // 向nRF2401A写入一个Byte
43 //void nRF2401_WriteWord(unsigned int uiData); // 向nRF2401A写入一个Word
44 //void nRF2401_Mode(unsigned int uiMode); // 切换nRF2401A收/发模式
45 //void nRF2401_SendByte(unsigned int TxData);
46 // 将字节数据写入nRF2401A
47 //void nRF2401_SendWord(unsigned int TxData);
48 // 将字数据写入nRF2401A
49 //void nRF2401_SendBuffer_Byte(unsigned int TxData[],unsigned int DataByte);
50 // 将数组数据写入nRF2401A
51 //void nRF2401_SendBuffer_Word(unsigned int TxData[],unsigned int DataWord);
52 // 将数组数据写入nRF2401A
53 unsigned int nRF2401_RxStatus(); // 判断nRF2401A是否有数据接收
54 void nRF2401_ReceiveByte(unsigned int RxData[]);// 以Byte格式从nRF2401A读数据
55 //void nRF2401_ReceiveWord(unsigned int RxData[]);// 以Word格式从nRF2401A读数据
C51 COMPILER V6.12 NRF2401_REC 04/27/2009 10:34:35 PAGE 2
56 //void nRF2401_SetAddress(unsigned int Address[],unsigned int AddrByte);
57 // 设置目标nRF2401A的地址
58 void Delay_Us(unsigned int TimeCnt); // 延时(uS)
59
60 //=============================================================
61 // 语法格式: void nRF2401_Initial(void)
62 // 实现功能: nRF 初始化
63 // 参数: 无
64 // 返回值: 无
65 //=============================================================
66 //#if
67 void nRF2401_Initial(void)
68 {
69 1 /* *P_SystemClock = 0x98; // 设置系统时钟为49MHz
70 1 *P_IOB_Attrib |= (CS+DATA+PWR+CLK1+CE+DR1);
71 1 *P_IOB_Dir |= (CS+DATA+PWR+CLK1+CE);
72 1 *P_IOB_Dir&=~DR1;
73 1 *P_IOB_Buffer &=~(CS+DATA+CLK1+CE+DR1); // 初始化IO端口 */
74 1
75 1 nRF2401_ON();
76 1 Delay_Us(3000);
77 1 nRF2401_WriteCommand(); // 向nRF2401A写命令字
78 1 Delay_Us(300);
79 1 }
80
81 //=============================================================
82 // 语法格式: void nRF2401_ON(void)
83 // 实现功能: nRF 上电
84 // 参数: 无
85 // 返回值: 无
86 //=============================================================
87 void nRF2401_ON(void)
88 {
89 1 /**P_IOB_Buffer |= PWR;*/
90 1 PWR = 1;
91 1 }
92
93 //=============================================================
94 // 语法格式: void nRF2401_OFF(void)
95 // 实现功能: nRF 掉电
96 // 参数: 无
97 // 返回值: 无
98 //=============================================================
99 //void nRF2401_OFF(void)
100 //{
101 // PWR = 0; //*P_IOB_Buffer &= ~PWR;
102 //}
103
104 //=============================================================
105 // 语法格式: void nRF2401_WriteCommand(void)
106 // 实现功能: nRF 写命令字
107 // 参数: 无
108 // 返回值: 无
109 //=============================================================
110 void nRF2401_WriteCommand(void)
111 {
112 1 unsigned int i;
113 1 CE= 0; //*P_IOB_Buffer &= ~CE;
114 1 CS = 1; //*P_IOB_Buffer |= CS;
115 1 //Delay_Us(1);
116 1 for(i=0; i<15; i++)
117 1 {
C51 COMPILER V6.12 NRF2401_REC 04/27/2009 10:34:35 PAGE 3
118 2 nRF2401_WriteByte(InitData[i]);
119 2 }
120 1 CS = 0; //*P_IOB_Buffer &= ~CS;
121 1 CE = 1; //*P_IOB_Buffer |= CE;
122 1 }
123
124 //=============================================================
125 // 语法格式: void nRF2401_Mode(unsigned int uiMode)
126 // 实现功能: 设置nRF2401A的工作方式
127 // 参数: uiMode:0--接收;1--发送
128 // 返回值: 无
129 //=============================================================
130 //void nRF2401_Mode(unsigned int uiMode)
131 //{
132 // CE = 0; //*P_IOB_Buffer &= ~CE;
133 // CS = 1; //*P_IOB_Buffer |= CS;
134 // if(uiMode == 0)
135 // nRF2401_WriteByte(InitData[14] | 0x01); // 接收
136 // else
137 // nRF2401_WriteByte(InitData[14] & 0xFE); // 发送
138 // CS = 0; //*P_IOB_Buffer &= ~CS;
139 // CE = 1; //*P_IOB_Buffer |= CE;
140 //}
141
142 //=============================================================
143 // 语法格式: void nRF2401_SetAddress(unsigned int *Address,unsigned int AddrByte)
144 // 实现功能: 设置目标nRF2401A的地址
145 // 参数: unsigned int *Address:地址数组
146 // unsigned int AddrByte:数组的长度
147 // 返回值: 无
148 //=============================================================
149 //void nRF2401_SetAddress(unsigned int *Address,unsigned int AddrByte)
150 //{
151 // unsigned int i;
152 // for(i=0; i<AddrByte; i++)
153 // {
154 // AddrBuffer[i] = Address[i];
155 // }
156 // AddrByteCnt = AddrByte;
157 //}
158
159 //=============================================================
160 // 语法格式: void nRF2401_WriteByte(unsigned int uiData)
161 // 实现功能: 向nRF2401A写入一个字节数据
162 // 参数: unsigned int uiData: 待写入数据
163 // 返回值: 无
164 //=============================================================
165 void nRF2401_WriteByte(unsigned int uiData)
166 {
167 1 unsigned int i;
168 1 for(i=0; i<8; i++)
169 1 {
170 2 CLK1 = 0; //*P_IOB_Buffer &= ~CLK1;
171 2 if(uiData&0x80)
172 2 DATA = 1; //*P_IOB_Buffer |= DATA;
173 2 else
174 2 DATA = 0; //*P_IOB_Buffer &= ~DATA;
175 2 //Delay_Us(1);
176 2 CLK1 = 1; //*P_IOB_Buffer |= CLK1;
177 2 //Delay_Us(1);
178 2 CLK1 = 0; //*P_IOB_Buffer &= ~CLK1;
179 2 uiData = uiData<<1;
C51 COMPILER V6.12 NRF2401_REC 04/27/2009 10:34:35 PAGE 4
180 2 }
181 1 }
182
183 //=============================================================
184 // 语法格式: void nRF2401_WriteWord(unsigned int uiData)
185 // 实现功能: 向nRF2401A写入一个字数据
186 // 参数: unsigned int uiData: 待写入数据
187 // 返回值: 无
188 //=============================================================
189 /*void nRF2401_WriteWord(unsigned int uiData)
190 {
191 unsigned int i;
192 for(i=0; i<16; i++)
193 {
194 CLK1 = 0; //*P_IOB_Buffer &= ~CLK1;
195 if(uiData&0x8000)
196 DATA = 1; //*P_IOB_Buffer |= DATA;
197 else
198 DATA = 0; //*P_IOB_Buffer &= ~DATA;
199 //Delay_Us(1);
200 CLK1 = 1; //*P_IOB_Buffer |= CLK1;
201 Delay_Us(1);
202 CLK1 = 0; //*P_IOB_Buffer &=~CLK1;
203 uiData = uiData<<1;
204 }
205 }
206 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -