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

📄 code.lst

📁 nRF905无线FSK芯片在51单片机上工作的代码
💻 LST
📖 第 1 页 / 共 2 页
字号:

 180   1      {
 181   2                retest=1;
 182   2               //=====================等待NRF905接收
 183   2              
 184   2          if (r_flag && DR)   // Ifr recive data ready...
 185   2         {//Delay(500); 
 186   3         //if(DR)
 187   3         //retest=1;
 188   3         r_flag=0;
 189   3         retrieving_flag=1;
 190   3         RxPacket();   // ... recive data
 191   3              fir_dis = RxBuf[1]; //jsq++;     
 192   3              sec_dis = RxBuf[2];
 193   3              thi_dis = RxBuf[3];
 194   3              for_dis = jsq;if (jsq<15)jsq++; else jsq=0;
 195   3      
 196   3      //      Config905();
 197   3              SetRxMode();
 198   3              Delay(1000);
 199   3              retrieving_flag=0;
 200   3               r_flag=1;
 201   3              
 202   3              }  
 203   2               retest=0;
 204   2        //=====================
 205   2      
 206   2      
 207   2      }
 208   1      }
 209          
 210          /*******************************************************************************************/
 211          /*******************************************************************************************/
 212          //function Config905();
 213          /*******************************************************************************************/
 214          void Config905(void)
 215          {
 216   1       uchar i,flag=1;    
 217   1       CSN=0;  PB8255=PB;    // Spi enable for write a spi command
 218   1       SpiWrite(WC);    // Write config command写放配置命令
 219   1       for (i=0;i<RxTxConf.n;i++) // Write configration words  写放配置字
 220   1       {
 221   2        SpiWrite(RxTxConf.buf[i]);
 222   2       }
 223   1       CSN=1;  PB8255=PB;    // Disable Spi
 224   1      
 225   1      
 226   1      
 227   1       CSN=0;PB8255=PB;
 228   1              SpiWrite(RC);
 229   1        for (i=0;i<RxTxConf.n;i++) // Write configration words  写放配置字
 230   1       {
 231   2        temp.buf[i]=SpiRead();
 232   2       }
 233   1       CSN=1; PB8255=PB;
 234   1       for(i=0;i<RxTxConf.n;i++)
 235   1       {
 236   2              if ( temp.buf[i] == RxTxConf.buf[i]) flag++;
 237   2       }
 238   1       fir_dis=flag;
 239   1      }
 240          
 241          /*******************************************************************************************/
C51 COMPILER V7.50   CODE                                                                  06/25/2007 15:17:12 PAGE 5   

 242          void FixConfig(void)    //fix the configuration command if it goes wrong
 243          {
 244   1       uchar i,flag=1;
 245   1       TRX_CE=0;PB8255=PB;Delay(100);
 246   1       CSN=0; PB8255=PB;
 247   1      SpiWrite(RC);
 248   1        for (i=0;i<RxTxConf.n;i++) // Write configration words  写放配置字
 249   1       {
 250   2        temp.buf[i]=SpiRead();
 251   2       }
 252   1       CSN=1; PB8255=PB;
 253   1       for(i=0;i<RxTxConf.n;i++)
 254   1       {
 255   2              if ( temp.buf[i] == RxTxConf.buf[i]) flag++;
 256   2       }
 257   1       if (flag!=(RxTxConf.n+1))
 258   1       {
 259   2       for_dis=10;
 260   2      
 261   2              TRX_CE=0;PB8255=PB;Delay(100);
 262   2      
 263   2              Config905();
 264   2      
 265   2      
 266   2       }
 267   1      }
 268          /*******************************************************************************************/
 269          
 270          //function SpiWrite();
 271          
 272          /*******************************************************************************************/
 273          //function TxPacket();
 274          /*******************************************************************************************/
 275          void TxPacket(void)
 276          {
 277   1       uchar i;
 278   1       TRX_CE=0;
 279   1       //Config905();    
 280   1       CSN=0;    PB8255=PB;  // Spi enable for write a spi command 
 281   1       SpiWrite(WTP);    // Write payload command
 282   1       for (i=0;i<SB;i++)
 283   1       {
 284   2        SpiWrite(TxBuf[i]);  // Write 32 bytes Tx data
 285   2       }
 286   1       CSN=1;    PB8255=PB;  // Spi disable      
 287   1       Delay(1);
 288   1       CSN=0;   PB8255=PB;   // Spi enable for write a spi command 
 289   1       SpiWrite(WTA);    // Write address command
 290   1       for (i=0;i<(RxTxConf.n-6);i++)   // Write 4 bytes address
 291   1       {
 292   2        SpiWrite(RxTxConf.buf[i+5]);
 293   2       } 
 294   1       CSN=1;      // Spi disable
 295   1       TRX_CE=1;  PB8255=PB;   // Set TRX_CE high,start Tx data transmission
 296   1       Delay(1000);     // while (DR!=1);
 297   1       TRX_CE=0;  PB8255=PB;   // Set TRX_CE low
 298   1      }
 299          /*******************************************************************************************/
 300          //function RxPacket();
 301          /*******************************************************************************************/
 302          void RxPacket(void)
 303          {
C51 COMPILER V7.50   CODE                                                                  06/25/2007 15:17:12 PAGE 6   

 304   1       uchar i; 
 305   1       TRX_CE=0;  PB8255=PB;    // Set nRF905 in standby mode 
 306   1       Delay(100);
 307   1       CSN=0;   PB8255=PB;   // Spi enable for write a spi command
 308   1       SpiWrite(RRP);    // Read payload command 
 309   1       for (i=0;i<SB;i++)
 310   1       {
 311   2        RxBuf[i]=SpiRead();  // Read data and save to buffer  
 312   2       }
 313   1       CSN=1;   PB8255=PB;   // Disable spi
 314   1       while(DR||AM) _nop_(); 
 315   1       //P0= RxBuf[0];    // Buffer[0] output from P0 port...
 316   1       TRX_CE=1;       PB8255=PB;
 317   1      /* if (!(RxBuf[0]==0&&RxBuf[1]==0)  )
 318   1        for (i=0;i<SB;i++)
 319   1       {
 320   1        TmpBuf[i]=RxBuf[i];  // Read data and save to buffer  
 321   1       }       */
 322   1       //xx=(RxBuf[0]>>4)&0x0f;
 323   1       //for (i=0;i<SB;i++) TxData(TmpBuf[i]);
 324   1         
 325   1      }
 326          /*******************************************************************************************/
 327          //function SetTxMode();
 328          /*******************************************************************************************/
 329          void SetTxMode(void)    
 330          { 
 331   1       TX_EN=1;
 332   1       TRX_CE=0; PB8255=PB;
 333   1       Delay(100);      // delay for mode change(>=650us)
 334   1       r_flag=0;
 335   1      }    
 336          /*******************************************************************************************/
 337          //function SetRxMode();
 338          /*******************************************************************************************/
 339          void SetRxMode(void)
 340          {
 341   1      
 342   1      TRX_CE=0;  PB8255=PB;
 343   1      Delay(100);
 344   1      Config905();
 345   1      //FixConfig();
 346   1      Delay(100);
 347   1       TX_EN=0;
 348   1       TRX_CE=1;      PB8255=PB;
 349   1       Delay(100);      // delay for mode change(>=650us)  
 350   1        r_flag=1;  
 351   1       
 352   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1309    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =     96    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     31       1
   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 + -