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

📄 ad.lst

📁 此程序为本人在公司开发的继电器功能测试仪
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   AD                                                                    08/06/2007 17:38:09 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN ad.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1                  #include <absacc.h>
   2                  #include <intrins.h>
   3                  #include "variable.h"
   4                  #include "main.h"
   5                  #include "screen.h"
   6                  #include "ad.h"
   7                  unsigned int AD_Convert(void)
   8                  {
   9   1                      unsigned int data AD_Value[5],Temp;
  10   1                      unsigned char i,Num;
  11   1                      for(i=0;i<5;i++)
  12   1                      {
  13   2      
  14   2                              AD_C|=0x01;//SET 1 ON AD_RC
  15   2                              _nop_();
  16   2                              AD_C&=0xFE;//SET 0 ON AD_RC
  17   2                              _nop_();
  18   2                              AD_C|=0x01;//SET 1 ON AD_RC
  19   2                              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  20   2                              while(!AD_Busy);
  21   2                              AD_Value[i]=AD_B*256+AD_A;
  22   2                              if(AD_Value[i]>32768) AD_Value[i]=32767;
  23   2                              Delay_1(250);
  24   2                      }
  25   1                      for(Num=0;Num<4;Num++)
  26   1                      {
  27   2                              for(i=0;i<4-Num;i++)
  28   2                              {
  29   3                                      if(AD_Value[i+1]<AD_Value[i])
  30   3                                      {
  31   4                                              Temp=AD_Value[i+1];
  32   4                                              AD_Value[i+1]=AD_Value[i];
  33   4                                              AD_Value[i]=Temp;
  34   4                                      }
  35   3                              }
  36   2                      }
  37   1                      Temp=0;
  38   1                      for(i=1;i<4;i++)
  39   1                      {
  40   2                              Temp+=AD_Value[i];
  41   2                      }
  42   1                      Temp=Temp/3;
  43   1                      return(Temp);
  44   1              }
  45          
  46                  void DA_Convert(unsigned int data DA_Value)
  47                  {
  48   1                      DA_B=DA_Value/256;
  49   1                      DA_A=DA_Value%256;
  50   1              }
  51          
  52                  void Num_Convert(unsigned int Val,unsigned char Num)
  53              {
  54   1      
  55   1                      unsigned char i;
C51 COMPILER V7.06   AD                                                                    08/06/2007 17:38:09 PAGE 2   

  56   1                      unsigned int y=1;
  57   1                      for(i=0;i<Num-1;i++)
  58   1                      {
  59   2                              y*=10;
  60   2                      }
  61   1                      for(i=0;i<Num;i++)
  62   1                      {
  63   2                              SetP_Data[i]=Val/y;
  64   2                              Val%=y;
  65   2                              y/=10;
  66   2                      }
  67   1              }
  68          
  69                  void Temp_Test(void)
  70                  {
  71   1                      unsigned char i;
  72   1                      float data Temprature=0;
  73   1      
  74   1                      AD_C|=0x08;//set 1 on SW_A0
  75   1                      AD_C|=0x10;//set 1 on SW_A1
  76   1                      AD_C|=0x20;//   set 1 on SW_EN
  77   1                      AD_C&=0xFB;//set 0 on OP_A1
  78   1                      AD_C|=0x02;//set 1 on OP_A0;*10 TIMES;
  79   1                      IO_COM=0x0C;//1 TIMES
  80   1                      IO_COM=0x0E;
  81   1                      for(i=0;i<20;i++) Delay_1(250);
  82   1                      Temprature=(float)(AD_Convert())/327.68;
  83   1                      AD_C&=0xDF;//SET 0 ON SW_EN
  84   1                      Comp_Data[0]=((Temprature-20)*3.93/1000+1)*SR_V_0;
  85   1                      Num_Convert(Comp_Data[0],4);
  86   1                      Set_Data(SetP_Data,4,0,1);//
  87   1                      Comp_Data[1]=((Temprature-20)*3.93/1000+1)*SR_V_1;
  88   1                      Num_Convert(Comp_Data[1],4);
  89   1                      Set_Data(SetP_Data,8,4,1);//
  90   1                      Test_Data[11]=Temprature*10;
  91   1                      Num_Convert(Test_Data[11],3);
  92   1                      if((Page_Val==0)||(Page_Val==5)||(Page_Val==6)) Set_Data(SetP_Data,11,8,1);
  93   1                      else if(Page_Val==1) Set_Data(SetP_Data,3,0,3);//
  94   1      
  95   1              }
  96          
  97                  void Delay_1(unsigned char Num)
  98                  {
  99   1                      unsigned char i,m;
 100   1                      for(i=0;i<100;i++)
 101   1                      {
 102   2                              for(m=0;m<Num;Num++);
 103   2                      }
 104   1              }
 105          
 106                  void Coil_Judge(void)
 107                  {
 108   1                      float Temp_R=0;
 109   1                      unsigned char i;
 110   1                      IO_B&=0xDF;//coil+ on;
 111   1                      AD_COM=0x0C;//Broken K6;
 112   1                      for(i=0;i<50;i++) Delay_1(250);//50ms
 113   1                      //DA_Convert(711);//5v
 114   1                      DA_Convert(427);//3v
 115   1                      for(i=0;i<20;i++) Delay_1(250);//50ms
 116   1                      AD_COM=0x06;//SW_A0 SET 0
 117   1                      AD_COM=0x08;//SW_A1 SET 0;SELECT COIL RES+
C51 COMPILER V7.06   AD                                                                    08/06/2007 17:38:09 PAGE 3   

 118   1                      AD_COM=0x0B;//SW_EN SET 1;      
 119   1                      AD_COM=0x03;//OP_A0 SET 1;
 120   1                      AD_COM=0x04;//OP_A1 SET 0; *10 TIMES;
 121   1                      IO_COM=0x0C;//1 TIMES
 122   1                      IO_COM=0x0E;
 123   1                      for(i=0;i<20;i++) Delay_1(250);
 124   1                      Temp_R=(float)AD_Convert()/3276.8;
 125   1                      DA_Convert(0);//0v
 126   1                      AD_COM=0x0A;//SW_EN SET 0;
 127   1                      AD_COM=0x0D;//Release K6;
 128   1                      if(Temp_R>=2)
 129   1                      {
 130   2                              IO_B|=0x20;//coil+ off;
 131   2                              IO_B&=0xBF;//coil- on;
 132   2                              for(i=0;i<50;i++) Delay_1(250);
 133   2                      }
 134   1              }
 135                  
 136                  bit R_Test(void)
 137                  {
 138   1                      float data R=0;
 139   1                      unsigned char i;
 140   1                      for(i=0;i<11;i++)
 141   1                      {
 142   2                              SetP_Data[i]=15;
 143   2                      }
 144   1                      Test_Data[0]=0;
 145   1                      AD_COM=0x0C;//Broken K6;
 146   1                      //DA_Convert(711);//5v
 147   1                      DA_Convert(427);//3v
 148   1                      //DA_Convert(853);//5v
 149   1                      for(i=0;i<30;i++) Delay_1(250);//50ms
 150   1                      AD_COM=0x06;//SW_A0 SET 0
 151   1                      AD_COM=0x08;//SW_A1 SET 0;SELECT COIL RES+
 152   1                      AD_COM=0x0B;//SW_EN SET 1;      
 153   1                      //AD_COM=0x02;//OP_A0 SET 0;
 154   1                      //AD_COM=0x05;//OP_A1 SET 1; *100 TIMES;
 155   1                      AD_COM=0x03;//OP_A0 SET 1;
 156   1                      AD_COM=0x04;//OP_A1 SET 0; *10 TIMES;
 157   1                      IO_COM=0x0C;//1 TIMES
 158   1                      IO_COM=0x0E;
 159   1                      for(i=0;i<20;i++) Delay_1(250);
 160   1                      R=(float)(32768*3*5)/AD_Convert()-5;//r 
 161   1                      if(R>230)
 162   1                      //if(R>168.5)
 163   1                      {
 164   2                              AD_COM=0x02;//OP_A0 SET 0;
 165   2                              AD_COM=0x05;//OP_A1 SET 1; *100 TIMES;  
 166   2                              for(i=0;i<20;i++) Delay_1(250);
 167   2                              R=(float)(32768*3*5*10)/AD_Convert()-5;//r
 168   2      /*                      if(R>674)
 169   2                              {
 170   2                                      AD_COM=0x03;//OP_A0 SET 1;
 171   2                                      AD_COM=0x05;//OP_A1 SET 1; *1000 TIMES; 
 172   2                                      for(i=0;i<20;i++) Delay_1(250);
 173   2                                      R=(float)(32768*3*5*100)/AD_Convert()-5;//r
 174   2                              }*/
 175   2                      }
 176   1                      AD_COM=0x0A;//SW_EN SET 0;
 177   1                      AD_COM=0x0D;//Release K6;
 178   1                      //IO_B|=0x60;//COIL+ AND COIL- RELAY OFF;
 179   1                      DA_Convert(0);
C51 COMPILER V7.06   AD                                                                    08/06/2007 17:38:09 PAGE 4   

 180   1                      for(i=0;i<20;i++) Delay_1(250);//50ms
 181   1                      Test_Data[0]=10*R;
 182   1                      if((Test_Data[0]<=Comp_Data[1])&&(Test_Data[0]>Comp_Data[0]))
 183   1                      {
 184   2                              SetP_Data[4]=14;//ok
 185   2                      }
 186   1                      else 
 187   1                      {
 188   2                              SetP_Data[4]=13;//NG
 189   2                              IO_A&=0xFE;
 190   2                              IO_C&=0xFD;
 191   2                      }
 192   1                      Num_Convert(Test_Data[0],4);
 193   1                      if((Page_Val==0)||(Page_Val==5)||(Page_Val==6)) 
 194   1                      {
 195   2                              Tests_Data(SetP_Data,5,0);
 196   2                      }
 197   1                      else if(Page_Val==1) Tests_Data(SetP_Data,5,2);
 198   1                      if(SetP_Data[4]==13)
 199   1                      {
 200   2                              IO_B=0xFF;//off relay
 201   2                              return(0);
 202   2                      }
 203   1                      else return(1);
 204   1              }
 205                  
 206                  float ConR_Test_Child(void)
 207                  {
 208   1                      float data Con;

⌨️ 快捷键说明

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