📄 rf2401_demo.lst
字号:
250 {
251 1 unsigned int i = 0;
252 1 unsigned char variablel;
253 1
254 1 //RF2401进入配置方式
255 1 CS = 0;
256 1 CE = 0;
257 1 PWR_UP = 1; //上电
258 1
259 1 for(i=0; i<20; i++)
260 1 {
261 2 Delay100();
262 2 }
263 1
264 1 CS = 1;
265 1 DATA = 0;
266 1 CLK1 = 0;
267 1
268 1 Delay100();//-----
269 1
270 1
271 1 /*
272 1 for(i=0; i<20; i++)
273 1 {
274 1 Delay100();
275 1 }
276 1 */
277 1 //PWR_DWN -> Configuration_mode Delay_3ms
278 1
279 1
280 1 for(i=0; i<18; i++)
281 1 {
282 2 variablel = nRF2401_Conf[i];
283 2 Spi_ByteWrite(variablel);
284 2 }
285 1
286 1 Delay100(); // configuration mode -> stand by mode ??
287 1
288 1 CS = 0; //CS置低使配置有效
289 1 Delay100();
290 1 }
291
292 void SetTxMode(void)
293 {
294 1 //设置为配置模式
295 1 PWR_UP = 1;
296 1 CE = 0;
297 1 CS = 1;
298 1
299 1 Delay100();
300 1
301 1 //配置寄存器0字节RXEN 设置为0:发送模式
302 1 DATA = 0;
303 1 CLK1=1;
C51 COMPILER V8.12 RF2401_DEMO 04/27/2008 19:15:43 PAGE 6
304 1 CLK1=0;
305 1
306 1 //设置为Activemodes(Tx)
307 1 CS=0;
308 1 CE=1;
309 1 Delay100();
310 1 }
311
312 void SetRxMode(void)
313 {
314 1 Delay100();
315 1 //设置为配置模式
316 1 PWR_UP = 1;
317 1 CE=0;
318 1 CS=1;
319 1 Delay100(); /////----
320 1 //配置寄存器0字节RXEN 设置为1:接收模式
321 1 DATA = 1;
322 1 CLK1 = 1;
323 1 CLK1 = 0;
324 1
325 1 //设置为Activemodes(Rx)
326 1 CS=0;
327 1 CE=1;
328 1 Delay100();
329 1 }
330
331
332
333 //接收方通道硬件地址
334 unsigned char TxAddress[]={0xcc,0xcc,0xcc,0xcc};
335
336 //nRF2401数据发送函数定义如下:
337 void RF2401_TxPacket(unsigned char TxBuf[])
338 {
339 1 int i;
340 1 unsigned char variable2;
341 1
342 1
343 1 CE=1;
344 1 Delay100();
345 1 for(i=0;i< (ADDR_W/8);i++) //写入接收地址(按字节对齐)
346 1 {
347 2 variable2=TxAddress[i];
348 2 Spi_ByteWrite(variable2);
349 2 }
350 1
351 1 for(i=0;i<(DATA1_W/8);i++) //写入需要发送的数据(按字节对齐)
352 1 {
353 2 variable2=TxBuf[i];
354 2 Spi_ByteWrite(variable2);
355 2 }
356 1
357 1 CE=0; //CE置低使发送有效
358 1
359 1 Delay100(); //时钟信号高电平保持
360 1 Delay100(); //时钟信号高电平保持
361 1 Delay100(); //时钟信号高电平保持
362 1 Delay100(); //时钟信号高电平保持
363 1
364 1 }
365
C51 COMPILER V8.12 RF2401_DEMO 04/27/2008 19:15:43 PAGE 7
366 /*******************************************/
367 //接收数据函数
368 //返回 0:没有数据接收
369 // 1:接收到数据
370 unsigned char RF2401_RxPacket(unsigned char *RxBuf)
371 {
372 1 unsigned int i;
373 1
374 1 DR1=1;
375 1
376 1 if(DR1)
377 1 {
378 2 for (i=0; i<DATA1_W/8; i++)
379 2 {
380 3 *RxBuf = Spi_ByteRead();
381 3 RxBuf++;
382 3 }
383 2 return 1;
384 2 }
385 1 return 0;
386 1 }
387
388
389 //*****************************************************************
390 //*****************************************************************
391 //*****************************************************************
392 unsigned char TxRxBuf[2];
393
394
395
396
397 void main(void)
398 {
399 1 unsigned int i = 0;
400 1 unsigned int j = 0;
401 1 unsigned int led0_count = 0;
402 1 unsigned int led1_count = 0;
403 1 unsigned int tem;
404 1
405 1 //
406 1 Config2401();
407 1 Delay100();
408 1
409 1 //TxRxBuf[0] = 1;
410 1 //TxRxBuf[DATA1_W/8 - 1] = 1;
411 1
412 1 SetTxMode(); // Set Tx Mode
413 1
414 1 // RF2401_TxPacket(TxRxBuf); // Transmit Tx buffer data
415 1
416 1 LED0 = 0;
417 1 LED1 = 0;
418 1
419 1 Delay(500); // delay for led light
420 1
421 1 LED0 = 1;
422 1 LED1 = 1; // led close
423 1
424 1 // TxRxBuf[0] = 0xff;
425 1 // TxRxBuf[DATA1_W/8 - 1] = 0xff;
426 1 TxRxBuf[1]=0;
427 1
C51 COMPILER V8.12 RF2401_DEMO 04/27/2008 19:15:43 PAGE 8
428 1 // SetRxMode(); // Set RF2401 in Rx mode
429 1 tem=355;
430 1
431 1 while(1)
432 1 {
433 2 if(tem>255)
434 2 {
435 3 TxRxBuf[0]=255;
436 3 TxRxBuf[1]=tem-255;
437 3 }
438 2 else
439 2 {
440 3 TxRxBuf[0]=tem;
441 3 TxRxBuf[1]=0;
442 3 }
443 2 RF2401_TxPacket(TxRxBuf); // Transmit Tx buffer data
444 2
445 2
446 2
447 2 //TxRxBuf[0]=0;
448 2 //TxRxBuf[DATA1_W/8 - 1]=0;
449 2
450 2 /*
451 2 //按键检测
452 2 if (KEY0==0)
453 2 {
454 2 TxRxBuf[0] = 1;
455 2 led0_count=15;
456 2 while( KEY0==0);
457 2 }
458 2 if (KEY1==0)
459 2 {
460 2 TxRxBuf[DATA1_W/8 - 1] = 1;
461 2 led1_count=15;
462 2 while( KEY1==0);
463 2 }
464 2 if (TxRxBuf[0]==1 || TxRxBuf[DATA1_W/8 - 1]==1)
465 2 {
466 2 SetTxMode(); //设置为发射模式
467 2 RF2401_TxPacket(TxRxBuf); //发送数据
468 2 SetRxMode();
469 2 }
470 2 TxRxBuf[0]=0;
471 2 TxRxBuf[DATA1_W/8 - 1]=0;
472 2
473 2
474 2 //LED显示延时
475 2 if (led0_count>0)
476 2 {
477 2 led0_count--;
478 2 LED0 = 0;
479 2 }
480 2 else LED0 = 1;
481 2 if (led1_count>0)
482 2 {
483 2 led1_count--;
484 2 LED1 = 0;
485 2 }
486 2 else LED1 = 1;
487 2 */
488 2
489 2
C51 COMPILER V8.12 RF2401_DEMO 04/27/2008 19:15:43 PAGE 9
490 2 }//end_while(1);
491 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 417 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 14
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 + -