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

📄 bishe.lst

📁 这里面包括涡流测厚仪的全部程序
💻 LST
字号:
C51 COMPILER V7.50   BISHE                                                                 05/03/2006 18:34:17 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE BISHE
OBJECT MODULE PLACED IN bishe.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE bishe.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*涡流测厚仪*/
   2          #include<AT89X51.H>
   3          #include"lcd.h"
   4          /*********************************************************************************
   5          管脚定义
   6          *********************************************************************************/
   7          sbit  CS=P0^4;//AD部分
   8          sbit  LOAD=P0^3;
   9          sbit  DINA=P0^2;
  10          sbit  SCLK=P0^1;
  11          sbit  DOUT=P0^0;
  12           uchar bdata a;
  13          uchar bdata b;
  14          sbit a0=a^0;
  15          sbit b0=b^0;
  16          /*******************************************************************************
  17          全局变量定义和数组定义
  18          *******************************************************************************/
  19          
  20          
  21          uchar code table1[]={"0123456789"};
  22          uchar code table2[]={"calibration "};
  23          uchar code table3[]={"please insert al"};
  24          uchar code table4[]={"and press enter"};
  25          uchar code table5[]={"please input num"};
  26          uchar table6[20];
  27          uchar table7[6];
  28          int error;
  29          int n;
  30          uchar counter;
  31          bit scan=0;
  32          bit enabledis=0;
  33          
  34          /*///////////////////////////////////////////////////////////////////////
  35           函数名: 定时器中断服务函数
  36           功能:   产生50ms的时钟延时 
  37           返回值: 无
  38           注意:   无
  39          
  40          //////////////////////////////////////////////////////////////////////*/
  41          
  42          void timer0(void) interrupt 1 using 2
  43          {TL0=(65535-50000)%256;
  44   1       TH0=(65535-50000)/256;
  45   1       scan=1;
  46   1       counter++;
  47   1       if(counter==20)
  48   1        {counter=0;
  49   2        enabledis=1;
  50   2        }
  51   1      }
  52          
  53          void init(void)
  54          {TMOD=0x01;   //16位定时器
  55   1       EA=1;
C51 COMPILER V7.50   BISHE                                                                 05/03/2006 18:34:17 PAGE 2   

  56   1       ET0=1;
  57   1       TH0=(65535-50000)/256;
  58   1       TL0=(65535-50000)%256;
  59   1       
  60   1                      }
  61          
  62          
  63          /*///////////////////////////////////////////////////////////////////////
  64           函数名:  AD芯片接口函数
  65           功能:    负责读取AD芯片的数据并返回转换后的值
  66           返回值:  返回一个16位的数据
  67           注意:         无
  68          
  69          //////////////////////////////////////////////////////////////////////*/
  70          uint ADC(void)
  71          {uint c;
  72   1      uchar ADS,n=0;
  73   1       char i,j;
  74   1        SCLK=0;
  75   1         CS=0;
  76   1         i=0;
  77   1       while(i<16)
  78   1      {   
  79   2      if(i<8)
  80   2              ADS=0x00;
  81   2      else 
  82   2              ADS=0x00;
  83   2        for(j=8;j>=1;j--)
  84   2      {   
  85   3          DINA=ADS&0x80;
  86   3          ADS<<=1;
  87   3          //CLK=0;
  88   3        //_nop_();
  89   3         SCLK=0;
  90   3         SCLK=1;
  91   3      }
  92   2          i=i+8;
  93   2      }
  94   1        // CS=1;
  95   1          SCLK=0;
  96   1      
  97   1       //while(EOC==1);
  98   1      // _nop_();
  99   1      while(n<16)
 100   1      {   
 101   2       if(n<8)
 102   2        for(i=1;i<=8;i++)
 103   2         { a<<=1;
 104   3         SCLK=1;
 105   3          a0=DOUT;
 106   3      //      SCLK=1;
 107   3          SCLK=0;
 108   3         //  a<<=1;             
 109   3         }
 110   2       else 
 111   2        for(i=1;i<=8;i++)
 112   2         { b<<=1;
 113   3         SCLK=1;
 114   3          b0=DOUT;
 115   3              //SCLK=1;
 116   3          SCLK=0;
 117   3         // b<<=1;
C51 COMPILER V7.50   BISHE                                                                 05/03/2006 18:34:17 PAGE 3   

 118   3         }
 119   2          n=n+8;
 120   2       }
 121   1       CS=1;
 122   1       c=a*256+b;
 123   1       return(c);
 124   1      }
 125          
 126          /*///////////////////////////////////////////////////////////////////////
 127           函数名: 数字选择函数
 128           功能:    
 129           返回值: 无
 130           注意:   返回具体键位地址
 131          
 132          //////////////////////////////////////////////////////////////////////*/
 133          select(uchar x)
 134          {
 135   1       n=n*10+x;}
 136          /*///////////////////////////////////////////////////////////////////////
 137           函数名: 键盘扫描函数
 138           功能:    
 139           返回值: 无
 140           注意:   返回具体键位地址
 141          
 142          //////////////////////////////////////////////////////////////////////*/
 143          uchar key(void)    //键盘扫描
 144          {uchar sccode,recode;
 145   1      P1=0xf0;
 146   1      if((P1&0xf0)!=0xf0)
 147   1      {delay(10);
 148   2      if((P1&0xf0)!=0xf0)
 149   2      {delay(100);
 150   3      if((P1&0xf0)==0xf0)
 151   3      sccode=0xfe;
 152   3      while((sccode&0x10)!=0)
 153   3      {P1=sccode;
 154   4      if((P1&0xf0)!=0xf0)
 155   4      {recode=(P1&0xf0)|0x0f;
 156   5      P1=0xf0;
 157   5      return((~sccode)+(~recode));
 158   5          }
 159   4       else
 160   4       sccode=(sccode<<1)|0x01;
 161   4       }
 162   3           }
 163   2              }
 164   1      P1=0xf0;
 165   1              return(0);
 166   1              }
 167          /*///////////////////////////////////////////////////////////////////////
 168           函数名: 键位对应函数
 169           功能:    
 170           返回值: 无
 171           注意:   无
 172          
 173          //////////////////////////////////////////////////////////////////////*/
 174          sweep()
 175          {uchar i;
 176   1      i=key();
 177   1      //if(l==1)
 178   1      {
 179   2      switch(i)
C51 COMPILER V7.50   BISHE                                                                 05/03/2006 18:34:17 PAGE 4   

 180   2      {
 181   3      case 0x11:select(1);break;  //表值对应
 182   3      case 0x21:select(2);break;
 183   3      case 0x41:select(3);break;
 184   3      //case 0x81:check();  break;
 185   3      case 0x12:select(4);break;
 186   3      case 0x22:select(5);break;
 187   3      case 0x42:select(6);break;
 188   3      //case 0x82:normal(); break;
 189   3      case 0x14:select(7);break;
 190   3      case 0x24:select(8);break;
 191   3      case 0x44:select(9);break;
 192   3      //case 0x84:set();    break;
 193   3      //case 0x18:enter();  break;
 194   3      case 0x28:select(0);break;
 195   3      //case 0x48:warn();   break;
 196   3      //case 0x88:broken(); break;
 197   3      }
 198   2        
 199   2          }}
 200          
 201          asc_change(int f) 
 202           {
 203   1       table7[5]=0x00;
 204   1       table7[4]=f%10+0x30;
 205   1       table7[3]='.';
 206   1       table7[2]=f/10%10+0x30;
 207   1       table7[1]=f/100%10+0x30;
 208   1       table7[0]=f/1000+0x30;
 209   1       
 210   1       }
 211          
 212          /*///////////////////////////////////////////////////////////////////////
 213           函数名: 主函数
 214           功能:    
 215           返回值: 无
 216           注意:   无
 217          
 218          //////////////////////////////////////////////////////////////////////*/
 219           main()
 220          {int a,k=0;
 221   1       init();
 222   1       lcdinit();
 223   1       lcd_dis(table3,0x80);
 224   1       lcd_dis(table4,0xc0);
 225   1       while(key()!=0x18);
 226   1       a=ADC();
 227   1       lcd_dis(table5,0x80);
 228   1       while(key()!=0x18)
 229   1       {sweep();}
 230   1       error=a-n;
 231   1       a=0;
 232   1       TR0=1;//开定时器0
 233   1       lcd_com(0x01);   //清屏
 234   1       while(1);
 235   1       {if(scan==1)
 236   2          {table6[k]=ADC();
 237   3              a+=(table6[k]+error);
 238   3          k++;
 239   3          if(k==19)
 240   3          k=0;
 241   3          }
C51 COMPILER V7.50   BISHE                                                                 05/03/2006 18:34:17 PAGE 5   

 242   2        if(enabledis==1)
 243   2        {a=a/20;
 244   3        a=a*2500;
 245   3        a=a>>15;
 246   3        asc_change(a);
 247   3        lcd_dis(table7,0xc0);
 248   3        }
 249   2       
 250   2        }
 251   1      
 252   1      }
 253          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    540    ----
   CONSTANT SIZE    =     74    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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