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

📄 nrf905.lst

📁 能较好的实现无线通信 用点阵来实现 距离有100米 程序已通过调试
💻 LST
📖 第 1 页 / 共 3 页
字号:
 538   4      
 539   4                                       //for (r=0; r<32; ++r)
 540   4                                       //{
 541   4                                              //TxBuf[r]='\0';
 542   4                                      // } 
 543   4                                       
 544   4                                       SetRxMode();                           // Set nRF905 in Rx mode
 545   4      
 546   4                                       wfg = 0;
 547   4      
 548   4                                       for (r=0; r<32; ++r)
 549   4                                       {
 550   5                                              Int[r+32] = Digital[(sdata/10)*32+r];
 551   5                                       }
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 10  

 552   4                                       for (r=32; r<64; ++r)
 553   4                                       {
 554   5                                              Int[r+32] = Digital[(sdata%10)*32+r-32];
 555   5                                       }
 556   4                                       for (r=0; r<32; ++r)
 557   4                                       {
 558   5                                              Int[r+96] = xiaoshudian[r];
 559   5                                       }
 560   4                                       for (r=96; r<128; ++r)
 561   4                                       {
 562   5                                              Int[r+32] = Digital[(xiaoshu/10)*32+r-96];
 563   5                                       }
 564   4                                       for (r=128; r<160; ++r)
 565   4                                       {
 566   5                                              Int[r+32] = Digital[(xiaoshu%10)*32+r-128];
 567   5                                       }
 568   4                                       for (r=0; r<32; ++r)
 569   4                                       {
 570   5                                              Int[r+192] = sheshidu[r];
 571   5                                       }
 572   4      
 573   4                         /*
 574   4                              print_Char(sdata/10 +'0');
 575   4                              print_Char(sdata%10 +'0');
 576   4                              print_Char('.');                        
 577   4                              print_Char(xiaoshu/10 +'0');
 578   4                              print_Char(xiaoshu%10 +'0');
 579   4                              print_Char('\n'); 
 580   4                              */                      
 581   4                              }
 582   3                              else// if(strlen(RxBuf)>1)//RxBuf[5]!='\0'||RxBuf[31]!='\0'||RxBuf[15]!='\0'||RxBuf[22]!='\0'||RxBuf[24
             -]!='\0')             //接收到汉字码
 583   3                              {
 584   4                                 
 585   4                                 Write_24c04_32bit(count);
 586   4                                 count++;
 587   4      
 588   4      
 589   4                               //  print_Char('e');
 590   4                              //   print_Str(RxBuf);
 591   4      
 592   4                                      for (r=0; r<32; ++r)
 593   4                                      {
 594   5                                              text[r+32] = RxBuf[r];
 595   5                                      }
 596   4      
 597   4                                      wfg = 1;
 598   4                                      
 599   4                              }
 600   3                               
 601   3                              for (r=0; r<32; ++r)
 602   3                              {
 603   4                                      RxBuf[r]='\0';
 604   4                              }                                  
 605   3                              
 606   3                      }                               
 607   2                      
 608   2      
 609   2                      if (Key == 0)
 610   2                      {
 611   3                              delays_key();
 612   3      
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 11  

 613   3                              if (Key == 0)
 614   3                              {
 615   4                                  Read_24c04_32bit(keycount);                                 
 616   4                                      keycount++;
 617   4                                      //此处添加点阵代码
 618   4                                      
 619   4                                      for (r=0; r<32; ++r)
 620   4                                      {
 621   5                                              text[r+32] = RXBuffer[r];
 622   5                                      }
 623   4      
 624   4                                      //print_Str(RXBuffer);                
 625   4                              }
 626   3      
 627   3                              wfg = 1;
 628   3      
 629   3                              while(Key==0);  //等待按键释放
 630   3                      }
 631   2                               
 632   2                                      
 633   2      
 634   2              /*        串口部分
 635   2              if (RxWriteIndex>0)
 636   2              {       
 637   2      
 638   2                      //print_Str(TxBuf);             
 639   2                      
 640   2                      SetTxMode();                            // Set Tx Mode
 641   2                      TxPacket();                                     // Transmit Tx buffer data
 642   2                      TxBuf[0] = '\0';
 643   2                      SetRxMode();                            // Set nRF905 in Rx mode
 644   2                      RxWriteIndex = 0;
 645   2                      
 646   2              }
 647   2              */
 648   2      
 649   2      }
 650   1      
 651   1      }
 652          
 653          
 654          void Write_24c04_32bit(unsigned char count)
 655          {
 656   1                      WriteNByte(0xa0,16*count*2,RxBuf,16);         //RxBuf  905
 657   1                      WriteNByte(0xa0,16*count*2+16,&RxBuf[16],16);
 658   1      }
 659          
 660          void Read_24c04_32bit(unsigned char keycount)
 661          {
 662   1                      ReadNByte(0xa0,16*keycount*2,RXBuffer,16);                //RXBuffer   24c04
 663   1                      ReadNByte(0xa0,16*keycount*2+16,&RXBuffer[16],16);
 664   1      }
 665                  
 666          
 667          /*******************************************************************************************/
 668          /*******************************************************************************************/
 669          //function Config905();
 670          /*******************************************************************************************/
 671          void Config905(void)
 672          {
 673   1              uchar i;                                        
 674   1              CSN=0;                                          // Spi enable for write a spi command
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 12  

 675   1              SpiWrite(WC);                           // Write config command写放配置命令
 676   1              for (i=0;i<RxTxConf.n;i++)      // Write configration words  写放配置字
 677   1              {
 678   2                      SpiWrite(RxTxConf.buf[i]);
 679   2              }
 680   1              CSN=1;                                          // Disable Spi
 681   1      }
 682          /*******************************************************************************************/
 683          //function SpiWrite();
 684          /*******************************************************************************************/
 685          void SpiWrite(uchar  byte)
 686          {
 687   1              uchar i;        
 688   1              DATA_BUF=byte;                          // Put function's parameter into a bdata variable               
 689   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 690   1              {       
 691   2                      
 692   2                      if (flag)                               // Put DATA_BUF.7 on data line
 693   2                              MOSI=1;
 694   2                      else
 695   2                              MOSI=0;
 696   2                      SCK=1;                                  // Set clock line high
 697   2                      DATA_BUF=DATA_BUF<<1;   // Shift DATA_BUF
 698   2                      SCK=0;                                  // Set clock line low 
 699   2              }       
 700   1      }
 701          /*******************************************************************************************/
 702          //function SpiRead();
 703          /*******************************************************************************************/
 704          uchar SpiRead(void)
 705          {
 706   1              uchar i;        
 707   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 708   1              {       
 709   2                      DATA_BUF=DATA_BUF<<1;   // Right shift DATA_BUF
 710   2                      SCK=1;                                  // Set clock line high
 711   2                      if (MISO)
 712   2                              flag1=1;                        // Read data
 713   2                      else
 714   2                              flag1=0;
 715   2                                                              
 716   2                      
 717   2                      SCK=0;                                  // Set clock line low
 718   2              }
 719   1              return DATA_BUF;                        // Return function parameter
 720   1      }
 721          /*******************************************************************************************/
 722          //function TxPacket();
 723          /*******************************************************************************************/
 724          void TxPacket(void)
 725          {
 726   1              uchar i;
 727   1              //Config905();                          
 728   1              CSN=0;                                          // Spi enable for write a spi command   
 729   1              SpiWrite(WTP);                          // Write payload command
 730   1              for (i=0;i<32;i++)
 731   1              {
 732   2                      SpiWrite(TxBuf[i]);             // Write 32 bytes Tx data
 733   2              }
 734   1              CSN=1;                                          // Spi disable                                          
 735   1              Delay(1);
 736   1              CSN=0;                                          // Spi enable for write a spi command   
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 13  

 737   1              SpiWrite(WTA);                          // Write address command
 738   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 739   1              {
 740   2                      SpiWrite(RxTxConf.buf[i+5]);
 741   2              }       
 742   1              CSN=1;                                          // Spi disable
 743   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 744   1              Delay(1);                                       // while (DR!=1);
 745   1              TRX_CE=0;                                       // Set TRX_CE low
 746   1      }
 747          /*******************************************************************************************/
 748          //function RxPacket();
 749          /*******************************************************************************************/
 750          void RxPacket(void)
 751          {
 752   1              uchar i;        
 753   1              TRX_CE=0;                                       // Set nRF905 in standby mode   
 754   1              CSN=0;                                          // Spi enable for write a spi command
 755   1              SpiWrite(RRP);                          // Read payload command 
 756   1              for (i=0;i<32;i++)
 757   1              {
 758   2                      RxBuf[i]=SpiRead();             // Read data and save to buffer         
 759   2              }
 760   1              CSN=1;                                          // Disable spi
 761   1              while(DR||AM);  
 762   1              //P0=   RxBuf[0];                               // Buffer[0] output from P0 port...
 763   1              TRX_CE=1;
 764   1                                                      
 765   1      }
 766          /*******************************************************************************************/
 767          //function SetTxMode();
 768          /*******************************************************************************************/
 769          void SetTxMode(void)                            
 770          {       
 771   1              TX_EN=1;
 772   1              TRX_CE=0;
 773   1              Delay(1);                                       // delay for mode change(>=650us)
 774   1      }                               
 775          /*******************************************************************************************/
 776          //function SetRxMode();
 777          /*******************************************************************************************/
 778          void SetRxMode(void)
 779          {
 780   1              TX_EN=0;
 781   1              TRX_CE=1;
 782   1              Delay(1);                                       // delay for mode change(>=650us)                               
 783   1      }
 784          
 785          void delays_key(void)
 786          {
 787   1              uchar i;
 788   1      
 789   1              for (i=1300; i>0; --i);
 790   1      }
 791          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2306    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =    745      11
   PDATA SIZE       =   ----    ----
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 14  

   DATA SIZE        =     33    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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