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

📄 all-test.lst

📁 Keil写的nRF2401的发射程序,,,可以配合我刚才发的nRF2401的接受程序来看,,所有的关键注释我都写的很清楚,,非常合适新手学习的再次开发使用.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 330   1         
 331   1      //  
 332   1      //  P2=0x00;
 333   1        TR0=0;                  //测试AD期间,必须关定时,否则在液晶显示和数据方面会有问题
 334   1        P2_7=0;
 335   1        P2_6=0;
 336   1        P3_7=0;   //开启
 337   1      //  do          //40次中间测量有间隔
 338   1      //   {   
 339   1           measure();
 340   1      //     compare_four_data();
 341   1      //       delayms(150);
 342   1      //   }while(read_count<44);
 343   1      
 344   1        P3_7=1;        //disable
 345   1        TR0=1;
 346   1      //  s=s/4;
 347   1      //  read_count=0;
 348   1       // TR0=1;         //开定时必须放在外面
 349   1      //   cs_temp&=0xfd;
 350   1      //   P0=cs_temp;
 351   1      //   P2=0x40;
 352   1      //   P3_6=0;
 353   1      //   P3_6=1;
 354   1      
 355   1      //  s=s-min1-min2-max1-max2;             // 20中间数的和
 356   1      //  s=s/4;     //保留小数点一位,函数返回后,必须执行s=s/10后,s中才真正存放平均值
 357   1      //  r=modf(s,&dp);
 358   1      //  if(r>=0.5)
 359   1      //    s=abs(dp)+1;
 360   1      //  else
 361   1      //    s=abs(dp);
 362   1      //  // 此时S为标准5位数//
 363   1      //  read_count=0;   
 364   1      }
C51 COMPILER V8.02   ALL_TEST                                                              06/15/2007 10:53:26 PAGE 7   

