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

📄 adc_solve.lst

📁 电压瞬时检测
💻 LST
字号:
C51 COMPILER V7.00  ADC_SOLVE                                                              01/09/2007 15:35:17 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE ADC_SOLVE
OBJECT MODULE PLACED IN adc_solve.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE adc_solve.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          ////////////////////////////////////////////////////
   2          /*         adc_solve.c             */
   3          ///////////////////////////////////////////////////
   4          #include "STC5410AD.H"
   5          #include <ABSACC.H>
   6          #include "uuu.h"
   7          #include "citation.h"
   8          #define  Lower_limit  102  //保护下限150-->220V  75-->110V
   9          /////////////////////////////////////////////////////
  10          /*****************************************************
  11          *  功能:A/D采样
  12          *  描述:250uS一次,奇次采RC,偶次采NC
  13          ******************************************************/
  14          void ad_gather(void)
  15          {  bit  flag=0; 
  16   1              union{
  17   1                  uchar c[2];
  18   1                  uint x;
  19   1              }temp; 
  20   1              uchar  mem_stk;
  21   1              mem_stk=bbyte;
  22   1              //--------------------- 
  23   1              if(alternation)
  24   1         {
  25   2                      
  26   2                      ADC_CONTR=0xe0;  //电流
  27   2                      //delay(1);
  28   2                      ADC_CONTR|=0x08;
  29   2                      while(!flag)
  30   2                      {
  31   3                              bbyte=ADC_CONTR;
  32   3                              flag=a4;
  33   3                      }
  34   2                      temp.c[0]=ADC_DATA;
  35   2                      temp.c[1]=0x00;
  36   2                      temp.x>>=6;
  37   2                      temp.c[1]+=ADC_LOW2;
  38   2                      ADC_CONTR=0xe1;
  39   2                      adiii40[gather_num]=temp.x;
  40   2                      alternation=0;//交替采样
  41   2                              
  42   2              }
  43   1              else
  44   1              {
  45   2                      ADC_CONTR=0xe1; //电压
  46   2                      //delay(1);
  47   2                      ADC_CONTR|=0x08;
  48   2                      while(!flag)
  49   2                      {
  50   3                              bbyte=ADC_CONTR;
  51   3                              flag=a4;
  52   3                      }
  53   2                      //ADC_CONTR=0xe2;
  54   2                      temp.c[0]=ADC_DATA;
  55   2                      temp.c[1]=0x00;
C51 COMPILER V7.00  ADC_SOLVE                                                              01/09/2007 15:35:17 PAGE 2   

  56   2                      temp.x>>=6;
  57   2                      temp.c[1]+=ADC_LOW2;
  58   2                      ADC_CONTR=0xe0;
  59   2                      aduuu40[gather_num]=temp.x;
  60   2                      alternation=1;//交替采样
  61   2                      gather_num++;
  62   2                      if (gather_num>39) 
  63   2                      {
  64   3                              gather_num=0;adok=1;
  65   3                              
  66   3                      }
  67   2                      
  68   2              }
  69   1              
  70   1         bbyte=mem_stk; //临时堆栈 
  71   1      }
  72          /***************************************************
  73          *  功能:A/D转换
  74          ****************************************************/
  75          void adc_solve(void)
  76          {       
  77   1              if(adok)
  78   1              {
  79   2                      adok=0;
  80   2              }
  81   1      }
  82          /***************************************************
  83          *  功能:电源失落检查
  84          ****************************************************/
  85          void power_check(void)
  86          {  uint *pi;
  87   1              uchar checknum,i;
  88   1              uint  u;
  89   1              checknum=0;     
  90   1              pi=&aduuu40;
  91   1              for(i=0;i<40;i++)
  92   1              {  u=*(pi+i);
  93   2                 if(u>505)u-=505;
  94   2                      else u=505-u;
  95   2                      if(u<Lower_limit)
  96   2                      {
  97   3                              checknum++;
  98   3                              if(checknum>9)break;
  99   3                      }
 100   2                      else
 101   2                 {
 102   3                              if(checknum<9)checknum=0;
 103   3                      }
 104   2              }
 105   1              if(checknum>9)
 106   1              {
 107   2                      uuu_fault=1;  //电压有丢失
 108   2                      OUTDJ=1;
 109   2                      power_drop_time=8000;
 110   2              }
 111   1              else 
 112   1              {
 113   2                      uuu_fault=0;  //电压恢复
 114   2                      if(power_drop_time==0) OUTDJ=0;
 115   2      
 116   2              }
 117   1      }
C51 COMPILER V7.00  ADC_SOLVE                                                              01/09/2007 15:35:17 PAGE 3   

 118          /***************************************************
 119          *   功能:计算最大值
 120          ****************************************************/
 121          /*uint  max(uint *pi)
 122          { uint  temp;
 123            uchar  i;
 124            temp=0;
 125            for(i=0;i<40;i++)
 126            {
 127                          if(temp<*pi) temp=*pi;
 128                          pi++;
 129            }
 130                  return(temp);
 131          }*/
 132          /***************************************************
 133          *   功能:计算平均值
 134          ****************************************************/
 135          /*uint  average(uint *pi)
 136          { uint  temp;
 137            uchar  i;
 138            ulong x;
 139            x=0;
 140            temp=0;
 141            for(i=0;i<40;i++)
 142            {
 143                          x+=*pi;
 144                          pi++;
 145            }
 146            temp=x/40;
 147            return(temp);
 148          }*/
 149          
 150          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    294    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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