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

📄 main.lst

📁 自动检测电容值
💻 LST
📖 第 1 页 / 共 4 页
字号:
 888   2              case 7:LcdPrint("C4=");ComPrint("C4=  ");DisplayData(i,TestData[i]);LcdPrint("\n");ComPrint(" PF\n");brea
             -k;
 889   2              //case 0x90:ComPrint("Parameter:\n");break;
 890   2              //case 0x80:ComPrint("MinR= ");DisplayData(i,MinR);ComPrint("0 KΩ\n");break;
 891   2              //case 0x81:ComPrint("MaxR= ");DisplayData(i,MaxR);ComPrint("0 KΩ\n");break;
 892   2              //case 0x82:ComPrint("MinC=  ");DisplayData(i,MinC);ComPrint(" PF\n");break;
 893   2              //case 0x83:ComPrint("MaxC=  ");DisplayData(i,MaxC);ComPrint(" PF\n");break;
 894   2              }
 895   1      }
 896          void DisplayData(unsigned char i,unsigned int n)
 897          {
 898   1              #define BUFLEN 6
 899   1              char bf[BUFLEN];
 900   1              char j;
 901   1              bf[BUFLEN-1]=0;
 902   1              if(i<0x80 && n>3000)
 903   1              {
 904   2                      for(j=0;j<BUFLEN-1;j++) bf[j]='-';
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 16  

 905   2              }
 906   1              else
 907   1              {
 908   2                      for(j=1;j<BUFLEN-1;j++) bf[j]='0';
 909   2                      bf[0]=' ';
 910   2                      for(j=BUFLEN-2;j>0;j--)
 911   2                      {
 912   3                              bf[j]=n%10+'0';
 913   3                              n/=10;
 914   3                      }
 915   2                      bf[0]=n+'0';
 916   2                      if(i<4)
 917   2                      {
 918   3                              if(bf[1]!='0')
 919   3                              {
 920   4                                      bf[4]=bf[3];
 921   4                                      bf[3]='.';
 922   4                              }
 923   3                              else
 924   3                              {
 925   4                                      bf[1]=bf[2];
 926   4                                      bf[2]='.';
 927   4                              }
 928   3                      }
 929   2                      else
 930   2                      {
 931   3                              for(j=0;j<BUFLEN-2;j++)
 932   3                              {
 933   4                                      if(bf[j]=='0')
 934   4                                      {
 935   5                                              bf[j]=' ';
 936   5                                      }
 937   4                                      else
 938   4                                      {
 939   5                                              break;
 940   5                                      }
 941   4                              }
 942   3                      }
 943   2              }
 944   1              if(i<0x80)
 945   1              {
 946   2                      bf[0]=' ';
 947   2                      LcdPrint(& bf[1] );
 948   2              }
 949   1              ComPrint(bf);
 950   1      }
 951          void LongPrint(unsigned long d)
 952          {
 953   1              char bf[11],i,dv;
 954   1              bit e;
 955   1              e=0;
 956   1              for(i=0;i<9;i++) bf[i]=' ';
 957   1              i=9;
 958   1              for(i=9;i>=0;i--)
 959   1              {
 960   2                      dv=d % 10;
 961   2                      d/=10;
 962   2                      bf[i]=dv+'0';
 963   2                      if(d==0) break;
 964   2              }
 965   1              bf[10]=0;
 966   1              ComPrint(bf);
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 17  

 967   1      }
 968          void Timer1 (void) interrupt TIMER1INT  using 1
 969          {
 970   1              tn++;
 971   1      }
 972          char Remote(void)
 973          {
 974   1              if(RI)
 975   1              {
 976   2                      RI=0;
 977   2                      return(SBUF);
 978   2              }
 979   1              return(0);
 980   1      }
 981          bit CheckAuto(bit AUTO)
 982          {
 983   1              char i,j;
 984   1              i=0;j=0;
 985   1              while(AUTO!=AUTOSTEP)
 986   1              {
 987   2                      DelayMs(10);
 988   2                      if(++i>3)
 989   2                      {
 990   3                              AUTO=AUTOSTEP;
 991   3                              break;
 992   3                      }
 993   2                      if(++j>20)      break;
 994   2              }
 995   1              return(AUTO);
 996   1      }
 997          char WaitKey(void)
 998          {
 999   1              char i,c;
1000   1              ComPrint("Waiting Key\n");
1001   1              twingle=0;
1002   1              while(!STEP)
1003   1              {
1004   2                      c=Remote();
1005   2                      if(c) return(c);
1006   2              }
1007   1              while(1)
1008   1              {
1009   2                      c=Remote();
1010   2                      if(c) return(c);
1011   2                      if(STEP)
1012   2                      {
1013   3                              i=0;
1014   3                      }
1015   2                      else
1016   2                      {
1017   3                              i++;
1018   3                              DelayMs(10);
1019   3                      }
1020   2                      if(i>3) break;
1021   2              }                               
1022   1              AUTO=CheckAuto(AUTO);
1023   1              if(AUTO)
1024   1              {
1025   2                      return('A');
1026   2              }
1027   1              else
1028   1              {
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 18  

1029   2                      return('S');
1030   2              }
1031   1      }
1032          
1033          void Initial(void)
1034          {
1035   1              EA=0;
1036   1              IE=0;
1037   1              P0=0xff;
1038   1              IT0=IT1=1;
1039   1              P1=P2=P3=0xff;
1040   1      //      INPORT=0XFF;
1041   1              TMOD=0X11;      //timer0:mode1(low 4bit),timer1:mode1(high 4bit)
1042   1              EX0=0;
1043   1              EX1=0;
1044   1      
1045   1              ET0=1;
1046   1              TR0=1;
1047   1              TL0=CYCLE % 256;
1048   1              TH0=CYCLE/256;
1049   1      //      TL2=RCAP2L=CYCLE % 256;
1050   1      //      TH2=RCAP2H=CYCLE/256;
1051   1      //      T2CON=0;
1052   1      //      TR2=1;
1053   1      //      ET2=1;
1054   1      
1055   1              TL2=RCAP2L=0xb1;
1056   1              TH2=RCAP2H=0xff;
1057   1          SCON  = 0x50;       //串口模式:  模式1 接收允许
1058   1              T2CON=0x30;
1059   1              TI=1;
1060   1              TR2=1;
1061   1      //    SCON  = 0x50;       //串口模式:  模式1 接收允许
1062   1      //    TMOD |= 0x20;       //定时器模式:定时器工作在模式2
1063   1      //    PCON |= 0x80;       //SMOD=1; 倍波特率
1064   1      //    TH1   = 0xF3;       //Baud:9600fosc=24MHz
1065   1      //      ES    = 0;          //串行中断允许
1066   1      //    TI = 1;
1067   1      //    TR1 = 1;          //定时器1启动 
1068   1      
1069   1              EA=1;
1070   1      } 
1071          void LcdClear(void)
1072          {
1073   1              LCM_RST=0;
1074   1              delay(10);
1075   1              LCM_RST=1;
1076   1              init_lcd();
1077   1              CurrentX=CurrentY=0;
1078   1              ComPrint("\n");
1079   1      }
1080          void LcdPrint(char * DisBuf)
1081          {
1082   1              code unsigned char Line[]={0x80,0x90,0x88,0x98}; 
1083   1              char kk=0;
1084   1      //      printf(DisBuf);
1085   1              wr_lcd(comm,0x30);
1086   1              while(DisBuf[kk])
1087   1              {
1088   2                      if(DisBuf[kk]=='\n'||CurrentX>=16)
1089   2                      {
1090   3                              CurrentX=0;
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 19  

1091   3                              CurrentY++;
1092   3                              if(CurrentY<4) wr_lcd(comm,Line[CurrentY]);
1093   3                      }
1094   2                      else
1095   2                      {
1096   3                              if(CurrentY>=4)
1097   3                              {
1098   4                                      LcdClear();
1099   4                              }
1100   3                              wr_lcd(dat,DisBuf[kk]);
1101   3                              CurrentX++;
1102   3                      }
1103   2                      kk++;
1104   2              }
1105   1      //      ComPrint(DisBuf);
1106   1              return;
1107   1      }
1108          void DelayMs(int a)
1109          {
1110   1              td=a/5;
1111   1              while(td);
1112   1      } 
1113          
1114          
1115          /*------------------初始化-----------------*/
1116          void init_lcd (void)
1117          {
1118   1        rst=1;
1119   1       // psb=0;
1120   1        wr_lcd (comm,0x30);  /*30---基本指令动作*/   
1121   1        wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
1122   1        delay (100);
1123   1        wr_lcd (comm,0x06);  /*光标的移动方向*/
1124   1        wr_lcd (comm,0x0c);  /*开显示,关游标*/
1125   1      }
1126          
1127          /*----------------------------------------------*/
1128          void wr_lcd (uchar dat_comm,uchar content)
1129          {
1130   1        uchar a,i,j;
1131   1        delay (50);
1132   1        a=content;
1133   1        cs=1;
1134   1        sclk=0;
1135   1        std=1;
1136   1        for(i=0;i<5;i++)              //先输入五个连续的1   -----》是同步位字符串,此时输入记数被重置并且串行传输被同步。
1137   1        {
1138   2          sclk=1;
1139   2          sclk=0;
1140   2        }
1141   1        std=0;                                //RW位
1142   1        sclk=1;
1143   1        sclk=0;
1144   1        if(dat_comm)             //RS位
1145   1          std=1;   //data
1146   1        else
1147   1          std=0;   //command
1148   1        sclk=1;
1149   1        sclk=0;                          //第8位规定为0
1150   1        std=0;
1151   1        sclk=1;
1152   1        sclk=0;
C51 COMPILER V8.02   MAIN                                                                  06/16/2007 16:57:02 PAGE 20  

1153   1        for(j=0;j<2;j++)
1154   1        {
1155   2          for(i=0;i<4;i++)   //每一个8位指令将被分为两个字节接收到.
1156   2          {
1157   3            a=a<<1;
1158   3            std=CY;
1159   3            sclk=1;
1160   3            sclk=0;
1161   3          }
1162   2          std=0;
1163   2          for(i=0;i<4;i++)
1164   2          {
1165   3            sclk=1;
1166   3            sclk=0;
1167   3          }
1168   2        }
1169   1      }
1170          /*-----------------------------------*/
1171          void delay (uint us)   //delay time
1172          {
1173   1        while(us--);
1174   1      }



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   5533    ----
   CONSTANT SIZE    =    662    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     85      90
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5       6
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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