*** WARNING C280 IN LINE 316 OF FILE\ALL-TEST.C: 'r': unreferenced local variable
*** WARNING C280 IN LINE 317 OF FILE\ALL-TEST.C: 'dp': unreferenced local variable
 365          
 366          //-------------------------------------------------------------//
 367          float simple_input(float  p, uchar  colour, uchar  steps )
 368          {
 369   1        bit en_loop=1;
 370   1        uchar i;
 371   1        uchar xdata k=23,d;
 372   1      
 373   1        temp=p*100;
 374   1        split_data(temp);
 375   1                                                          
 376   1        lcddis_series(0,6,name,0,0);
 377   1        switch(colour)
 378   1        {
 379   2          case 0:
 380   2                lcddis_series(6,1,sequence,0,0);       break;           //白度
 381   2              case 1:
 382   2                lcddis_series(6,1,sequence,1,0);       break;           //色度
 383   2              default: break;
 384   2        }  
 385   1        write_DDRAM(7,'-');
 386   1        switch(steps)
 387   1        {
 388   2          case 0:
 389   2                lcddis_series(8,1,sequence,0,0);       break;      // 调零
 390   2              case 1:
 391   2                lcddis_series(8,1,sequence,1,0);       break;      // 调准
 392   2              case 2:
 393   2                lcddis_series(8,1,sequence,2,0);       break;          // 标准值
 394   2              case 3:
 395   2                lcddis_series(8,1,sequence,3,0);       break;          // u 值
 396   2              case 4:
 397   2                lcddis_series(8,1,sequence,4,0);       break;          // g 值
 398   2              default: break;
 399   2        }  
 400   1        write_DDRAM(9,'-');
 401   1        lcddis_series(10,1,sequence,1,0);
 402   1        lcddis_series(12,3,step,0,0);
 403   1        write_DDRAM(25,'.');
 404   1      
 405   1        inc=0;
 406   1        pr=1;
 407   1        
 408   1        //------------
 409   1        do
 410   1        {
 411   2      
 412   2         if(k>25)              // 小数点位置偏差
 413   2          d=23;
 414   2         else
 415   2          d=22;
 416   2         switch(e_key)
 417   2         {
 418   3          case 12:
 419   3               {
 420   4                 e_key=24;
 421   4                 k++;
 422   4                 if(k==25)
 423   4                  k=26;
 424   4                 if(k>27)
C51 COMPILER V8.02   ALL_TEST                                                              06/15/2007 10:53:26 PAGE 8   

 425   4                  k=23;
 426   4                 break;
 427   4               }
 428   3              case 9:
 429   3               {
 430   4                 e_key=24;       
 431   4                 eeprom_buffer[k-d]++;
 432   4                 if(eeprom_buffer[k-d]>9)
 433   4                   eeprom_buffer[k-d]=0;
 434   4                 break;
 435   4               }
 436   3              case 24:
 437   3               {
 438   4                 if(inc==1)   //明
 439   4                  {
 440   5                       lcddis_series(23,2,eeprom_buffer,1,1);
 441   5                       lcddis_series(26,2,eeprom_buffer,3,1);
 442   5                      }
 443   4                   
 444   4                 if(inc==51)                                                             // must modify
 445   4                  {
 446   5               lcddis_series(23,2,eeprom_buffer,1,1);
 447   5                       lcddis_series(26,2,eeprom_buffer,3,1);
 448   5                       write_DDRAM(k,' ');              
 449   5                      }
 450   4                 wr_lcd(comm,0x0c,1); 
 451   4                 break;
 452   4               }
 453   3      
 454   3              default:
 455   3                en_loop=0; 
 456   3                break;
 457   3         }
 458   2         
 459   2        }while(en_loop);
 460   1        //------------
 461   1        if(e_key==16)
 462   1        {
 463   2          write_DDRAM(10,'2');           // OK 状态
 464   2              for(i=12;i<15;i++)
 465   2               write_DDRAM(i,' ');
 466   2              lcddis_series(23,2,eeprom_buffer,1,1);
 467   2              if(eeprom_buffer[1]==0)
 468   2               write_DDRAM(23,' ');
 469   2              lcddis_series(26,2,eeprom_buffer,3,1);
 470   2          temp=eeprom_buffer[1]*1000 +eeprom_buffer[2]*100 +eeprom_buffer[3]*10 +eeprom_buffer[4];
 471   2          temp/=100;
 472   2              if(e_key==16)    //数据前移一位,如果有写EEPROM,则写
 473   2               {
 474   3                for(i=0;i<4;i++)
 475   3                      eeprom_buffer[i]=eeprom_buffer[i+1];
 476   3            return(temp);
 477   3           }
 478   2        }
 479   1        else
 480   1          return(p);
 481   1      }
 482          //------------------------------------------------------------//
 483          
 484          void key_response(void)
 485          {
 486   1        switch(e_key)
C51 COMPILER V8.02   ALL_TEST                                                              06/15/2007 10:53:26 PAGE 9   

 487   1        {
 488   2          case 10:
 489   2               {
 490   3                 e_key=24;       
 491   3                 wr_lcd (comm,0x01,1);  /*清屏,地址指针指向00H*/
 492   3                 wr_lcd (comm,0x08,1);  //关显示
 493   3      
 494   3                 s=0;
 495   3                 adc_idle();
 496   3                 split_data(s);
 497   3      
 498   3             wr_lcd (comm,0x01,1);  /*清屏,地址指针指向00H*/
 499   3                 if(s>1500)
 500   3                   lcddis_series(0,5,eeprom_buffer,0,1);
 501   3                 else
 502   3                   lcddis_series(16,5,eeprom_buffer,0,1);
 503   3                  wr_lcd (comm,0x0c,1);  /*开显示,关光标*/
 504   3                 break;
 505   3               }
 506   2              case 14:
 507   2               {
 508   3                 e_key=0;
 509   3                 wr_lcd (comm,0x08,1); 
 510   3                 break;
 511   3               }
 512   2              case 16:
 513   2               {
 514   3                 e_key=0;
 515   3                 wr_lcd (comm,0x0c,1);  /*开显示,关光标*/
 516   3                 break;
 517   3               }
 518   2      //      case 14:
 519   2      //       {
 520   2      //         e_key=24;
 521   2      //       wr_lcd (comm,0x08,1);  //关显示
 522   2      //         wr_lcd (comm,0x01,1);  /*清屏,地址指针指向00H*/
 523   2      //         if(r457)
 524   2      //         {
 525   2      //           write_DDRAM(16,'R');
 526   2      //               write_DDRAM(17,0);
 527   2      //               write_DDRAM(18,1);
 528   2      //               write_DDRAM(19,2);
 529   2      //               write_DDRAM(20,':');
 530   2      //         }
 531   2      //         else
 532   2      //         {
 533   2      //           write_DDRAM(16,'R');
 534   2      //               write_DDRAM(17,3);
 535   2      //               write_DDRAM(18,':');
 536   2      //               write_DDRAM(19,' ');
 537   2      //               write_DDRAM(20,' ');
 538   2      //               
 539   2      //         }
 540   2      //         if(r457)
 541   2      //         {
 542   2      //           r457se=simple_input(r457se,0,1);
 543   2      //           if(e_key==16)
 544   2      //           {
 545   2      //             e_key=0;
 546   2      //             TR0=0;
 547   2      //             Write_A_Page(eeprom_buffer,4,0x08);
 548   2      //             TR0=1;        
C51 COMPILER V8.02   ALL_TEST                                                              06/15/2007 10:53:26 PAGE 10  

 549   2      //           }
 550   2      //         }
 551   2      //         else
 552   2      //         {
 553   2      //           ryse=simple_input(ryse,0,1);
 554   2      //               if(e_key==16)
 555   2      //           {
 556   2      //             e_key=0;
 557   2      //             TR0=0;
 558   2      //             Write_A_Page(eeprom_buffer,4,0x0c);
 559   2      //             TR0=1;        
 560   2      //           }
 561   2      //         }
 562   2      //        break;
 563   2      //       }
 564   2      
 565   2              default: break;
 566   2        }
 567   1      }
 568          
 569          void write_DDRAM(uchar pos ,uchar cont )          // 为单个数据写入DDRAM
 570          {
 571   1        uchar ex_addr;
 572   1        if(pos>15)
 573   1         ex_addr=0x30+pos;
 574   1        else
 575   1         ex_addr=pos;
 576   1        wr_lcd(comm,0x80+ex_addr,1);
 577   1        wr_lcd(dat,cont,1);
 578   1      //  wr_lcd(comm,0x0c,1);         //如果有,会一个一个显示过来,能看清楚(不采取)
 579   1      }
 580          
 581          void lcddis_series(uchar lcd_pos ,uchar num, uchar  *p, uchar p_n, bit dig)
 582          {
 583   1        uchar i;
 584   1        uchar vis;
 585   1        for(i=0;i<num;i++)
 586   1        {
 587   2         if(dig)
 588   2          vis=*(p+p_n)+48;     //自校准到相应ASCII码上
 589   2         else
 590   2          vis=*(p+p_n);
 591   2         write_DDRAM(lcd_pos,vis);
 592   2         p++;
 593   2         lcd_pos++;
 594   2        }
 595   1      // wr_lcd(comm,0x0c,1);
 596   1      }
 597          
 598          void check_eeprom(uchar n)
 599          {
 600   1        uchar xdata i;
 601   1         for(i=0;i<n;i++)
 602   1           {                                                                                                                                                              
 603   2             if((eeprom_buffer[i]>9)||(eeprom_buffer[i]<0))   //检测到无效
 604   2               {
 605   3                 bfail=1;
 606   3               }      
 607   2           }
 608   1      }
 609          
 610          void iniatial(void)
