⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rf2401_demo.lst

📁 无线收发程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -