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

📄 max134.lst

📁 数字万用表芯片MAX134的驱动,包括一些资料,知识源于网络
💻 LST
📖 第 1 页 / 共 2 页
字号:
 159   2              MRF();  //设置并写入电阻测量相应的控制字节
 160   2              
 161   2              EOCR(); //读取转换结果//
 162   2      
 163   2      
 164   2             if(Y>4500 && Y<5500)  //检测转换结果,如果转换结果在大于4500并小于5500的区间范围内
 165   2                {
 166   3                              Y=Y-4952;         //可以省去,说明输入为空,资料给定值也为49520//
 167   3                  Rx=0;
 168   3                }
 169   2             else                       
 170   2                        { 
 171   3                              Y=Y+Radjust;        //数据结果处理 待补//
 172   3                  if(RangeCode==1)
 173   3                    {
 174   4                                 Rx=Y*10;
 175   4                    }
 176   3                  else
 177   3                                {  
 178   4                                 Rx=Y*Rref;
C51 COMPILER V8.02   MAX134                                                                05/24/2007 12:05:40 PAGE 4   

 179   4                                }
 180   3                  Rx=Rx/5;  //转换代码到结果的转换公式//
 181   3                 }
 182   2               //Rx=Rx+0;
 183   2                  Y=Rx;
 184   2                      if(Y>=10000||Y<0)//纠正错误数据
 185   2                                Y=0;
 186   2                   //Y=4952;
 187   2                       
 188   2              }
 189   1      
 190   1      //-------------------------------------------------------------------------------------------------
 191   1                 else if(FSCode==4||FSCode==5)
 192   1                {
 193   2                         P3=0XF3;        //前端形成电流测量电路//
 194   2      //LPI1:      
 195   2                 MIF();
 196   2      //LPI2:      
 197   2                 EOCR(); //读取转换结果//
 198   2                         //数据结果处理 待补//
 199   2                 //if(FSCodeM==FSCode&&RangeCodeM==RangeCode) goto LPI2;
 200   2                 //if(!RangeCodeM==RangeCode) goto LPI1;
 201   2                 //else break;  //
 202   2                }
 203   1      //-------------------------------------------------------------------------------------------------
 204   1                      else if(FSCode==6)
 205   1                {
 206   2                              //P3=0XF1;        //前端形成通断测试电路//
 207   2                      //P3=0XE1;
 208   2      
 209   2                 MCF();
 210   2      //LPC:      
 211   2                 EOCR(); //读取转换结果//
 212   2      
 213   2                      Rx=Y+20;    //校正由于串连PTC而引起的误差。数据结果处理 待补//
 214   2                      Rx=Rx*Rref;
 215   2                      Rx=Rx/5;  //转换代码到结果的转换公式//
 216   2                      if(Rx>-50&&Rx<50) //test continuity, if less than 50 OHM, mesn the circuit is shorten//
 217   2                   {
 218   3                      P3&=0X7F; //写控制有效//
 219   3                      P1=0X28;  // beeper on//
 220   3                      delay50ms();
 221   3                      P1=0X08;
 222   3                      P3|=0X80; //关写控制//
 223   3                      //cr0=0X06; //set the information of beeper on//
 224   3                   }
 225   2                      if(Y>4500&&Y<5500)
 226   2                    {
 227   3                                      Y=Y-4952;      //说明输入为空,资料给定值也为49520//
 228   3                      Rx=0;
 229   3                    }
 230   2                      Rx=Rx+0;
 231   2                      //if(FSCodeM==FSCode) goto LPC;
 232   2                 //else break;  //
 233   2                 }
 234   1      //--------------------------------------------------------------------------------------------------
 235   1                      else if(FSCode==7)
 236   1                {
 237   2                              //P3=0XF5;        //前端形成二极管测试电路//
 238   2                      //P3=0XF9;        //前端形成电阻测量电路,需在电阻模式下完成//
 239   2                      MDF();
 240   2                //    LPD:
C51 COMPILER V8.02   MAX134                                                                05/24/2007 12:05:40 PAGE 5   

 241   2                          EOCR(); //读取转换结果//
 242   2                          //数据结果处理  应该除以2才得到正确结果 待补//
 243   2                  Y=Y+0;
 244   2                  //
 245   2                              //if(FSCode==7) goto LPD;
 246   2                 //else break;  //
 247   2                }
 248   1      
 249   1              //      else 
 250   1              //      {
 251   1              //              goto RESTAR;
 252   1              //      }
 253   1                  sx_data_disp();
 254   1      
 255   1      }
 256          
 257          
 258           /******************************************
 259           * 涵数名:  void delay(void)
 260           * 
 261           *
 262           * 涵数功能: 延时
 263           *******************************************/
 264            void delay(void)
 265           {
 266   1        ;
 267   1       }
 268            /******************************************
 269           * 涵数名:  void delay1(void)
 270           * 
 271           *
 272           * 涵数功能: 延时
 273           *******************************************/
 274          
 275            void delay1(void)
 276            {
 277   1         for(j=0;j<3000;j++){;}
 278   1        }
 279            /******************************************
 280           * 涵数名:  void delay50MS(void)
 281           * 
 282           *
 283           * 涵数功能: 延时
 284           *******************************************/
 285            void delay50ms()
 286            { 
 287   1              for(j=0;j<5000;j++){;}
 288   1        }
 289            /******************************************
 290           * 涵数名:    void EOCR()
 291           * 
 292           *
 293           * 涵数功能: 从MAX134读取结果
 294           * 备注:P3=控制口;P1=数据口
 295           ******************************************/
 296            void EOCR()        /*转换结果读取函数*/
 297            { /*extern int Y; */
 298   1              //等待EOC变为高电平
 299   1               P1=0X88;  //  
 300   1               delay1();
 301   1               WR_134=0;
 302   1               delay1();
C51 COMPILER V8.02   MAX134                                                                05/24/2007 12:05:40 PAGE 6   

 303   1               WR_134=1;      
 304   1               delay1();
 305   1              
 306   1      
 307   1      LP1: P3|=0X08;/*while(!P3^3); wait EOC,get the ad convertion,*/ //P3.3=EOC-------------------------
 308   1          delay();        /*need delay??*/
 309   1          sp3=P3;
 310   1          sp3&=0X08;  //检测是EOC是不是有效
 311   1          if(sp3==0)   //如果是低就标志没有输出有效标志
 312   1              {
 313   2                      goto LP1; /*test the P3^3 0 or 1*/ //如果没有输出有小信号就返回.
 314   2              }
 315   1          else         //MAX134输出有效标志
 316   1              {
 317   2                      //WD=0     //将写信号设置为有效状态.
 318   2                      P3&=0X7F;  /*P3.7置零,写控制信号WD有效*/ //P3.7=RD--------------------------------------
 319   2              }               //---------------------------------------------------------------------------
 320   1              
 321   1                          //EOC输出有效信号后,要在21个周期以后.有效数据才会出现,下面输入的一些无效地址是为了延时
 322   1              P1|=0X0F;                  //P1低四位送F  //送无效地址的同时将读P1.3变成无效状态
 323   1              delay();                    //
 324   1              P1=0X88;                           //P1=0X88  RD=0;HOLD=1;  ???????????????????????//应该是先置保持模式,在读转换结

⌨️ 快捷键说明

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