C51 COMPILER V8.02   ALL_TEST                                                              06/15/2007 10:53:26 PAGE 11  

 611          {
 612   1        uchar i;
 613   1        uchar xdata addr;
 614   1        bit un_effect=0;
 615   1        //---------------------//开机初始化自检
 616   1        TR0=0;
 617   1        byte_dat=Read_One_Byte(0x68);   //读符号位
 618   1        TR0=1;
 619   1        if((byte_dat&0x80)==0)
 620   1         u_afunction=0;         // +
 621   1        else
 622   1         u_afunction=1;         // -
 623   1        
 624   1        TR0=0; 
 625   1        byte_dat=Read_One_Byte(0x00);
 626   1        TR0=1;
 627   1        for(i=0;i<4;i++)               //对AD值进行校验
 628   1        {
 629   2         un_effect=0;
 630   2         switch(i)
 631   2          {
 632   3               case 0:
 633   3                 addr=0x01;
 634   3                 if((byte_dat&0x40)==0)
 635   3                  {
 636   4                        un_effect=1;
 637   4                        r457zeroflag=0;
 638   4                      }  
 639   3                 break;
 640   3               case 1:
 641   3                 addr=0x10;
 642   3                 if((byte_dat&0x80)==0)
 643   3                  {
 644   4                        un_effect=1;
 645   4                        ryzeroflag=0;
 646   4                      }   
 647   3                 break;
 648   3               case 2:
 649   3                 addr=0x20;  
 650   3                 if((byte_dat&0x08)==0)
 651   3                  {
 652   4                        un_effect=1;
 653   4                        ryadflag=0;
 654   4                      }   
 655   3                 break;
 656   3               case 3:
 657   3                 addr=0x18;  
 658   3                 if((byte_dat&0x04)==0)
 659   3                  {
 660   4                        un_effect=1;
 661   4                        r457adflag=0;
 662   4                      }   
 663   3                 break;
 664   3               default: break;
 665   3              }
 666   2         TR0=0;

⌨️ 快捷键说明

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