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

📄 com.lst

📁 rfproV02发送程序和80C51演示程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 272          /*----------------------------- Subroutine -------------------------------------
 273                  Name: spi read
 274              Function: 
 275                 Entry: 
 276                  Exit: 
 277               Caution: 
 278          -------------------------------------------------------------------------------*/
 279          uchar SpiRead(void)
 280          {
 281   1              uchar i;        
 282   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 283   1              {       
 284   2                      DATA_BUF=DATA_BUF<<1;   // Right shift DATA_BUF
 285   2                      SCK=1;                                  // Set clock line high
 286   2                      if (MISO)
 287   2                              flag1=1;                        // Read data
 288   2                      else
 289   2                              flag1=0;
 290   2                      SCK=0;                                  // Set clock line low
 291   2              }
 292   1              return DATA_BUF;                        // Return function parameter
 293   1      }
 294          /*----------------------------- Subroutine -------------------------------------
 295                  Name: config 905
 296              Function: 
 297                 Entry: 
 298                  Exit: 
 299               Caution: 
 300          -------------------------------------------------------------------------------*/
 301          void Config905(void){
 302   1              uchar i;
 303   1              CSN=0;                          // Spi enable for write a spi command
C51 COMPILER V7.50   COM                                                                   11/15/2007 14:43:54 PAGE 6   

 304   1              SpiWrite(WC);                   // Write config command写放配置命令
 305   1              for (i=0;i<RxTxConf.n;i++)      // Write configration words  写放配置字
 306   1              {
 307   2                      SpiWrite(RxTxConf.buf[i]);
 308   2              }
 309   1              CSN=1;                                          // Disable Spi
 310   1      }
 311          /*----------------------------- Subroutine -------------------------------------
 312                  Name: Tx Packet
 313              Function: 
 314                 Entry: 
 315                  Exit: 
 316               Caution: 
 317          -------------------------------------------------------------------------------*/
 318          void TxPacket(void){
 319   1              uchar i;
 320   1              //Config905();                          
 321   1              CSN=0;                                          // Spi enable for write a spi command   
 322   1              SpiWrite(WTP);                          // Write payload command
 323   1              for (i=0;i<32;i++)
 324   1              {
 325   2                      SpiWrite(TxBuf[i]);             // Write 32 bytes Tx data
 326   2              }
 327   1              CSN=1;                                          // Spi disable                                          
 328   1              Delay(1);
 329   1              CSN=0;                                          // Spi enable for write a spi command   
 330   1              SpiWrite(WTA);                          // Write address command
 331   1              for (i=0;i<4;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;                                       // Set TRX_CE high,start Tx data transmission
 337   1              Delay(1);                                       // while (DR!=1);
 338   1              TRX_CE=0;                                       // Set TRX_CE low
 339   1      }
 340          /*----------------------------- Subroutine -------------------------------------
 341                  Name: Rx Packet
 342              Function: 
 343                 Entry: 
 344                  Exit: 
 345               Caution: 
 346          -------------------------------------------------------------------------------*/
 347          void RxPacket(void)
 348          {
 349   1              uchar i;        
 350   1              TRX_CE=0;                       // Set nRF905 in standby mode   
 351   1              CSN=0;                          // Spi enable for write a spi command
 352   1              SpiWrite(RRP);                  // Read payload command 
 353   1              for (i=0;i<32;i++)
 354   1              {
 355   2                      RxBuf[i]=SpiRead();     // Read data and save to buffer         
 356   2              }
 357   1              CSN=1;                          // Disable spi
 358   1              while(DR||AM);  
 359   1      //      P0=RxBuf[0];            // Buffer[0] output from P0 port...
 360   1              TRX_CE=1;
 361   1      //      TRX_CE=1;                       // Set TRX_CE high,start Tx data transmission
 362   1      //      Delay(1);                       // while (DR!=1);
 363   1      //      TRX_CE=0;                       // Set TRX_CE low
 364   1                                                                      
 365   1      }
C51 COMPILER V7.50   COM                                                                   11/15/2007 14:43:54 PAGE 7   

 366          
 367          /*----------------------------- Subroutine -------------------------------------
 368                  Name: datbuf_clr
 369              Function: 
 370                 Entry: 
 371                  Exit: 
 372               Caution: 
 373          -------------------------------------------------------------------------------*/       
 374          void datbuf_clr(void){
 375   1              unsigned char i;
 376   1              for(i=0;i<7;i++){
 377   2                      TxBuf[i]=0xff;
 378   2              }
 379   1      }
 380          /*----------------------------- Subroutine -------------------------------------
 381                  Name: com_initial
 382              Function: 
 383                 Entry: 
 384                  Exit: 
 385               Caution: 
 386          -------------------------------------------------------------------------------*/       
 387          void com_initial(void){
 388   1      
 389   1          //================NRF905初始化
 390   1              CSN=1;                                          // Spi  disable                                         
 391   1              SCK=0;                                          // Spi clock line init high
 392   1              DR=1;                                           // Init DR for input
 393   1              AM=1;                                           // Init AM for input
 394   1              PWR_UP=1;                                       // nRF905 power on
 395   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 396   1              TX_EN=0;                        
 397   1              
 398   1              nRF905Init();
 399   1              Delay(13);              //80*13
 400   1              Config905();                            // Config nRF905 module
 401   1              SetTxMode();                            // Set Tx Mode
 402   1              TxPacket();                             // Transmit Tx buffer data
 403   1      
 404   1              Delay(500);                             // delay for led light  
 405   1      
 406   1              SetRxMode();                            // Set nRF905 in Rx mode
 407   1              
 408   1              // 发
 409   1              Delay(500);     
 410   1              
 411   1              //      load data to send
 412   1              TxBuf[0]=0xaa;
 413   1              TxBuf[1]=0x55;
 414   1              TxBuf[2]=Read_COM_DATA;
 415   1              TxBuf[3]=0x00;
 416   1              TxBuf[4]=0xaa;
 417   1              TxBuf[5]=0x55;
 418   1              
 419   1              SetTxMode();            // Set Tx Mode
 420   1              TxPacket();             // Transmit Tx buffer data      
 421   1              datbuf_clr();
 422   1              SetRxMode();            // Set nRF905 in Rx mode
 423   1              
 424   1              b_send_fg=0;
 425   1              
 426   1      }
 427          /*----------------------------- Subroutine -------------------------------------
C51 COMPILER V7.50   COM                                                                   11/15/2007 14:43:54 PAGE 8   

 428                  Name: com
 429              Function: 
 430                 Entry: 
 431                  Exit: 
 432               Caution: 
 433          -------------------------------------------------------------------------------*/
 434          void com_do_ne(void){
 435   1                      if(RxBuf[3]==comdata){  //数据相等
 436   2                              b_disp=1; 
 437   2                              lcm_md=0x02;
 438   2                              dataresult=0x00;        
 439   2                      }
 440   1                      else    {               //不等,重发  
 441   2                              comcmd=Write_COM_DATA;
 442   2                              b_send_fg=1;
 443   2                      }
 444   1      }
 445          void com_do(void){
 446   1              if(RxBuf[2]==Feedback_CW_DATA){         //0xa3 下位机反馈写入数据      
 447   2                      com_do_ne();
 448   2                      fbuzz_en();
 449   2              }
 450   1              
 451   1              else if(RxBuf[2]==Feedback_CR_DATA){    //0xa4 下位机反馈要读的数据数据  
 452   2                      comdata=RxBuf[3]; 
 453   2                      b_disp=1; 
 454   2                      lcm_md=0x01;
 455   2                      fbuzz_en();
 456   2              }
 457   1              
 458   1              else if(RxBuf[2]==RST_COM_DATA){        //0xa5 下位机复位      
 459   2                      b_disp=1;
 460   2                      lcm_md=0x04;
 461   2                      fbuzz_en();
 462   2              }
 463   1              
 464   1      }                       
 465                  
 466          void com(void){
 467   1              if (DR){                        // If recive data ready... 
 468   2                      TR0 = 0;        //start t0
 469   2                      
 470   2                      RxPacket();                     // ... recive data
 471   2                      TR0 = 1;
 472   2                      
 473   2      //              if((RxBuf[0]==RxBuf[4])&&(RxBuf[1]==RxBuf[5])){ 
 474   2                              _nop_();
 475   2                              _nop_();
 476   2                              _nop_();
 477   2                              _nop_();
 478   2                              
 479   2      //b_disp=1;                     
 480   2      dsip_r0=RxBuf[0];
 481   2      dsip_r1=RxBuf[1];
 482   2      dsip_ra=RxBuf[2];
 483   2      dsip_rb=RxBuf[3];
 484   2      dsip_r4=RxBuf[4];
 485   2      dsip_r5=RxBuf[5];
 486   2                              
 487   2                              
 488   2                              com_do();
 489   2                      
C51 COMPILER V7.50   COM                                                                   11/15/2007 14:43:54 PAGE 9   

 490   2      //                      if(RxBuf[2]==Feedback_CW_DATA){         //0xa3 下位机反馈写入数据      
 491   2      //                              if(RxBuf[3]==comdata){  //数据相等
 492   2      //                                      b_disp=1; 
 493   2      //                                      lcm_md=0x02;
 494   2      //                                      dataresult=0x00;        
 495   2      //                              }
 496   2      //                              else    {               //不等,重发  
 497   2      //                                      comcmd=Write_COM_DATA;
 498   2      //                                      b_send_fg=1;
 499   2      //                              }
 500   2      //                      }
 501   2      //                      
 502   2      //                      else if(RxBuf[2]==Feedback_CR_DATA){    //0xa4 下位机反馈要读的数据数据  
 503   2      //                              comdata=RxBuf[3]; 
 504   2      //                              b_disp=1; 
 505   2      //                              lcm_md=0x01;
 506   2      //                      }
 507   2                    
 508   2                      }
 509   1              //      TR0 = 1;        //start t0
 510   1      //      }
 511   1              
 512   1              
 513   1              if(b_send_fg==1){
 514   2                      b_send_fg=0;
 515   2                      Delay(500);
 516   2                      
 517   2                      TR0 = 0;
 518   2                      
 519   2                      TxBuf[0]=0xaa;
 520   2                      TxBuf[1]=0x55;
 521   2                      TxBuf[2]=comcmd;
 522   2                      TxBuf[3]=comdata;
 523   2                      TxBuf[4]=0xaa;
 524   2                      TxBuf[5]=0x55;
 525   2              
 526   2                      SetTxMode();            // Set Tx Mode
 527   2                      TxPacket();             // Transmit Tx buffer data
 528   2                      datbuf_clr();
 529   2                      SetRxMode();            // Set nRF905 in Rx mode
 530   2                              
 531   2                      TR0 = 1;        //start t0      
 532   2              }
 533   1                      
 534   1      }
 535          
 536          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    468    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     68    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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