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

📄 test.lst

📁 采用LPC935控制的一个项目
💻 LST
字号:
C51 COMPILER V7.10   TEST                                                                  06/18/2007 11:05:56 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\test.c BROWSE DEBUG OBJECTEXTEND PRINT(.\test.lst) OBJECT(test.obj)

line level    source

   1          #include <REG935.H>
   2          #include"..\SOURCE\general.h"
   3          #include <STRING.H>
   4          //#include <stdio.h>
   5          BYTE STATE;
   6          DWORD DISTANCE,DISTANCENA,DISTANCEPA1,DISTANCEPA2;
   7          BYTE PREDATA=100,j=0;
   8          bit OVERFLOW=0;
   9          /*********************************************************************************************************
  10          * 函数名称: X9C104  
  11          *
  12          * 功能描述: 数字电位器X9C104控制程序。
  13          *
  14          * 入口参数: X9C104DATA 数字电位器的中心抽头的位置数值
  15          *
  16          * 出口参数: 无
  17          *
  18          * 全局变量: 无
  19          *
  20          * 调用模块: delay
  21          *
  22          * 作    者: 汪帆
  23          * 创建时间: 2006年1月10日
  24          ********************************************************************************************************/
  25          void x9c104(BYTE X9C104DATA)
  26          {
  27   1               signed int i;
  28   1               UD=0;
  29   1               INC=0;
  30   1               i=     X9C104DATA-PREDATA;
  31   1               if (i>0)
  32   1               {
  33   2                      i=X9C104DATA-PREDATA;
  34   2                      UD=1;
  35   2                      do
  36   2                      {
  37   3                              INC=1;
  38   3                              _nop_();
  39   3                              INC=0;
  40   3                              i--;
  41   3                      }while (i>0);
  42   2               }else if (i<0)
  43   1               {
  44   2                      i=PREDATA-X9C104DATA;
  45   2                      UD=0;
  46   2                      do
  47   2                      {
  48   3                              INC=1;
  49   3                              _nop_();
  50   3                              INC=0;
  51   3                              i--;
  52   3                      }while (i>0);   
  53   2               }
  54   1               PREDATA=X9C104DATA;
  55   1      
C51 COMPILER V7.10   TEST                                                                  06/18/2007 11:05:56 PAGE 2   

  56   1      }
  57          /*********************************************************************************************************
  58          * 函数名称: pulse  
  59          *
  60          * 功能描述: 发送脉冲,并选择脉冲宽度
  61          *
  62          * 入口参数: ABC=0 范围参数
  63          *
  64          * 出口参数: 无
  65          *
  66          * 全局变量: 无
  67          *
  68          * 调用模块: 无
  69          *
  70          * 作    者: 汪帆
  71          * 创建时间: 2006年1月10日
  72          ********************************************************************************************************/
  73          void pulse(BYTE ENSEL10)
  74          {
  75   1              //START=0;      
  76   1              CLR=0; 
  77   1              delay(2);
  78   1              LOAD=0;                       //LOAD为脉冲下降沿有效
  79   1              switch (ENSEL10)          
  80   1              {       
  81   2                      case 1:   EN=0;SEL1=0;SEL0=0;ENNP=0;break;              //200米
  82   2                      case 2:   EN=0;SEL1=0;SEL0=1;ENNP=0;break;              //1000米
  83   2                      case 3:   EN=0;SEL1=1;SEL0=0;ENNP=0;break;              //4000米
  84   2                      case 4:   EN=0;SEL1=1;SEL0=1;ENNP=0;break;              //8000米 
  85   2                      case 5:   EN=1;SEL1=0;SEL0=0;ENNP=1;break;              //
  86   2                      case 6:   EN=1;SEL1=0;SEL0=0;ENNP=1;break;              //
  87   2                      case 7:   EN=1;SEL1=1;SEL0=0;ENNP=1;break;              //
  88   2                      case 8:   EN=1;SEL1=1;SEL0=0;ENNP=1;break;              //
  89   2                      default:        break;
  90   2              }
  91   1              DCLK=0;
  92   1              //START=1;
  93   1              CLR=1; 
  94   1      }
  95          /*********************************************************************************************************
  96          * 函数名称: rdpulse  
  97          *
  98          * 功能描述: 读一次测试数据的值
  99          *
 100          * 入口参数: 
 101          *
 102          * 出口参数: DISTANCE 一次测试后的记数值 
 103          *
 104          * 全局变量: 无
 105          *
 106          * 调用模块: 无
 107          *
 108          * 作    者: 汪帆
 109          * 创建时间: 2006年1月10日
 110          ********************************************************************************************************/
 111          DWORD rdNAPA(void)
 112          {
 113   1              BYTE i,l;
 114   1              for(l=0;l<255;l++)
 115   1              {
 116   2                      _nop_();
 117   2                      _nop_();
C51 COMPILER V7.10   TEST                                                                  06/18/2007 11:05:56 PAGE 3   

 118   2              }
 119   1              P2=P2|0x18;
 120   1              _nop_();
 121   1              P2=P2&0xe7;
 122   1              DISTANCE=0;
 123   1              DCLK=0; 
 124   1                      LOAD=0; 
 125   1                      LOAD=1; 
 126   1                      DCLK=1;
 127   1                      LOAD=0;
 128   1              for (i=0;i<8;i++)
 129   1              {
 130   2                      DCLK=1;
 131   2                  if(SD==1)
 132   2                        DISTANCE|=1;
 133   2                      if(i<7) 
 134   2                        DISTANCE<<=1;
 135   2                      DCLK=0;
 136   2               }
 137   1               DCLK=0;
 138   1               //DISTANCE=1688;
 139   1               return(DISTANCE);      
 140   1      }                                       
 141          /*********************************************************************************************************
 142          * 函数名称: autotest  
 143          *
 144          * 功能描述: 自动测试程序
 145          *
 146          * 入口参数: 无
 147          *
 148          * 出口参数: DISTANCE 一次测试后的记数值 ;RANGE 完成测试时的范围
 149          *                       当DISTANCE=0x0fff,RANGE=7时说明测试距离过长,超出测试范围。
 150          *
 151          * 全局变量: 无
 152          *
 153          * 调用模块: 无
 154          *
 155          * 作    者: 汪帆
 156          * 创建时间: 2006年1月10日
 157          ********************************************************************************************************/
 158            DWORD gainDISTANCE(void)
 159          { 
 160   1      BYTE k=255;
 161   1      do
 162   1              {
 163   2                      j=0;
 164   2                      CCU_init(j*36);
 165   2                      delay(5);
 166   2                      DA(k);           //数模转换,从AD03(P2.0)输出模拟电压,为PA,NA检测提供基准电压
 167   2                      _nop_();
 168   2                      _nop_();
 169   2                      _nop_();
 170   2      
 171   2              do
 172   2                      {       
 173   3                              j++;
 174   3                              if(j==9) 
 175   3                                break;        
 176   3                              pulse(j);                       
 177   3                              DISTANCE=rdNAPA();      
 178   3                      }while(DISTANCE==0x00ff);
 179   2                      k=k-5;
C51 COMPILER V7.10   TEST                                                                  06/18/2007 11:05:56 PAGE 4   

 180   2                      if (k>10)
 181   2                          OVERFLOW=0;
 182   2                      else 
 183   2                         {
 184   3                              OVERFLOW=1;
 185   3                              break;
 186   3                         }
 187   2              }while(DISTANCE==0x00ff);
 188   1              if ((j==1))
 189   1              {
 190   2               DISTANCE=(DISTANCE)*2;
 191   2              }
 192   1              else if ((j==2))
 193   1              {
 194   2               DISTANCE=(DISTANCE)*4;
 195   2              }
 196   1          else if ((j==3))
 197   1              {
 198   2               DISTANCE=(DISTANCE)*8;
 199   2              }
 200   1              else if ((j==4))
 201   1               DISTANCE=(DISTANCE)*16; 
 202   1              if ((j==5))
 203   1              {
 204   2               DISTANCE=(DISTANCE)*32;
 205   2              }
 206   1              else if ((j==6))
 207   1              {
 208   2               DISTANCE=(DISTANCE)*64;
 209   2              }
 210   1          else if ((j==7))
 211   1              {
 212   2               DISTANCE=(DISTANCE)*128;
 213   2              }
 214   1              else if ((j==8))
 215   1               DISTANCE=(DISTANCE)*256;
 216   1              else if ((j==9))  
 217   1               DISTANCE=20000;
 218   1          return(DISTANCE);
 219   1      }
 220          void autotest()
 221          {       
 222   1              char xdata str1[50],*str2; 
 223   1      
 224   1              /*unsigned char i=0;  //测试
 225   1              while(1)
 226   1              {
 227   1              CCU_init(1*36);
 228   1                      delay(5);
 229   1                      DA(255);                 //数模转换,从AD03(P2.0)输出模拟电压,为PA,NA检测提供基准电压
 230   1                      _nop_();
 231   1                      _nop_();
 232   1                      _nop_();
 233   1              i++;
 234   1              i%=5;   
 235   1              pulse(2);
 236   1              delay(20);
 237   1              }*/
 238   1      
 239   1              D0=1;               //选中PA1事件测的数据
 240   1              DISTANCEPA1=gainDISTANCE();     
 241   1              D0=0;               //选中NA事件测的数据
C51 COMPILER V7.10   TEST                                                                  06/18/2007 11:05:56 PAGE 5   

 242   1              DISTANCENA=gainDISTANCE();
 243   1              /*strcpy(str1,"断线距离第一次。");
 244   1              numtostr(str1,DISTANCEPA1);
 245   1              if(OVERFLOW)
 246   1                str2=strcat("测试距离太长超范围。");
 247   1              else
 248   1                str2=strcat(str1,"米");
 249   1              xf3011text(str2);
 250   1              delay(255);     
 251   1              delay(255);     
 252   1      
 253   1              if ((DISTANCEPA1)==0x03ff)
 254   1                          DISTANCE=DISTANCEPA2;
 255   1                      else   
 256   1                          DISTANCE=DISTANCEPA1;*/
 257   1              /*if ((j==1)||(j==2))
 258   1              {
 259   1               DISTANCE=(DISTANCE)*2;
 260   1               DISTANCENA=(DISTANCENA)*2;
 261   1              }
 262   1              else if ((j==3)||(j==4))
 263   1              {
 264   1               DISTANCE=(DISTANCE)*4;
 265   1               DISTANCENA=(DISTANCENA)*4;
 266   1              }
 267   1          else if ((j==5)||(j==6))
 268   1              {
 269   1               DISTANCE=(DISTANCE)*8;
 270   1               DISTANCENA=(DISTANCENA)*8;
 271   1              }
 272   1              else if ((j==7)||(j==8))
 273   1              {
 274   1               DISTANCE=(DISTANCE)*16;
 275   1               DISTANCENA=(DISTANCENA)*16;
 276   1              }*/ 
 277   1          DISTANCEPA1=DISTANCEPA1-4; 
 278   1          DISTANCENA=DISTANCENA-4;
 279   1              //if(DISTANCENA>DISTANCEPA1)
 280   1              {
 281   2               strcpy(str1,"断线距离。");
 282   2               numtostr(str1,DISTANCEPA1);
 283   2               if(OVERFLOW)
 284   2                str2=strcat("测试距离太长超范围。");
*** WARNING C209 IN LINE 284 OF SOURCE\TEST.C: '_strcat': too few actual parameters
 285   2               else
 286   2                str2=strcat(str1,"米");
 287   2               xf3011text(str2);
 288   2               delay(255);
 289   2               delay(255);
 290   2              }
 291   1              //else
 292   1              {               
 293   2              strcpy(str1,"短路距离。");
 294   2              numtostr(str1,DISTANCENA);
 295   2              if(OVERFLOW)
 296   2                str2=("测试距离太长超范围。");
 297   2              else
 298   2              str2=strcat(str1,"米");
 299   2              xf3011text(str2);
 300   2              delay(255);
 301   2              delay(255);
 302   2              }       
C51 COMPILER V7.10   TEST                                                                  06/18/2007 11:05:56 PAGE 6   

 303   1      }  
 304          void DA(BYTE da_val)
 305          {
 306   1              DWORD xdata i;
 307   1              ADINS=0x08;                             //开转换通道3
 308   1              ADMODA=0x02;                    //设置转换模式
 309   1              ADMODB=0x44;                    //设置ADC模块,0.5Mhz<ADC CLK<3.3Mhz,使能DAC0
 310   1              ADCON0=0x04;                    //开启DAC0模块
 311   1      
 312   1              //ADCON0&=0x7F;                 //清AD/DA转换完成标志位
 313   1              AD0DAT3=da_val;                 //AD0DAT3的值为DAC0输出的控制量
 314   1              for(i=0;i<=1000;i++);
 315   1              ADCON0=0x05;                    //启动DA转换,立即启动方式
 316   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    985    ----
   CONSTANT SIZE    =     46    ----
   XDATA SIZE       =   ----      57
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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