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

📄 nrf905.lst

📁 能较好的实现无线通信 用点阵来实现 距离有100米 程序已通过调试
💻 LST
📖 第 1 页 / 共 2 页
字号:
 203   3                      {
 204   4                              //Model_0ne();
 205   4                              TxBuf[0]=0x11;
 206   4                              SetTxMode();                            // Set Tx Mode
 207   4                          TxPacket();                         // Transmit Tx buffer data
 208   4                              TxBuf[0] = '\0';
 209   4                              SetRxMode();
 210   4                      }
 211   3                      while(Key1==0);
 212   3              }                                                                                                           
 213   2      
 214   2              if (Key2==0)  //温度键
 215   2              {
 216   3                      delays();
 217   3                      if (Key2==0)
 218   3                      {
 219   4                              //Model_Two();
 220   4                              TxBuf[0]=0x02;
 221   4                              SetTxMode();                            // Set Tx Mode
 222   4                          TxPacket();                         // Transmit Tx buffer data
 223   4                              TxBuf[0] = '\0';
 224   4                              SetRxMode();
 225   4                      }
 226   3                      while(Key2==0);
 227   3              }
 228   2      
 229   2      
 230   2               //=====================等待NRF905接收
 231   2                 if (DR)
 232   2                 {                    // If recive data ready... 
 233   3                              RxPacket();      // ... recive data
 234   3                              //print_Str(RxBuf);
 235   3      
 236   3                              DisplayListChar_code(0,0,displayLCD);
 237   3                              DisplayOneChar(0,1, RxBuf[0] +'0');
 238   3                              //print_Char(RxBuf[0]+'0');
 239   3                              //print_Char(RxBuf[1]+'0');
 240   3      
 241   3                              DisplayOneChar(1,1, RxBuf[1] +'0');
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 19:08:31 PAGE 5   

 242   3                              DisplayOneChar(2,1, '.');
 243   3                              DisplayOneChar(3,1, RxBuf[2] +'0');
 244   3                              DisplayOneChar(4,1, RxBuf[3] +'0');
 245   3                                                                 
 246   3                              RxBuf[0]='\0';
 247   3                      }
 248   2      
 249   2                                      
 250   2      
 251   2      
 252   2              if (RxWriteIndex>0)
 253   2              {       
 254   3      
 255   3                      print_Str(TxBuf);               
 256   3                      
 257   3                      SetTxMode();                            // Set Tx Mode
 258   3                      TxPacket();                                     // Transmit Tx buffer data
 259   3                      TxBuf[0] = '\0';
 260   3                      for (ci=0; ci <32; ++ci)
 261   3                      {
 262   4                               TxBuf[ci] = '\0';
 263   4                      }
 264   3      
 265   3                      SetRxMode();                            // Set nRF905 in Rx mode
 266   3                      RxWriteIndex = 0;
 267   3                      
 268   3              }                       
 269   2      
 270   2      }
 271   1      
 272   1      }
 273          /*******************************************************************************************/
 274          /*******************************************************************************************/
 275          //function Config905();
 276          /*******************************************************************************************/
 277          void Config905(void)
 278          {
 279   1              uchar i;                                        
 280   1              CSN=0;                                          // Spi enable for write a spi command
 281   1              SpiWrite(WC);                           // Write config command写放配置命令
 282   1              for (i=0;i<RxTxConf.n;i++)      // Write configration words  写放配置字
 283   1              {
 284   2                      SpiWrite(RxTxConf.buf[i]);
 285   2              }
 286   1              CSN=1;                                          // Disable Spi
 287   1      }
 288          /*******************************************************************************************/
 289          //function SpiWrite();
 290          /*******************************************************************************************/
 291          void SpiWrite(uchar  byte)
 292          {
 293   1              uchar i;        
 294   1              DATA_BUF=byte;                          // Put function's parameter into a bdata variable               
 295   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 296   1              {       
 297   2                      
 298   2                      if (flag)                               // Put DATA_BUF.7 on data line
 299   2                              MOSI=1;
 300   2                      else
 301   2                              MOSI=0;
 302   2                      SCK=1;                                  // Set clock line high
 303   2                      DATA_BUF=DATA_BUF<<1;   // Shift DATA_BUF
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 19:08:31 PAGE 6   

 304   2                      SCK=0;                                  // Set clock line low 
 305   2              }       
 306   1      }
 307          /*******************************************************************************************/
 308          //function SpiRead();
 309          /*******************************************************************************************/
 310          uchar SpiRead(void)
 311          {
 312   1              uchar i;        
 313   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 314   1              {       
 315   2                      DATA_BUF=DATA_BUF<<1;   // Right shift DATA_BUF
 316   2                      SCK=1;                                  // Set clock line high
 317   2                      if (MISO)
 318   2                              flag1=1;                        // Read data
 319   2                      else
 320   2                              flag1=0;
 321   2                                                              
 322   2                      
 323   2                      SCK=0;                                  // Set clock line low
 324   2              }
 325   1              return DATA_BUF;                        // Return function parameter
 326   1      }
 327          /*******************************************************************************************/
 328          //function TxPacket();
 329          /*******************************************************************************************/
 330          void TxPacket(void)
 331          {
 332   1              uchar i;
 333   1              //Config905();                          
 334   1              CSN=0;                                          // Spi enable for write a spi command   
 335   1              SpiWrite(WTP);                          // Write payload command
 336   1              for (i=0;i<32;i++)
 337   1              {
 338   2                      SpiWrite(TxBuf[i]);             // Write 32 bytes Tx data
 339   2              }
 340   1              CSN=1;                                          // Spi disable                                          
 341   1              Delay(1);
 342   1              CSN=0;                                          // Spi enable for write a spi command   
 343   1              SpiWrite(WTA);                          // Write address command
 344   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 345   1              {
 346   2                      SpiWrite(RxTxConf.buf[i+5]);
 347   2              }       
 348   1              CSN=1;                                          // Spi disable
 349   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 350   1              Delay(1);                                       // while (DR!=1);
 351   1              TRX_CE=0;                                       // Set TRX_CE low
 352   1      }
 353          /*******************************************************************************************/
 354          //function RxPacket();
 355          /*******************************************************************************************/
 356          void RxPacket(void)
 357          {
 358   1              uchar i;        
 359   1              TRX_CE=0;                                       // Set nRF905 in standby mode   
 360   1              CSN=0;                                          // Spi enable for write a spi command
 361   1              SpiWrite(RRP);                          // Read payload command 
 362   1              for (i=0;i<32;i++)
 363   1              {
 364   2                      RxBuf[i]=SpiRead();             // Read data and save to buffer         
 365   2              }
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 19:08:31 PAGE 7   

 366   1              CSN=1;                                          // Disable spi
 367   1              while(DR||AM);  
 368   1              //P0=   RxBuf[0];                               // Buffer[0] output from P0 port...
 369   1              TRX_CE=1;
 370   1                                                      
 371   1      }
 372          /*******************************************************************************************/
 373          //function SetTxMode();
 374          /*******************************************************************************************/
 375          void SetTxMode(void)                            
 376          {       
 377   1              TX_EN=1;
 378   1              TRX_CE=0;
 379   1              Delay(1);                                       // delay for mode change(>=650us)
 380   1      }                               
 381          /*******************************************************************************************/
 382          //function SetRxMode();
 383          /*******************************************************************************************/
 384          void SetRxMode(void)
 385          {
 386   1              TX_EN=0;
 387   1              TRX_CE=1;
 388   1              Delay(1);                                       // delay for mode change(>=650us)                               
 389   1      }
 390          
 391          void delays(void)
 392          {
 393   1              uchar i;
 394   1      
 395   1              for (i=1800; i>0; --i);
 396   1      }
 397          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    638    ----
   CONSTANT SIZE    =     28    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     71       2
   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 + -