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

📄 adc0832.lst

📁 通信控件MSComm的应用
💻 LST
字号:
C51 COMPILER V7.20   ADC0832                                                               12/16/2007 11:15:14 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE ADC0832
OBJECT MODULE PLACED IN .\ADC0832.obj
COMPILER INVOKED BY: E:\Program Files\keil\C51\BIN\C51.EXE D:\07.12\shixi\ADC0832.C BROWSE DEBUG OBJECTEXTEND PRINT(.\AD
                    -C0832.lst) OBJECT(.\ADC0832.obj)

line level    source

   1          #include "main.h"
   2          uchar  disdat[6];
   3          uchar dy,dydat;// 电压值
   4          bit qdzq,zhzq;//定义两个位变量:ad芯片启动正确,数据转换正确
   5          
   6          
   7          void  initadc(void)
   8          {CLK=0;
   9   1       TLC0832=1;
  10   1       ADO=0;
  11   1       DI=0;
  12   1       qdzq=0;
  13   1       }
  14           
  15          void read0832(void)// 读12个数 ,去掉最大的和最小的,然后取平均
  16               {uchar rddat[12];
  17   1            uint  temp1;
  18   1            uchar i,temp2;
  19   1            for(i=0;i<12;i++)
  20   1            rddat[i]=readadc();
  21   1      
  22   1            if(rddat[11]<rddat[10])
  23   1             {temp2=rddat[11];
  24   2              rddat[11]=rddat[10];
  25   2              rddat[10]=temp2;
  26   2             }
  27   1            for(i=0;i<10;i++)
  28   1            {if(rddat[i]>rddat[11])
  29   2              {temp2=rddat[11];
  30   3               rddat[11]=rddat[i];
  31   3               rddat[i]=temp2;
  32   3              }
  33   2             else
  34   2              {if(rddat[i]<rddat[10])
  35   3               {temp2=rddat[10];
  36   4                rddat[10]=rddat[i];
  37   4                rddat[i]=temp2;
  38   4               }
  39   3              }
  40   2            }
  41   1            for(temp1=0,i=0;i<10;i++)
  42   1              temp1+=(uint)rddat[i];
  43   1              temp1=temp1/10;
  44   1              dy=(uchar)temp1;
  45   1      }
  46          
  47          unsigned char readadc(void)
  48          {
  49   1              unsigned char dat,i;
  50   1      
  51   1          CLK=0;         //芯片复位
  52   1          TLC0832=1;
  53   1          _nop_();
  54   1          TLC0832=0;
C51 COMPILER V7.20   ADC0832                                                               12/16/2007 11:15:14 PAGE 2   

  55   1          _nop_();
  56   1      
  57   1          DI=1;         //启动位
  58   1          CLK=1;
  59   1          _nop_();
  60   1          CLK=0;
  61   1      
  62   1          DI=1;         //配置位1
  63   1          CLK=1;
  64   1          _nop_();
  65   1          CLK=0;
  66   1      
  67   1          DI=1;         //配置位2
  68   1          CLK=1;
  69   1          _nop_();
  70   1      
  71   1          CLK=0;         //空闲位
  72   1          _nop_();
  73   1          CLK=1;
  74   1          _nop_();
  75   1          CLK=0;
  76   1      
  77   1      
  78   1          for(i=0;i<8;i++)
  79   1          {             //读出8字节数据
  80   2              dat=dat<<1;
  81   2              _nop_();
  82   2              CLK=1;
  83   2                                //这里要先1后0...如果是先0后1则输出结果错误...
  84   2              if(ADO)
  85   2              {
  86   3                  dat|=0x01;
  87   3              }
  88   2              _nop_();
  89   2              CLK=0;
  90   2          }
  91   1      
  92   1          TLC0832=1;        //关闭芯片
  93   1          return(dat);          //返回数据
  94   1      }
  95          
  96          main()
  97          {float dy1;
  98   1       uint  m;
  99   1       TMOD=0x21;
 100   1       SCON=0x40;
 101   1       TH1=0xFA;
 102   1       TL1=0xFA;
 103   1       PCON=0x80;
 104   1       //PS=1;
 105   1       TR1=1;
 106   1       //EA=1;
 107   1       //ES=1;
 108   1       //ET1=0;
 109   1       while(1)
 110   1      
 111   1       {initadc();
 112   2        read0832();
 113   2        dydat=dy;
 114   2        TI=0;
 115   2        SBUF=dydat;
 116   2        dy1=vref/256.0;
C51 COMPILER V7.20   ADC0832                                                               12/16/2007 11:15:14 PAGE 3   

 117   2        dy1=dy1*dy;
 118   2        if(dy1<0.1)
 119   2         {dy1=dy1*10000.0;
 120   3          disdat[0]=0;
 121   3          disdat[1]=0;
 122   3          m=(uint)dy1/100;
 123   3          disdat[2]=(uchar)m;
 124   3          dy1=dy1-disdat[2]*100;
 125   3          disdat[3]=(uchar)dy1/10;
 126   3          dy1=dy1-disdat[3]*10;
 127   3          disdat[4]=(uchar)dy1;
 128   3          disdat[5]=0;
 129   3         }
 130   2        else  if(dy1<1.0)
 131   2          {dy1=dy1*10000.0;
 132   3           disdat[0]=0;
 133   3           m=(uint)dy1/1000;
 134   3           disdat[1]=(uchar)m;
 135   3           dy1=dy1-disdat[1]*1000;
 136   3           m=(uint)dy1/100;
 137   3           disdat[2]=(uchar)m;
 138   3           dy1=dy1-disdat[2]*100;
 139   3           disdat[3]=(uchar)dy1/10;
 140   3           dy1=dy1-disdat[3]*10;
 141   3           disdat[4]=(uchar)dy1;
 142   3           disdat[5]=0;
 143   3          }
 144   2        else
 145   2          {dy1=dy1*10000.0;
 146   3           m=(uint)dy1/10000;
 147   3           disdat[0]=(uchar)m;
 148   3           dy1=dy1-disdat[0]*10000;
 149   3           m=(uint)dy1/1000;
 150   3           disdat[1]=(uchar)m;
 151   3           dy1=dy1-disdat[1]*1000;
 152   3           m=(uint)dy1/100;
 153   3           disdat[2]=(uchar)m;
 154   3           dy1=dy1-disdat[2]*100;
 155   3           disdat[3]=(uchar)dy1/10;
 156   3           dy1=dy1-disdat[3]*10;
 157   3           disdat[4]=(uchar)dy1;
 158   3           disdat[5]=0;
 159   3          }
 160   2          
 161   2      
 162   2       /* disdat[0]=dy/100;
 163   2        disdat[1]=(dy-disdat[0]*100)/10;
 164   2        disdat[2]=dy%10; */
 165   2        display();
 166   2        //sendbyte();
 167   2       /* TLC0832=0;
 168   2        DI=0 ;
 169   2        ADO=0;
 170   2        CLK=0;
 171   2        TLC0832=1;
 172   2        DI=1;
 173   2        ADO=1;
 174   2        CLK=1;
 175   2         */
 176   2        
 177   2        }
 178   1      }
