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

📄 main.lst

📁 自动检测电容值
💻 LST
📖 第 1 页 / 共 4 页
字号:
             -10;
 289   4                                      ComPrint("Max_R: ");MaxR=GetInt()==0?MaxR*10:GetInt();DisplayData(0x81,MaxR);ComPrint(" KΩ\n");MaxR/=
             -10;
 290   4                                      ComPrint("Min_C:");MinC=GetInt()==0?MinC:GetInt();DisplayData(0x82,MinC);ComPrint(" PF\n");
 291   4                                      ComPrint("Max_C:");MaxC=GetInt()==0?MaxC:GetInt();DisplayData(0x83,MaxC);ComPrint(" KΩ\n");
 292   4                                      ComPrint("Std_R: ");nR=GetInt()==0?nR*10:GetInt();DisplayData(0x83,nR);ComPrint(" KΩ\n");nR/=10;
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 6   

 293   4                                      ComPrint("Std_C:");nC=GetInt()==0?nC:GetInt();DisplayData(0x83,nC);ComPrint(" PF\n");
 294   4                                      LmWrite();
 295   4                                      break;
 296   4                              case 'C':
 297   4                                      ComPrint("Are you sure to calibrate?(Y/N)\n");
 298   4                                      td=2000;
 299   4                                      while((i=Remote())==0 && td!=0);
 300   4                                      if(i!='Y'&&i!='y') break;
 301   4                                      LcdClear();
 302   4                                      LcdPrint("\n  * Calibration *\n");
 303   4                                      ComPrint("Calibrate...\n");
 304   4                                      StdR0=Tests(RstdNo,1000);
 305   4                                      StdC0=Tests(CstdNo,1000);
 306   4                                      BsWrite();
 307   4                                      ComPrint("StdR0=  ");LongPrint(StdR0);ComPrint("\n");
 308   4                                      ComPrint("StdC0=  ");LongPrint(StdC0);ComPrint("\n");
 309   4                                      ComPrint("Calibrate Ok!\n");
 310   4                                      LcdClear();
 311   4                                      LcdPrint("\n  Calibration OK\n");
 312   4                                      break;
 313   4                              case 'R':
 314   4                              case 'F':
 315   4                                      ComPrint("Reset to default ");
 316   4                                      if(i=='R')
 317   4                                              ComPrint("parameter?(Y/N)\n");
 318   4                                      else
 319   4                                              ComPrint("calibration?(Y/N)\n");
 320   4                                      td=2000;
 321   4                                      while((d=Remote())==0 && td!=0);
 322   4                                      if(d!='Y'&&d!='y') break;
 323   4                                      if(i=='R')
 324   4                                      {
 325   5                                              DeftVal(0);
 326   5                                              LmWrite();
 327   5                                      }
 328   4                                      else
 329   4                                      {
 330   5                                              DeftVal(1);
 331   5                                              BsWrite();
 332   5                                      }
 333   4                                      DisParam();     
 334   4                                      break;                          
 335   4                              }
 336   3                      }
 337   2              }
 338   1      }
 339          void BsWrite(void)
 340          {
 341   1              EEWrite(0x30,StdR0 % 256);
 342   1              EEWrite(0x31,(StdR0>>8) % 256);
 343   1              EEWrite(0x32,(StdR0>>16) % 256);
 344   1              EEWrite(0x33,(StdR0>>32) % 256);
 345   1              EEWrite(0x40,StdC0 % 256);
 346   1              EEWrite(0x41,(StdC0>>8) % 256);
 347   1              EEWrite(0x42,(StdC0>>16) % 256);
 348   1              EEWrite(0x43,(StdC0>>32) % 256);
 349   1      }
 350          void LmWrite(void)
 351          {
 352   1              EEWrite(0x10,MinR % 256);
 353   1              EEWrite(0x11,MinR / 256);
 354   1              EEWrite(0x12,MaxR % 256);
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 7   

 355   1              EEWrite(0x13,MaxR / 256);
 356   1              EEWrite(0x14,STD_RESISTOR % 256);
 357   1              EEWrite(0x15,STD_RESISTOR / 256);
 358   1              EEWrite(0x16,nR % 256);
 359   1              EEWrite(0x17,nR / 256);
 360   1              EEWrite(0x20,MinC % 256);
 361   1              EEWrite(0x21,MinC / 256);
 362   1              EEWrite(0x22,MaxC % 256);
 363   1              EEWrite(0x23,MaxC / 256);
 364   1              EEWrite(0x24,STD_CAPACITOR % 256);
 365   1              EEWrite(0x25,STD_CAPACITOR / 256);
 366   1              EEWrite(0x26,nC % 256);
 367   1              EEWrite(0x27,nC / 256);
 368   1      }
 369          void DisParam(void)
 370          {
 371   1              ComPrint("Parameter:\n");
 372   1              ComPrint("MinR=  ");DisplayData(0x80,MinR*10);ComPrint(" KΩ\n");
 373   1              ComPrint("MaxR=  ");DisplayData(0x81,MaxR*10);ComPrint(" KΩ\n");
 374   1              ComPrint("MinC=  ");DisplayData(0x82,MinC);ComPrint(" PF\n");
 375   1              ComPrint("MaxC=  ");DisplayData(0x83,MaxC);ComPrint(" PF\n");
 376   1              ComPrint("StdR=  ");DisplayData(0x83,nR*10);ComPrint(" KΩ\n");
 377   1              ComPrint("StdC=  ");DisplayData(0x83,nC);ComPrint(" PF\n");
 378   1              ComPrint("StdR0= ");LongPrint(StdR0);ComPrint("\n");
 379   1              ComPrint("StdC0= ");LongPrint(StdC0);ComPrint("\n");
 380   1      }
 381          unsigned long LngRead(unsigned char a)
 382          {
 383   1              unsigned long d;
 384   1              char i;
 385   1              d=0;
 386   1              for(i=3;i>=0;i--)
 387   1              {
 388   2                      d<<=8;
 389   2                      d+=EERead(a+i);
 390   2              }
 391   1              return(d);
 392   1      }
 393          unsigned int GetInt(void)
 394          {
 395   1              unsigned char d;
 396   1              unsigned int re;
 397   1              re=0;
 398   1              d=0;
 399   1              while(1)
 400   1              {
 401   2                      if(RI)
 402   2                      {
 403   3                              d=SBUF;
 404   3                              RI=0;
 405   3                              if(d>'9' || d<'0') break;
 406   3                              re=re*10+d-'0';
 407   3                              td=10; //50ms
 408   3                      }
 409   2                      if(d!=0 && td==0) break;
 410   2              }
 411   1              return(re);
 412   1      }
 413          bit EEWrite8(char d)
 414          {
 415   1              char i;
 416   1              bit re;
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 8   

 417   1              SCL=0;
 418   1              for(i=0;i<8;i++)
 419   1              {
 420   2                      d<<=1;
 421   2                      SDA=CY;
 422   2                      SCL=0;
 423   2                      SCL=0;
 424   2                      SCL=1;
 425   2                      SCL=1;
 426   2                      SCL=1;
 427   2                      SCL=0;
 428   2              }
 429   1              SDA=1;
 430   1              SCL=0;
 431   1              SCL=0;
 432   1              SCL=1;
 433   1              re=SDA;
 434   1              SCL=1;
 435   1              SCL=1;
 436   1              SCL=0;
 437   1              return(re);
 438   1      }
 439          unsigned char EERead8(void)
 440          {
 441   1              char i;
 442   1              char d;
 443   1              d=0;
 444   1              SCL=0;
 445   1              for(i=0;i<8;i++)
 446   1              {
 447   2                      d<<=1;
 448   2                      SCL=0;
 449   2                      SCL=1;
 450   2                      if(SDA) d++;
 451   2                      SCL=1;
 452   2                      SCL=1;
 453   2                      SCL=0;
 454   2              }
 455   1              return(d);
 456   1      }
 457          void EEStart(void)
 458          {
 459   1              SCL=0;
 460   1              SDA=1;
 461   1              SCL=0;
 462   1              SCL=1;
 463   1              SDA=0;
 464   1              SCL=1;
 465   1              SCL=1;
 466   1              SCL=0;
 467   1      }
 468          void EEStop(void)
 469          {
 470   1              SCL=0;
 471   1              SDA=0;
 472   1              SCL=0;
 473   1              SCL=1;
 474   1              SDA=1;
 475   1              SCL=1;
 476   1              SCL=1;
 477   1              SCL=0;
 478   1              SDA=0;
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 9   

 479   1      }
 480          bit EEWrite(char ad,char d)
 481          {
 482   1              char i;
 483   1              for(i=0;i<100;i++)
 484   1              {
 485   2                      EEStart();
 486   2                      if(EEWrite8(0xa0)) {EEStop();continue;}
 487   2                      i=0;
 488   2                      if(EEWrite8(ad)) {EEStop();continue;}
 489   2                      i=0;
 490   2                      if(EEWrite8(d)) {EEStop();continue;}
 491   2                      EEStop();
 492   2                      DelayMs(20);
 493   2                      return(0);
 494   2              }
 495   1              return(1);
 496   1      }
 497          unsigned char EERead(char ad)
 498          {
 499   1              char i;
 500   1              char d;
 501   1              for(i=0;i<100;i++)
 502   1              {
 503   2                      EEStart();
 504   2                      if(EEWrite8(0xa0)) {EEStop();continue;}
 505   2                      i=0;
 506   2                      if(EEWrite8(ad)) {EEStop();continue;}
 507   2                      i=0;
 508   2                      EEStart();
 509   2                      if(EEWrite8(0xa1)) {EEStop();continue;}
 510   2                      i=0;
 511   2                      d=EERead8();
 512   2                      EEStop();
 513   2                      return(d);
 514   2              }
 515   1      }
 516          bit CalC(void)
 517          {
 518   1              float fsum;
 519   1              unsigned int sum,adv;
 520   1              char i;
 521   1              sum=0;
 522   1              adv=0;
 523   1              for(i=4;i<8;i++)
 524   1              {
 525   2                      if(4*TestData[i]>sum) sum=4*TestData[i];
 526   2                      adv+=TestData[i];
 527   2              }
 528   1              adv-=sum/4;
 529   1              while(1)
 530   1              {
 531   2                      fsum=0;
 532   2                      for(i=4;i<8;i++)
 533   2                      {
 534   3                              fsum+=sqrt(1-4.0*TestData[i]/sum);
 535   3                      }
 536   2                      if(fsum>2+0.002)
 537   2                      {
 538   3                              if(adv==0)
 539   3                              {
 540   4                                      TestData[4]=TestData[5]=8000;
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 10  

 541   4                                      return(0);
 542   4                              }
 543   3                              sum-=adv;
 544   3                              adv>>=1;
 545   3                              continue;
 546   3                      }
 547   2                      if(fsum<2-0.002)
 548   2                      {
 549   3                              if(adv==0) break;
 550   3                              sum+=adv;
 551   3                              adv>>=1;
 552   3                              continue;
 553   3                      }
 554   2                      break;
 555   2              }
 556   1              for(i=4;i<8;i++)
 557   1              {
 558   2                      TestData[i]=(1-sqrt(1-4.0*TestData[i]/sum))*sum/2+0.5;
 559   2              }
 560   1              TestData[4]=1.0*TestData[4]*TestData[5]/(TestData[4]+TestData[5]);
 561   1              TestData[5]=1.0*TestData[6]*TestData[7]/(TestData[6]+TestData[7]);
 562   1              return(1);
 563   1      }
 564          bit ComPrint(char * st)
 565          {
 566   1              char i;
 567   1              i=0;
 568   1              for(i=0;i<128;i++)
 569   1              {
 570   2                      if(st[i]==0) return(1);
 571   2                      td=10;  //50ms
 572   2                      td=10;while(!TI) if(td==0) return(0);
 573   2                      if(st[i]==0xa)
 574   2                      {
 575   3                              SBUF=0xd;TI=0;
 576   3                              td=10;while(!TI) if(td==0) return(0);
 577   3                      }
 578   2                      SBUF=st[i];TI=0;
 579   2              }
 580   1              return(0);
 581   1      } 
 582          /*void CalC(char i)
 583          {
 584                  float f;
 585                  f=4.0*TestData[i]/4000;
 586                  f=sqrt(1-f)/2;
 587                  f=f*4000+0.5;
 588                  TestData[i]=f;
 589          } */
 590          long Tests(char i,unsigned int wt)

⌨️ 快捷键说明

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