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

📄 code.lst

📁 nRF905无线FSK芯片在51单片机上工作的代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 200   1      {
 201   2                
 202   2               //=====================等待NRF905接收
 203   2              
 204   2          if (r_flag && DR)   // Ifr recive data ready...
 205   2         {//Delay(500); 
 206   3         //if(DR)
 207   3         //retest=1;
 208   3         retest=1;
 209   3         r_flag=0;
 210   3         retrieving_flag=1;
 211   3         RxPacket();   // ... recive data
 212   3              fir_dis = RxBuf[1]; //jsq++;     
 213   3              sec_dis = RxBuf[2];
 214   3              thi_dis = RxBuf[3];
 215   3              for_dis = jsq;if (jsq<15)jsq++; else jsq=0;
 216   3              
 217   3      /*      Delay(10000);
 218   3              Delay(10000);
 219   3              Delay(10000);
 220   3              retest=0;
 221   3              Resend(); */
 222   3                       
 223   3      //      Config905();
 224   3              SetRxMode();
 225   3      //      Delay(1000);
 226   3              retrieving_flag=0;
 227   3               r_flag=1;
 228   3              
 229   3              }  
 230   2         
 231   2         
 232   2         if(ready2send||time_up)
 233   2              {
 234   3                      SetTxMode(); 
 235   3              
 236   3                      Delay(100);
 237   3                      
 238   3              TxPacket();   
 239   3                      SetRxMode();
 240   3                      ready2send=0;
C51 COMPILER V7.50   CODE                                                                  06/25/2004 19:21:10 PAGE 5   

 241   3                      time_up=0;
 242   3              }  //=====================
 243   2      
 244   2      
 245   2      }
 246   1      }
 247          
 248          /*******************************************************************************************/
 249          
 250          /*******************************************************************************************/
 251          //function Config905();
 252          /*******************************************************************************************/
 253          void Config905(void)
 254          {
 255   1       uchar i,flag=1;    
 256   1       CSN=0;  PB8255=PB;    // Spi enable for write a spi command
 257   1       SpiWrite(WC);    // Write config command写放配置命令
 258   1       for (i=0;i<RxTxConf.n;i++) // Write configration words  写放配置字
 259   1       {
 260   2        SpiWrite(RxTxConf.buf[i]);
 261   2       }
 262   1       CSN=1;  PB8255=PB;    // Disable Spi
 263   1      
 264   1      
 265   1      
 266   1       CSN=0;PB8255=PB;
 267   1              SpiWrite(RC);
 268   1        for (i=0;i<RxTxConf.n;i++) // Write configration words  写放配置字
 269   1       {
 270   2        temp.buf[i]=SpiRead();
 271   2       }
 272   1       CSN=1; PB8255=PB;
 273   1       for(i=0;i<RxTxConf.n;i++)
 274   1       {
 275   2              if ( temp.buf[i] == RxTxConf.buf[i]) flag++;
 276   2       }
 277   1       fir_dis=flag;
 278   1       if(flag!=11)
 279   1       Config905();
 280   1      }
 281          
 282          /*******************************************************************************************/
 283          void FixConfig(void)    //fix the configuration command if it goes wrong
 284          {
 285   1       uchar i,flag=1;
 286   1       TRX_CE=0;PB8255=PB;Delay(100);
 287   1       CSN=0; PB8255=PB;
 288   1      SpiWrite(RC);
 289   1        for (i=0;i<RxTxConf.n;i++) // Write configration words  写放配置字
 290   1       {
 291   2        temp.buf[i]=SpiRead();
 292   2       }
 293   1       CSN=1; PB8255=PB;
 294   1       for(i=0;i<RxTxConf.n;i++)
 295   1       {
 296   2              if ( temp.buf[i] == RxTxConf.buf[i]) flag++;
 297   2       }
 298   1       if (flag!=(RxTxConf.n+1))
 299   1       {
 300   2       for_dis=10;
 301   2      
 302   2              TRX_CE=0;PB8255=PB;Delay(100);
C51 COMPILER V7.50   CODE                                                                  06/25/2004 19:21:10 PAGE 6   

 303   2      
 304   2              Config905();
 305   2      
 306   2      
 307   2       }
 308   1      }
 309          /*******************************************************************************************/
 310          
 311          //function SpiWrite();
 312          
 313          /*******************************************************************************************/
 314          //function TxPacket();
 315          /*******************************************************************************************/
 316          void TxPacket(void)
 317          {
 318   1       uchar i;
 319   1       TRX_CE=0;
 320   1       //Config905();    
 321   1       CSN=0;    PB8255=PB;  // Spi enable for write a spi command 
 322   1       SpiWrite(WTP);    // Write payload command
 323   1       for (i=0;i<SB;i++)
 324   1       {
 325   2        SpiWrite(TxBuf[i]);  // Write 32 bytes Tx data
 326   2       }
 327   1       CSN=1;    PB8255=PB;  // Spi disable      
 328   1       Delay(1);
 329   1       CSN=0;   PB8255=PB;   // Spi enable for write a spi command 
 330   1       SpiWrite(WTA);    // Write address command
 331   1       for (i=0;i<(RxTxConf.n-6);i++)   // Write 4 bytes address
 332   1       {
 333   2        SpiWrite(RxTxConf.buf[i+5]);
 334   2       } 
 335   1       CSN=1;      // Spi disable
 336   1       TRX_CE=1;  PB8255=PB;   // Set TRX_CE high,start Tx data transmission
 337   1       Delay(1000);     // while (DR!=1);
 338   1       TRX_CE=0;  PB8255=PB;   // Set TRX_CE low
 339   1      }
 340          /*******************************************************************************************/
 341          //function RxPacket();
 342          /*******************************************************************************************/
 343          void RxPacket(void)
 344          {
 345   1       uchar i; 
 346   1       TRX_CE=0;  PB8255=PB;    // Set nRF905 in standby mode 
 347   1       Delay(100);
 348   1       CSN=0;   PB8255=PB;   // Spi enable for write a spi command
 349   1       SpiWrite(RRP);    // Read payload command 
 350   1       for (i=0;i<SB;i++)
 351   1       {
 352   2        RxBuf[i]=SpiRead();  // Read data and save to buffer  
 353   2       }
 354   1       CSN=1;   PB8255=PB;   // Disable spi
 355   1       while(DR||AM) _nop_(); 
 356   1       //P0= RxBuf[0];    // Buffer[0] output from P0 port...
 357   1       TRX_CE=1;       PB8255=PB;
 358   1      /* if (!(RxBuf[0]==0&&RxBuf[1]==0)  )
 359   1        for (i=0;i<SB;i++)
 360   1       {
 361   1        TmpBuf[i]=RxBuf[i];  // Read data and save to buffer  
 362   1       }       */
 363   1       //xx=(RxBuf[0]>>4)&0x0f;
 364   1       for (i=0;i<SB;i++) TxData(RxBuf[i]);
C51 COMPILER V7.50   CODE                                                                  06/25/2004 19:21:10 PAGE 7   

 365   1         
 366   1      }
 367          /*******************************************************************************************/
 368          //function SetTxMode();
 369          /*******************************************************************************************/
 370          void SetTxMode(void)    
 371          { 
 372   1       TX_EN=1;
 373   1       TRX_CE=0; PB8255=PB;
 374   1       Delay(100);      // delay for mode change(>=650us)
 375   1       r_flag=0;
 376   1      }    
 377          /*******************************************************************************************/
 378          //function SetRxMode();
 379          /*******************************************************************************************/
 380          void SetRxMode(void)
 381          {
 382   1      
 383   1      TRX_CE=0;  PB8255=PB;
 384   1      Delay(100);
 385   1      Config905();
 386   1      //FixConfig();
 387   1      Delay(100);
 388   1       TX_EN=0;
 389   1       TRX_CE=1;      PB8255=PB;
 390   1       Delay(100);      // delay for mode change(>=650us)  
 391   1        r_flag=1;  
 392   1       
 393   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1411    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =     96    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     34       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -