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

📄 jcb.lst

📁 绝缘检测系统
💻 LST
字号:
C51 COMPILER V8.05a   JCB                                                                  10/16/2008 19:15:36 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE JCB
OBJECT MODULE PLACED IN jcb.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE jcb.c DEBUG OBJECTEXTEND

line level    source

   1          /************************************************* 
   2          ********
   3          ********
   4          ********
   5          ********初稿:2005/1/4
   6          ********
   7          ********修改:2005-10-31
   8          **************************************************/
   9          #include<stdio.h>
  10          #include<reg51.h>
  11          #include<string.h>
  12          #include <intrins.h>
  13          
  14          #define Uchar unsigned char
  15          #define Uint  unsigned int
  16          
  17          Uchar m1,dis,n1,n2,light;
  18          
  19          sbit  alarm=P3^5;       //报警继电器
  20          sbit  alarm1=P3^6;       //蜂鸣器 
  21          sbit  alarm2=P3^7;       //报警灯
  22          sbit  SD=P1^0;       //试验
  23          sbit  XY=P1^1;       //消音输入
  24          bit   flash;
  25          bit   sign1,sign2;
  26          
  27          sbit  DCLK1  =P3^2;             //7816 电压
  28          sbit  DOUT1  =P1^6;
  29          sbit  DCS1   =P3^4;    
  30          sbit  DOUT2  =P3^3;             //7816 电流    
  31                                      //41010
  32          sbit SI=P1^4;
  33          sbit SCK=P1^3;
  34          sbit CS2=P1^2;
  35          
  36          sbit  AD1=P0^5;                 //选择开关
  37          sbit  AD2=P0^6;
  38          sbit  AD3=P0^7;
  39           Uchar select;           //选择档位
  40          
  41          sbit  cathode=P1^7;     //负极
  42          sbit  anode=P1^5;       //正极
  43          Uint num,num5,num1;
  44          Uint turn,state;
  45          
  46          Uint  av1,av2;
  47          
  48          Uint  VOLT,CURR,aa,aa1,aa2,aa3,aa4,aa5;    //电压,电流
  49          unsigned long  int mid1,mid2,mid3;
  50          Uchar n;
  51          void VIads7816(void)
  52          {
  53   1      Uchar i;
  54   1      Uchar al=0,ah=0;
  55   1      Uchar bl=0,bh=0;
C51 COMPILER V8.05a   JCB                                                                  10/16/2008 19:15:36 PAGE 2   

  56   1      av1=0;av2=0;
  57   1      DOUT1=1;
  58   1      DOUT2=1;
  59   1      DCS1=0;
  60   1      
  61   1      DCLK1=1;
  62   1      DCLK1=0;
  63   1      DCLK1=1;
  64   1      DCLK1=0;
  65   1      
  66   1      for(i=0;i<4;i++)
  67   1      {
  68   2      DCLK1=1;
  69   2      DCLK1=0;
  70   2      ah=(ah<<1);
  71   2      bh=(bh<<1);
  72   2      if(DOUT1)
  73   2      {
  74   3      ah=ah|0x01;
  75   3      }
  76   2      if(DOUT2)
  77   2      {
  78   3      bh=bh|0x01;
  79   3      }
  80   2      }
  81   1      
  82   1      for(i=0;i<8;i++)
  83   1      {
  84   2      DCLK1=1;
  85   2      DCLK1=0;
  86   2      al=(al<<1);
  87   2      bl=(bl<<1);
  88   2      if(DOUT1)
  89   2      {
  90   3      al=al|0x01;
  91   3      }
  92   2      if(DOUT2)
  93   2      {
  94   3      bl=bl|0x01;
  95   3      }
  96   2      
  97   2      }
  98   1      DCS1=1;
  99   1      av1=ah;av1<<=8;av1|=al;//得到AD值
 100   1      av2=bh;av2<<=8;av2|=bl;//得到AD值
 101   1      }
 102          
 103          
 104          void MCP41010(void)          //量程0-255
 105                  {       
 106   1              unsigned char k,p,x;            
 107   1                  x=turn;
 108   1                 
 109   1                      k=0x13;    //控制字,写数据,两个都有效
 110   1                      CS2=0;          
 111   1      for(p=0;p<8;p++)
 112   1         { 
 113   2                      SCK=0;
 114   2                      _nop_();                
 115   2                      _nop_(); 
 116   2                              
 117   2                              SI=(bit)(k&0x80);
C51 COMPILER V8.05a   JCB                                                                  10/16/2008 19:15:36 PAGE 3   

 118   2                      SCK=1;          
 119   2                      _nop_();
 120   2                      _nop_(); 
 121   2                      k<<=1;                  
 122   2         }
 123   1                              _nop_();
 124   1                      _nop_(); 
 125   1                              _nop_();
 126   1                      _nop_(); 
 127   1                              _nop_(); 
 128   1      for(p=0;p<8;p++)
 129   1              {       
 130   2                              SCK=0;                  
 131   2                      _nop_();
 132   2                      _nop_();      
 133   2                              SI=(bit)(x&0x80);                       
 134   2                      SCK=1;                  
 135   2                      _nop_();
 136   2                      _nop_();           
 137   2                              x<<=1;
 138   2          }
 139   1                              _nop_();
 140   1                      _nop_(); 
 141   1                              _nop_();
 142   1                      _nop_(); 
 143   1                              _nop_();
 144   1                         
 145   1                              CS2=1;
 146   1                      
 147   1      }
 148          
 149          
 150          void begin(void)
 151          { 
 152   1      SCON=0x50;
 153   1      TMOD|=0X21;
 154   1      TH1=0xFF;
 155   1      TL1=0xFF;
 156   1      //TH0=0xFA;
 157   1      //TL0=0xFA;
 158   1      PCON=PCON|0X80;
 159   1      TR1=1;
 160   1      TI=1;
 161   1      ET0=1;                                  /*T0 Enable*/
 162   1      TR0 = 1;
 163   1      EA=1;
 164   1      alarm=1;
 165   1      alarm1=alarm2=1;
 166   1      }
 167          
 168          main()
 169          {
 170   1      Uint z1;
 171   1      begin();
 172   1      while(1)
 173   1         {
 174   2          if(XY==0)
 175   2              {
 176   3                if(sign1|sign2)
 177   3                z1=1;
 178   3                else
 179   3                z1=0;
C51 COMPILER V8.05a   JCB                                                                  10/16/2008 19:15:36 PAGE 4   

 180   3              }
 181   2      
 182   2      if(((XY==0)|(SD==0)|(sign1||sign2))==0)
 183   2      {alarm=1;alarm1=1;alarm2=1;}
 184   2      else
 185   2      {
 186   3       if(SD==0)      alarm1=0;
 187   3       else           alarm1=((((SD==0)|((sign1|sign2)&flash)|z1)));
 188   3      
 189   3      
 190   3      //alarm1=(((!(SD==0)|((sign1|sign2)&flash)|z1)));
 191   3      alarm2=!((((SD==0)|((sign1|sign2)&flash)|z1)));
 192   3      alarm=!((SD==0)|(sign1&sign2));}
 193   2      
 194   2        if((sign1|sign2)==0)
 195   2        {
 196   3        z1 = 0;
 197   3        }
 198   2       }
 199   1      }
 200          
 201          
 202          
 203          void intt3(void) interrupt 1
 204          { static  Uchar count;
 205   1                                
 206   1        if(AD1&AD2&AD3)   select=0;
 207   1        if(AD1&AD2&!AD3)      select=1;
 208   1        if(AD1&!AD2&AD3)      select=2;
 209   1        if(AD1&!AD2&!AD3)     select=3;
 210   1        if(!AD1&AD2&AD3)      select=4;
 211   1      
 212   1      
 213   1      
 214   1          if(num<31) num++;
 215   1        else{num=0;count++;}
 216   1      
 217   1      if(num<=15)                                             //测量正
 218   1              {cathode=1; anode=0;} 
 219   1                  
 220   1                      
 221   1      
 222   1      if(num>15)                                              //测量负
 223   1              {cathode=0; anode=1;}   
 224   1      
 225   1        if(num==10) { VIads7816();                             
 226   2                                      mid1=av1;                               
 227   2                      mid2=av2;                               
 228   2                      mid3=(mid1*47/mid2);
 229   2                      if(mid3>3000) mid3=3000;
 230   2                      aa1=mid3;              
 231   2                     }
 232   1       if(num==25) { VIads7816();                              
 233   2                                      mid1=av1;                               
 234   2                      mid2=av2;                               
 235   2                      mid3=(mid1*47/mid2);
 236   2                      if(mid3>3000) mid3=3000;
 237   2                      aa2=mid3;               
 238   2                     }  
 239   1      
 240   1       if(aa1<=aa2) aa3=aa1;
 241   1         else       aa3=aa2;     
C51 COMPILER V8.05a   JCB                                                                  10/16/2008 19:15:36 PAGE 5   

 242   1                  
 243   1                      num5++;
 244   1                      if(num5<=10) {
 245   2                       aa5+=aa3;}
 246   1                      else {aa=aa5/10;
 247   2                               aa5=0;
 248   2                               num5=0;}
 249   1      
 250   1        if(count<3)
 251   1        aa=250;
 252   1        else
 253   1        count=11;
 254   1      
 255   1                                                     
 256   1      if((num==10)||(num==25))
 257   1                  {   printf("num=%d\n",num);
 258   2                                     
 259   2                      printf("aa=%d\n",aa);
 260   2                            
 261   2                      printf("turn=%d\n",turn);
 262   2                                      
 263   2                      MCP41010();
 264   2                       }
 265   1              
 266   1      
 267   1      
 268   1      
 269   1      if(((num>=5)&(num<15))|((num>=20)&(num<30)))  //取样范围内
 270   1      {if(select==0)      //10K 档
 271   2      {
 272   3              {if (aa<40){if(num<15)   sign1=1; else  sign2=1;}
 273   4              else                    {if(num<15)   sign1=0; else  sign2=0;}
 274   4              }
 275   3      }
 276   2      
 277   2      
 278   2      if(select==1)      //20K 档
 279   2      {
 280   3              {if (aa<51){if(num<15)   sign1=1; else  sign2=1;}
 281   4              else                    {if(num<15)   sign1=0; else  sign2=0;}
 282   4              }
 283   3      }
 284   2      
 285   2      
 286   2      
 287   2      if(select==2)      //50K 档
 288   2      {
 289   3              {if (aa<81){if(num<15)   sign1=1; else  sign2=1;}
 290   4              else                    {if(num<15)   sign1=0; else  sign2=0;}
 291   4              }
 292   3      }
 293   2      
 294   2      
 295   2      if(select==3)     //100 K
 296   2      {
 297   3              {if (aa<132){if(num<15)   sign1=1; else  sign2=1;}
 298   4              else                    {if(num<15)   sign1=0; else  sign2=0;}
 299   4              }
 300   3      }
 301   2      
 302   2      if(select==4)     //200 K
 303   2      {
C51 COMPILER V8.05a   JCB                                                                  10/16/2008 19:15:36 PAGE 6   

 304   3              {if (aa<240){if(num<15)   sign1=1; else  sign2=1;}
 305   4              else                    {if(num<15)   sign1=0; else  sign2=0;}
 306   4              }
 307   3      }
 308   2      }
 309   1      
 310   1      
 311   1      if(aa3<25000) {turn=(aa-30)/160+232;}           //1000K-无穷大
 312   1      if(aa3<=1100) {turn=(aa-30)/40+212;}            //500-1000K
 313   1      if(aa3<=550)  {turn=((aa-30)*34+51816)/300;}            //200-500K
 314   1      if(aa3<=237)  {turn=((aa-30)*36+12000)/100;}            //100-200K
 315   1      if(aa3<=132)  {turn=((aa-30)*122+19176)/200;}            //90-1000K
 316   1      if(aa3<=122)  {turn=((aa-30)*153+16422)/200;}            //80-90K
 317   1      if(aa3<=112)  {turn=((aa-30)*173+14790)/200;}            //70-80K
 318   1      if(aa3<=101)  {turn=((aa-30)*183+14076)/200;}            //60-70K
 319   1      if(aa3<=91)   {turn=((aa-30)*234+11010)/200;}            //50-60K
 320   1      if(aa3<=81)   {turn=((aa-30)*295+7956)/200;}            //40-50K
 321   1      if(aa3<=71)   {turn=((aa-30)*32+660)/20;}            //30-40K
 322   1      if(aa3<=61)   {turn=((aa-30)*429+3672)/200-3;}            //20-30K
 323   1      if(aa3<=51)   {turn=(aa-30)*11*51/200+2;}          //10-20K
 324   1      if(aa3<=40)   {turn=(aa-30)*13*51/200-1;}     //10K
 325   1      if(aa3<=31)   {turn=2;}    
 326   1      
 327   1      if(turn>=255) turn=254;
 328   1      if(turn<=1)   turn=0;
 329   1      
 330   1        if(num1<10) num1++;
 331   1        else{num1=0;flash=!flash;}
 332   1      
 333   1      
 334   1      }
 335          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1963    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     50    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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