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

📄 water.lst

📁 ti的12位AD采集c实现
💻 LST
字号:
C51 COMPILER V7.06   WATER                                                                 12/03/2005 14:07:41 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE WATER
OBJECT MODULE PLACED IN water.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE water.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg52.h>
   2          #include "adc.h"
   3          #include<INTRINS.H>
   4          #include <stdio.h>
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          #define ushort unsigned short
   8          
   9          sbit EOC = P1^3;
  10          sbit CLK = P1^4;
  11          sbit DIN = P1^5;
  12          sbit DOUT = P1^6;
  13          sbit CS = P1^7;
  14          sbit TURN_CLK=P1^0;
  15          sbit TURN_UCLK=P1^1;
  16          
  17          sbit adjust_20=P2^0;
  18          sbit adjust_30=P2^1;
  19          sbit adjust_40=P2^2;
  20          
  21          
  22          unsigned long idata  sys_timer=0;
  23          float idata voltage_con;
  24          float idata voltage_moto;
  25          
  26          uint idata voltage_con1;
  27          uint idata voltage_moto1;
  28          uchar idata voltage_adjust;
  29          
  30          
  31          void adc_init(void);
  32          float adc_voltage(int channel);
  33          float adc_value(int channel);
  34          float voltage_avrg(int channel);
  35          void  delay(void);
  36          void  adjust_init(void);
  37          
  38          
  39          void  adjust_init(void)
  40          {
  41   1              if(adjust_20==0)
  42   1                      voltage_adjust=20;
  43   1              else
  44   1              if (adjust_30==0)
  45   1                      voltage_adjust=30;
  46   1              else   
  47   1                      voltage_adjust=40;
  48   1      }
  49          
  50          
  51          
  52          
  53          
  54          void adc_init(void)
  55          {
C51 COMPILER V7.06   WATER                                                                 12/03/2005 14:07:41 PAGE 2   

  56   1              CS = 1;
  57   1              CLK = 0;
  58   1      }
  59          
  60          float  adc_voltage(int channel)
  61          {       
  62   1              float r;
  63   1              switch(channel)
  64   1                      {
  65   2                      case 1:r = adc_value(channel); r= r;return r;// 测量的值放大10 倍
  66   2                      case 0:r = adc_value(channel); r= r;return r;           
  67   2                      default:return 0;
  68   2                      }
  69   1      }
  70          
  71          float adc_value(int channel)
  72          {
  73   1              int i;
  74   1              uchar d;
  75   1              ushort r;
  76   1      
  77   1              d = (((unsigned char)channel)<<4)+0x02;
  78   1              CS = 0;
  79   1              for(i=0;i<12;i++)
  80   1                      {
  81   2                      if(i<8)
  82   2                              {
  83   3                              if( d&(1<<(7-i))) DIN = 1;else DIN=0;
  84   3                              }
  85   2                      else
  86   2                              DIN = 0;
  87   2                      CLK = 1;
  88   2                      CLK = 0;
  89   2                      }
  90   1              DIN = 0;
  91   1              while(EOC==0);
  92   1      
  93   1              r = 0;
  94   1              for(i=0;i<12;i++)
  95   1                      {
  96   2                      CLK = 1;
  97   2                      if(DOUT)r|=(1<<i);
  98   2                      CLK = 0;
  99   2                      }
 100   1              CS = 1;
 101   1              return (float)r*5/4095.0;
 102   1      }
 103          
 104          float voltage_avrg(int channel)
 105          {
 106   1                      
 107   1              static float  idata r_temp;
 108   1                      char idata i;
 109   1                      r_temp=0;
 110   1              for(i=0;i<10;i++)
 111   1                      r_temp=r_temp+adc_voltage(channel);
 112   1                      r_temp=r_temp/10;
 113   1              return  r_temp;
 114   1                      
 115   1      }
 116          
 117          void delay(void)
C51 COMPILER V7.06   WATER                                                                 12/03/2005 14:07:41 PAGE 3   

 118          {  int idata i;
 119   1              for(i=0;i<1000;i++);
 120   1      }
 121          
 122          
 123          void main(void)
 124          {
 125   1              /*TURN_CLK=0;   //u_clock
 126   1              TURN_CLK=1;
 127   1              
 128   1              TURN_UCLK=0; //   clock
 129   1              TURN_UCLK=1;
 130   1              
 131   1              TURN_CLK=0;
 132   1              TURN_CLK=1;
 133   1              
 134   1              TURN_UCLK=0;
 135   1              TURN_UCLK=1; */
 136   1              
 137   1              TURN_UCLK=1;
 138   1              TURN_CLK=1;
 139   1              adjust_init();
 140   1              adc_init(); 
 141   1              while(1)
 142   1              {
 143   2              //delay();
 144   2      
 145   2              voltage_con= voltage_avrg(0); // control voltage
 146   2              voltage_moto= voltage_avrg(1); // moto voltage 
 147   2              voltage_con1=(uint) (voltage_con*100);
 148   2              voltage_moto1=(uint) (voltage_moto*100);
 149   2              //delay();
 150   2              if(voltage_con1>(voltage_moto1+voltage_adjust)) //30  1ma voltage_adjust
 151   2                   {  
 152   3                      TURN_UCLK=1;
 153   3                              delay();
 154   3                      TURN_CLK=0;
 155   3                              delay();
 156   3                   }  
 157   2                else
 158   2                  if(voltage_con1<(voltage_moto1-voltage_adjust))
 159   2                  {
 160   3                      TURN_CLK=1;
 161   3                              delay();
 162   3                      TURN_UCLK=0;
 163   3                              delay();
 164   3                      }
 165   2                  else 
 166   2                  {
 167   3                      TURN_UCLK=1;
 168   3                              delay();
 169   3                      TURN_CLK=1;
 170   3                              delay();
 171   3                  }
 172   2                      
 173   2              
 174   2                       
 175   2              }
 176   1              
 177   1      }
 178          
 179          
C51 COMPILER V7.06   WATER                                                                 12/03/2005 14:07:41 PAGE 4   

 180          
 181          
 182          
 183          
 184          
 185          
 186          
 187          
 188          
 189          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    498    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   IDATA SIZE       =     21       3
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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