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

📄 nrf905.lst

📁 能较好的实现无线通信 用点阵来实现 距离有100米 程序已通过调试
💻 LST
📖 第 1 页 / 共 3 页
字号:
 265   1              for(e=0;e<32;e=e+32)
 266   1              {
 267   2                      for(a=0;a<8;a++)
 268   2                      {
 269   3                              for(b=0;b<8;b++)
 270   3                              {
 271   4                                      for(c=0;c<32;c++)
 272   4                                      {
 273   5                                      
 274   5                                      
 275   5                                      
 276   5                                              SBUF=~(text[e+c+32]>>(8-a)|text[e+c+1]<<a);
 277   5                                      
 278   5                                              while(TI==0);
 279   5                                              TI=0;
 280   5                                              SBUF=~(text[e+c+1]>>(8-a)|text[e+c]<<a);
 281   5                                              while(TI==0);
 282   5                                              TI=0;
 283   5                                              c++;
 284   5                                              P14=1;          //存储寄存器时钟输入
 285   5                                              P1=d;
 286   5                                              P15=0;      //使能74HC154
 287   5                                              Delayled(3);
 288   5                                              P14=0;
 289   5                                              P15=1;          //禁止74HC154
 290   5                                              d++;
 291   5                                              if(d==16)d=0;
 292   5      
 293   5      
 294   5                                      }
 295   4                              }
 296   3                      }
 297   2                      for(a=0;a<8;a++)
 298   2                      {
 299   3                                      for(b=0;b<8;b++)
 300   3                                      {
 301   4                                              for(c=0;c<32;c++)
 302   4                                              {
 303   5                                                                                      
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 6   

 304   5                                                      SBUF=~(text[e+c+1+32]>>(8-a)|text[e+c+32]<<a);
 305   5                                                      while(TI==0);
 306   5                                                      TI=0;
 307   5                                                      SBUF=~(text[e+c+32]>>(8-a)|text[e+c+1]<<a);
 308   5                                                      while(TI==0);
 309   5                                                      TI=0;
 310   5                                                      c++;
 311   5                                                      P14=1;
 312   5                                                      P1=d;
 313   5                                                      P15=0;
 314   5                                                      Delayled(3);
 315   5                                                      P14=0;
 316   5                                                      P15=1;
 317   5                                                      d++;
 318   5                                                      if(d==16)d=0;
 319   5                                              }
 320   4                                      }
 321   3                      }
 322   2              
 323   2              }
 324   1      
 325   1              
 326   1      
 327   1      }
 328          
 329          void Display_Init()
 330          {
 331   1              unsigned int a,e;
 332   1              unsigned char b,c,d=0;
 333   1              SCON=0;
 334   1      
 335   1      
 336   1              for(e=0;e<192;e=e+32)
 337   1              {
 338   2                      for(a=0;a<8;a++)
 339   2                      {
 340   3                              for(b=0;b<8;b++)
 341   3                              {
 342   4                                      for(c=0;c<32;c++)
 343   4                                      {
 344   5                                      
 345   5                                      
 346   5                                      
 347   5                                              SBUF=~(Int[e+c+32]>>(8-a)|Int[e+c+1]<<a);
 348   5                                      
 349   5                                              while(TI==0);
 350   5                                              TI=0;
 351   5                                              SBUF=~(Int[e+c+1]>>(8-a)|Int[e+c]<<a);
 352   5                                              while(TI==0);
 353   5                                              TI=0;
 354   5                                              c++;
 355   5                                              P14=1;          //存储寄存器时钟输入
 356   5                                              P1=d;
 357   5                                              P15=0;      //使能74HC154
 358   5                                              Delayled(3);
 359   5                                              P14=0;
 360   5                                              P15=1;          //禁止74HC154
 361   5                                              d++;
 362   5                                              if(d==16)d=0;
 363   5      
 364   5      
 365   5                                      }
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 7   

 366   4                              }
 367   3                      }
 368   2                      for(a=0;a<8;a++)
 369   2                      {
 370   3                                      for(b=0;b<8;b++)
 371   3                                      {
 372   4                                              for(c=0;c<32;c++)
 373   4                                              {
 374   5                                                                                      
 375   5                                                      SBUF=~(Int[e+c+1+32]>>(8-a)|Int[e+c+32]<<a);
 376   5                                                      while(TI==0);
 377   5                                                      TI=0;
 378   5                                                      SBUF=~(Int[e+c+32]>>(8-a)|Int[e+c+1]<<a);
 379   5                                                      while(TI==0);
 380   5                                                      TI=0;
 381   5                                                      c++;
 382   5                                                      P14=1;
 383   5                                                      P1=d;
 384   5                                                      P15=0;
 385   5                                                      Delayled(3);
 386   5                                                      P14=0;
 387   5                                                      P15=1;
 388   5                                                      d++;
 389   5                                                      if(d==16)d=0;
 390   5                                              }
 391   4                                      }
 392   3                      }
 393   2              
 394   2              }
 395   1      
 396   1              
 397   1      
 398   1      }
 399          
 400          unsigned char temp [32]=
 401          {
 402          0x04,0x04,0xFE,0xFE,0x28,0x84,0x28,0xFC,
 403          0xFE,0x84,0xAA,0xFC,0xAA,0x20,0xAE,0xA0,
 404          0xC2,0xFC,0x83,0x20,0x82,0x20,0xFE,0xFC,
 405          0x82,0x20,0x82,0x24,0xFF,0xFE,0x82,0x00 //醒
 406          
 407          };
 408          
 409          bit wfg = 0;    //display 
 410          bit shfg = 0;  //唤醒 睡眠  数据备份flag
 411          
 412          unsigned char r = 0;                       
 413          void main()
 414          {
 415   1              
 416   1      
 417   1          //SCON=0x50;  //模式1
 418   1          //TMOD=0x21;  //定时模式2
 419   1          //IE=0x90;
 420   1      
 421   1          //=====9600=======设置串口通讯寄存器
 422   1          //PCON=0x00;   //波特率9600BPS,晶振11.0592MHZ
 423   1         // TH1=0xFD;  //
 424   1         // TL1=0xFD;  //计数器初值
 425   1          //================NRF905初始化
 426   1              CSN=1;                                          // Spi  disable                                         
 427   1              SCK=0;                                          // Spi clock line init high
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 8   

 428   1              DR=1;                                           // Init DR for input
 429   1              AM=1;                                           // Init AM for input
 430   1              PWR_UP=1;                                       // nRF905 power on
 431   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 432   1              TX_EN=0;                                        // set radio in Rx mode 
 433   1      
 434   1         // TI = 0;//串行中断标志位清零
 435   1         // TR1 = 1;//打开计数器1  
 436   1              //================
 437   1              Config905();                            // Config nRF905 module
 438   1              SetRxMode();
 439   1              Adjust_res_18B20(0x3f);
 440   1              ReadTemperature();
 441   1      
 442   1              
 443   1      
 444   1      //      print_Char('a');
 445   1      /*
 446   1              Adjust_res_18B20(0x3f);
 447   1              ReadTemperature();
 448   1              print_Char(sdata/10 +'0');
 449   1                              print_Char(sdata%10 +'0');
 450   1                              print_Char('.');                        
 451   1                              print_Char(xiaoshu/10 +'0');
 452   1                              print_Char(xiaoshu%10 +'0');
 453   1                              print_Char('\n');
 454   1                              */
 455   1      
 456   1              //WriteNByte(0xa0,0,TXBuffer,32);
 457   1              //ReadNByte(0xa0,0,RXBuffer,32);
 458   1      //      Display_Init();
 459   1      
 460   1      while(1)
 461   1      {
 462   2              if(wfg==0)
 463   2              {
 464   3                      Display_Init();
 465   3              }
 466   2      
 467   2              if(wfg==1)
 468   2              {
 469   3                 Display();
 470   3      
 471   3                 if (shfg == 0)
 472   3                 {
 473   4                              for (r=0; r<32; ++r)
 474   4                              {
 475   5                                      temp[r] = text[r+32];
 476   5                              }
 477   4                      }
 478   3              }  //Displayadd();
 479   2      
 480   2               //=====================等待NRF905接收
 481   2                 if (DR)
 482   2                 {                    // If recive data ready... 
 483   3                              RxPacket();      // ... recive data
 484   3                              //print_Str(RxBuf);
 485   3                      //      print_Char('b');
 486   3                              if (RxBuf[0]==0x11&&RxBuf[1]=='\0')       //接收到睡眠命令
 487   3                              {
 488   4                                      if (flg==0)    //睡眠
 489   4                                      {
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 20:18:03 PAGE 9   

 490   5                              //               print_Char('f');
 491   5                              //               P15 = 1;      //禁止74HC154
 492   5                                              for (r=0; r<32; ++r)
 493   5                                              {
 494   6                                                      text[r+32] = 0x00;
 495   6                                              }
 496   5      
 497   5                                              shfg = 1;       //禁止备份
 498   5      
 499   5                                      }
 500   4                                      else       //唤醒
 501   4                                      {
 502   5                              //               print_Char('l');
 503   5                                
 504   5                                              Read_24c04_32bit((keycount-1));
 505   5      
 506   5                                              for (r=0; r<32; ++r)
 507   5                                              {
 508   6                                                      text[r+32] = temp[r];
 509   6                                              }
 510   5      
 511   5                                              shfg = 0;       //开始备份
 512   5      
 513   5                                      
 514   5                                      }
 515   4                                      flg = ~flg;
 516   4      
 517   4      
 518   4                                      wfg = 1;
 519   4                                      
 520   4                                      
 521   4                              }
 522   3                              else if (RxBuf[0]==0x02&&RxBuf[1]=='\0')         //接收到发送温度命令
 523   3                              {
 524   4                                       //Adjust_res_18B20(0x3f);
 525   4                                       ReadTemperature();
 526   4                                       delays_key();
 527   4                                       delays_key();
 528   4                                       delays_key();
 529   4                                       delays_key();
 530   4                                       delays_key();
 531   4                                       delays_key();
 532   4                                       TxBuf[0] = sdata/10;
 533   4                                       TxBuf[1] = sdata%10;
 534   4                                       TxBuf[2] = xiaoshu/10;
 535   4                                       TxBuf[3] = xiaoshu%10;
 536   4                                       SetTxMode();                           // Set Tx Mode
 537   4                               TxPacket();                            // Transmit Tx buffer data

⌨️ 快捷键说明

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