C51 COMPILER V7.20   ADC0832                                                               12/16/2007 11:15:14 PAGE 4   

 179          //void sendbyte()
 180          //{
 181          //      SBUF=dydat;
 182          //      while(TI==0);
 183          //      TI=0; 
 184          //}
 185          
 186          //void  senddy(void) interrupt 4 
 187          //  {  
 188          //     RI=0; //排出TI的干扰
 189          //     if(TI)
 190          //     {
 191          //      TI=0;
 192          //      SBUF=dydat;
 193          //     }
 194          //       
 195          //  }
 196          /*uchar  rdbety(void)
 197           {uchar i,dat;
 198              while(zhzq)
 199                { while(qdzq)
 200                  {DI=1;//START
 201                   TLC0832=0;
 202                    / /_nop_();
 203                   CLK=1;
 204                   //_nop_();//DI数据保持90ns即可
 205                   DI=1;//SEND  SGL
 206                   CLK=0;
 207                   _nop_();
 208                   CLK=1;
 209                   DI=0;//SEND  EVEN
 210                   CLK=0;
 211                   _nop_();
 212                   CLK=1;
 213                   _nop_;
 214                   CLK=0;
 215                   ADO=1;//开始检测ADO是否为低,为低表示有数据
 216                   _nop_();
 217                   CLK=1;
 218                   if(ADO)
 219                    qdzq=1;
 220                   else
 221                    qdzq=0;//说明启动正确,接下来开始接受数据  }
 222          
 223                CLK=1;
 224          
 225              }
 226          
 227              qdzq=1;
 228              return(dat)
 229              }
 230          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    702    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
C51 COMPILER V7.20   ADC0832                                                               12/16/2007 11:15:14 PAGE 5   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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