📄 nrf905.lst
字号:
145 3 LED2 = 1;
146 3 }
147 2
148 2 //=====================等待NRF905接收
149 2 if (DR) // If recive data ready...
150 2 RxPacket(); // ... recive data
151 2
152 2 }
153 1
154 1 }
155 /*******************************************************************************************/
156 /*******************************************************************************************/
157 //function Config905();
158 /*******************************************************************************************/
159 void Config905(void)
160 {
161 1 uchar i;
162 1 CSN=0; // Spi enable for write a spi command
163 1 SpiWrite(WC); // Write config command写放配置命令
164 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
165 1 {
166 2 SpiWrite(RxTxConf.buf[i]);
167 2 }
168 1 CSN=1; // Disable Spi
169 1 }
170 /*******************************************************************************************/
171 //function SpiWrite();
172 /*******************************************************************************************/
173 void SpiWrite(uchar byte)
174 {
175 1 uchar i;
176 1 DATA_BUF=byte; // Put function's parameter into a bdata variable
177 1 for (i=0;i<8;i++) // Setup byte circulation bits
178 1 {
179 2
C51 COMPILER V8.02 NRF905 01/02/2003 09:36:17 PAGE 4
180 2 if (flag) // Put DATA_BUF.7 on data line
181 2 MOSI=1;
182 2 else
183 2 MOSI=0;
184 2 SCK=1; // Set clock line high
185 2 DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
186 2 SCK=0; // Set clock line low
187 2 }
188 1 }
189 /*******************************************************************************************/
190 //function SpiRead();
191 /*******************************************************************************************/
192 uchar SpiRead(void)
193 {
194 1 uchar i;
195 1 for (i=0;i<8;i++) // Setup byte circulation bits
196 1 {
197 2 DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
198 2 SCK=1; // Set clock line high
199 2 if (MISO)
200 2 flag1=1; // Read data
201 2 else
202 2 flag1=0;
203 2
204 2
205 2 SCK=0; // Set clock line low
206 2 }
207 1 return DATA_BUF; // Return function parameter
208 1 }
209 /*******************************************************************************************/
210 //function TxPacket();
211 /*******************************************************************************************/
212 void TxPacket(void)
213 {
214 1 uchar i;
215 1 //Config905();
216 1 CSN=0; // Spi enable for write a spi command
217 1 SpiWrite(WTP); // Write payload command
218 1 for (i=0;i<32;i++)
219 1 {
220 2 SpiWrite(TxBuf[i]); // Write 32 bytes Tx data
221 2 }
222 1 CSN=1; // Spi disable
223 1 Delay(1);
224 1 CSN=0; // Spi enable for write a spi command
225 1 SpiWrite(WTA); // Write address command
226 1 for (i=0;i<4;i++) // Write 4 bytes address
227 1 {
228 2 SpiWrite(RxTxConf.buf[i+5]);
229 2 }
230 1 CSN=1; // Spi disable
231 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
232 1 Delay(1); // while (DR!=1);
233 1 TRX_CE=0; // Set TRX_CE low
234 1 }
235 /*******************************************************************************************/
236 //function RxPacket();
237 /*******************************************************************************************/
238 void RxPacket(void)
239 {
240 1 uchar i;
241 1 TRX_CE=0; // Set nRF905 in standby mode
C51 COMPILER V8.02 NRF905 01/02/2003 09:36:17 PAGE 5
242 1 CSN=0; // Spi enable for write a spi command
243 1 SpiWrite(RRP); // Read payload command
244 1 for (i=0;i<32;i++)
245 1 {
246 2 RxBuf[i]=SpiRead(); // Read data and save to buffer
247 2 }
248 1 CSN=1; // Disable spi
249 1 while(DR||AM);
250 1 // P0= RxBuf[0]; // Buffer[0] output from P0 port...
251 1 TRX_CE=1;
252 1 //xx=(RxBuf[0]>>4)&0x0f;
253 1 //TxData(xx);
254 1 //=====================
255 1 if(RxBuf[0] == 1) LED1 = 0 ;
256 1 if(RxBuf[1] == 1) LED2 = 0 ;
257 1
258 1 Delay(500); // ...light led
259 1 // P0=0xff; // Close led
260 1 LED1 = 1 ;
261 1 LED2 = 1 ;
262 1 }
263 /*******************************************************************************************/
264 //function SetTxMode();
265 /*******************************************************************************************/
266 void SetTxMode(void)
267 {
268 1 TX_EN=1;
269 1 TRX_CE=0;
270 1 Delay(1); // delay for mode change(>=650us)
271 1 }
272 /*******************************************************************************************/
273 //function SetRxMode();
274 /*******************************************************************************************/
275 void SetRxMode(void)
276 {
277 1 TX_EN=0;
278 1 TRX_CE=1;
279 1 Delay(1); // delay for mode change(>=650us)
280 1 }
281
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 374 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 69 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -