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

📄 main.lst

📁 自动检测电容值
💻 LST
📖 第 1 页 / 共 4 页
字号:
 591          {
 592   1              char n;
 593   1              unsigned long ul,ulc;
 594   1              ul=2;
 595   1              for(n=0;n<4;n++)
 596   1              {
 597   2                      DelayMs(10);
 598   2                      ulc=Test0(i,wt);
 599   2                      if(ulc==-1) return(-1);
 600   2                      ul+=ulc;
 601   2              }
 602   1              ul>>=2;
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 11  

 603   1              return(ul);
 604   1      }
 605          void  LedSend8(char d) 
 606          {
 607   1              uchar i;
 608   1              CLK=0;
 609   1              for(i=0;i<8;i++)
 610   1              {
 611   2                       d<<=1;
 612   2                       DA=CY;delay (10);       
 613   2                   CLK=1;delay (10);   
 614   2                   CLK=0;delay (10);
 615   2              }
 616   1      }
 617          void  LedShow(char hb,char lb) 
 618          {
 619   1              CS=0;
 620   1              delay(10);
 621   1      //      hb>>=1;
 622   1      //      if(CY)
 623   1      //      {
 624   1      //              lb|=0x80;
 625   1      //      }
 626   1      //      else
 627   1      //      {
 628   1      //              lb&=~0x80;
 629   1      //      }
 630   1              LedSend8(hb);   
 631   1              LedSend8(lb);   
 632   1              CS=1;
 633   1              delay (20);
 634   1              CS=0;
 635   1      }
 636          void LedTest(void)
 637          {
 638   1              char d;
 639   1              char i;
 640   1      //      twingle=1;
 641   1              d=1;
 642   1              LedShow(0xff,~0x40);DelayMs(400);
 643   1              LedShow(~0x40,0xff);DelayMs(400);
 644   1              for(i=0;i<6;i++)
 645   1              {
 646   2                      LedShow(0xff,~(d));DelayMs(400);
 647   2                      d<<=1;
 648   2              }
 649   1              d=1;
 650   1              for(i=0;i<6;i++)
 651   1              {
 652   2                      LedShow(~(d),0xff);DelayMs(400);
 653   2                      d<<=1;
 654   2              }
 655   1              LedShow(0x7f,0);DelayMs(800);
 656   1              LedShow(0,0x7f);DelayMs(800);
 657   1              LedShow(0x7f,0x7f);
 658   1      }
 659          void Bell(unsigned int t)
 660          {
 661   1              BELL=0;
 662   1              DelayMs(t);
 663   1              BELL=1;
 664   1      }
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 12  

 665          void Timer0 (void) interrupt TIMER0INT // using 1
 666          {
 667   1              TL0=CYCLE % 256;
 668   1              TH0=CYCLE/256;  
 669   1      //      TF2=0;
 670   1      //      EXF2=0;
 671   1      //      if(wtt) wtt--;
 672   1              if(td) td--;
 673   1      //      if(StartTest) return;
 674   1      //      if(twingle) twingledo=1;
 675   1      //      if(twingledo)
 676   1      //      {
 677   1      //              if(!(dt--))
 678   1      //              {
 679   1      //                      dt=30;
 680   1      //                      if(Dis=!Dis)
 681   1      //                      {
 682   1      //                              LedShow(0xff,0xff);
 683   1      //                      }
 684   1      //                      else
 685   1      //                      {
 686   1      //                              LedShow(OkLed,~OkLed);
 687   1      //                              if(!twingle) twingledo=0;
 688   1      //                      }
 689   1      //              }
 690   1      //      }
 691   1      }
 692          long Test0(char i,unsigned int wt)
 693          {
 694   1              bit rc;
 695   1              bit Testing;
 696   1              long ul;
 697   1              unsigned char j;
 698   1              char BIE;
 699   1              unsigned char tc;
 700   1              bit lowint;
 701   1              if(i>=16) return(0);
 702   1              CB=0;                                                   //CB=0时主测节点电容(侧电阻时)接+VCC充电,或接+VCC充电停振(测电容时)
 703   1              EX1=ET1=TR1=0;                                  //
 704   1              switch(i)                                               //0,1,2,3为4被测电阻 4,5,6,7为4被测电容 8为标准电阻 9为标准电容
 705   1              {
 706   2              case 0:
 707   2              case 1:
 708   2              case 2:
 709   2              case 3:
 710   2              case RstdNo:
 711   2                      TMOD|=GATE1;                            //电阻测试,TIMER1 INT1选通计时,为高开始计时
 712   2                      rc=1;                                    
 713   2                      CA=0;                                           //CA=0:选择电阻
 714   2                      tc=0;                                           //测量次数-1
 715   2                      break;  //R:rc=1 C:rc=0
 716   2              default:
 717   2                      TMOD&=~GATE1;                           //电容测试,TIMER1 软件控制计时
 718   2                      CA=1;                                           //CA=0:选择电容
 719   2                      tc=200;                                         //测量次数-1
 720   2                      rc=0;
 721   2                      break;
 722   2              }
 723   1              P2=(P2&0XF0)|i|0XC0;                                    //通道设定
 724   1              tn=TH1=TL1=0;                                   //TIMER1 数值设为0
 725   1              if(!rc)                                                 
 726   1              {
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 13  

 727   2                      DelayMs(50);
 728   2                      CB=1;                                           //测电容,断开充电,让测电容电路先振荡
 729   2              }               //rc=0为电容测定
 730   1              else
 731   1              {
 732   2                      DelayMs(200);
 733   2              }
 734   1              //begin Test
 735   1              StartTest=0;
 736   1              Testing=0;
 737   1              td=wt;  //等待 
 738   1              j=0;
 739   1              BIE=IE;
 740   1              IE=0x80;
 741   1              ET0=1;                                                  //定时中断保持
 742   1              lowint=INT1;
 743   1              while(td)
 744   1              {
 745   2                      if(Testing)
 746   2                      {
 747   3                              if(lowint==INT1) {j=0;continue;}
 748   3                              if(++j<1) continue;
 749   3                              j=0;
 750   3                              lowint=INT1;
 751   3                              if(!lowint)
 752   3                              {
 753   4                                      if(tc--)
 754   4                                      {
 755   5                                              TR1=1;
 756   5                                              continue;
 757   5                                      }
 758   4                                      else
 759   4                                      {
 760   5                                              TR1=0;
 761   5                                              ET1=0;
 762   5                                              break;
 763   5                                      }
 764   4                              }
 765   3                      }
 766   2                      else
 767   2                      {
 768   3                              if(!INT1) {j=0;continue;}
 769   3                              j++;
 770   3                              if(j<1) continue;
 771   3                              StartTest=1;
 772   3                              Testing=1;
 773   3                              IE1=0;
 774   3                              TF1=0;  
 775   3                              ET1=1;
 776   3                              if(rc)
 777   3                              {
 778   4                                      TR1=1;    //测电阻
 779   4                              }
 780   3                              CB=1;
 781   3                              j=0;
 782   3                      }
 783   2              }
 784   1              IE=BIE;
 785   1              CB=0;
 786   1              TR1=0;
 787   1              EX1=0;
 788   1              if(td)
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 14  

 789   1              {
 790   2                      ul=256L*(tn*256L+TH1)+TL1;
 791   2              }
 792   1              else
 793   1              {
 794   2                      ul=-1;
 795   2              }
 796   1      //      if (ul<80000)
 797   1      //              ul=ul;
 798   1      
 799   1              StartTest=0;
 800   1              return(ul);
 801   1      }
 802          void Test(char i)
 803          {
 804   1              long ul;
 805   1              if(i<0||i>=10) return;
 806   1              ul=Test0(i,50);
 807   1              if(i>=4||i==CstdNo)
 808   1              {
 809   2                      if(ul<ParamC0[i])
 810   2                      {
 811   3                              TestData[i]=0;
 812   3                      }
 813   2                      else
 814   2                      {
 815   3                              TestData[i]=(float)nC*(ul-ParamC0[i])/StdC+0.5;
 816   3                      }
 817   2              }
 818   1              else
 819   1              {
 820   2                      if(ul==-1)
 821   2                      {
 822   3                              TestData[i]=-1;
 823   3                      }
 824   2                      else
 825   2                      {
 826   3      //                      if(ParamC0[i]==-1)
 827   3      //                      {
 828   3                                      TestData[i]=(float)nR*ul/StdR+0.5;
 829   3      //                      }
 830   3      //                      else
 831   3      //                      {
 832   3      //                              if(ul>ParamC0[i])
 833   3      //                              {
 834   3      //                                      TestData[i]=0;
 835   3      //                              }
 836   3      //                              else
 837   3      //                              {
 838   3      //                                      TestData[i]=1000.0*ul*ParamC0[i]/(ParamC0[i]-ul)/StdR+0.5;
 839   3      //                              }
 840   3      //                      }
 841   3                      }
 842   2              }
 843   1      }
 844          void Check(char i)
 845          {
 846   1              //char i;
 847   1              //OkLed=0;
 848   1              if(i<6)
 849   1              {
 850   2                      if(i<4)
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 15  

 851   2                      {
 852   3                              if(TestData[i]>MinR&&TestData[i]<MaxR)
 853   3                              {
 854   4                                      OkLed|=1<<i;
 855   4                              }
 856   3                      }
 857   2                      else
 858   2                      {
 859   3                              if(TestData[i]>MinC&&TestData[i]<MaxC)
 860   3                              {
 861   4                                      OkLed|=1<<i;
 862   4                              }
 863   3                      }
 864   2                      LedShow((OkLed)|(0xfe<<i),(~(OkLed))|(0xfe<<i));
 865   2      //              OkLed=(OkLed)|(0xfe<<i);
 866   2      //              NgLed=(~(OkLed))|(0xfe<<i);
 867   2              }
 868   1              else
 869   1              {
 870   2                      if((OkLed&=0x3f)==0x3f)
 871   2                      {
 872   3                              OkLed|=ALLOK;
 873   3                      }
 874   2                      LedShow(OkLed,~OkLed);
 875   2              }
 876   1      }
 877          void Display(char i)
 878          {
 879   1              switch(i)
 880   1              {
 881   2              case 0:LcdPrint("R1=");ComPrint("R1=  ");DisplayData(i,TestData[i]);LcdPrint(" ");ComPrint(" MΩ\n");brea
             -k;
 882   2              case 1:LcdPrint("R2=");ComPrint("R2=  ");DisplayData(i,TestData[i]);LcdPrint("\n");ComPrint(" MΩ\n");bre
             -ak;
 883   2              case 2:LcdPrint("R3=");ComPrint("R3=  ");DisplayData(i,TestData[i]);LcdPrint(" ");ComPrint(" MΩ\n");brea
             -k;
 884   2              case 3:LcdPrint("R4=");ComPrint("R4=  ");DisplayData(i,TestData[i]);LcdPrint("\n");ComPrint(" MΩ\n");bre
             -ak;
 885   2              case 4:LcdPrint("C1=");ComPrint("C1=  ");DisplayData(i,TestData[i]);LcdPrint(" ");ComPrint(" PF\n");break
             -;
 886   2              case 5:LcdPrint("C2=");ComPrint("C2=  ");DisplayData(i,TestData[i]);LcdPrint("\n");ComPrint(" PF\n");brea
             -k;
 887   2              case 6:LcdPrint("C3=");ComPrint("C3=  ");DisplayData(i,TestData[i]);LcdPrint(" ");ComPrint(" PF\n");break
             -;

⌨️ 快捷键说明

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