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

📄 main.lst

📁 这是一个很好的学习工程
💻 LST
字号:
C51 COMPILER V8.01   MAIN                                                                  11/30/2005 15:57:30 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          
   3          #define uchar unsigned char
   4          #define uint  unsigned int
   5          #define ulong unsigned long
   6          
   7          sfr     IPH=0xB7;
   8          sfr     AUXR=0x8E;
   9          sfr     AUXR1=0xA2;
  10          sfr     XICON=0xC0;
  11          sfr     WDT_CONTR=0xE1;
  12          sfr     ISP_CONTR=0xE7;
  13          
  14          uchar   Dispbuff[4];
  15          bit     Firstint;
  16          bit     Firstfilt;
  17          ulong   Filter_result;
  18          ulong   Last_samp_data;
  19          ulong   Measure;
  20          ulong   Sampbuff[3];
  21          uchar   Time_samp;
  22          uchar   P_buff;
  23          
  24          extern  uchar  Samp_data_h;
  25          extern  uchar  Samp_data_l;
  26          extern  uchar  Samp_data_c;
  27          extern  uchar  Time_int_t0;
  28          extern  bit    Samp_ok;
  29          
  30          #pragma   noaregs
  31          
  32          void ini_sfr()
  33          {
  34   1              PSW=0x00;
  35   1              AUXR=0x03;
  36   1              AUXR1=0x00;
  37   1              ISP_CONTR=0x00;
  38   1              WDT_CONTR=0x38;
  39   1              XICON=0x00;
  40   1              IP=0x02;               //int0=2,t0=1,t1=0
  41   1              IPH=0x01;
  42   1              TCON=0x01;             //int0:下降沿中断
  43   1              TMOD=0x11;             //T0:16位计数器,T1:16位定时器
  44   1              TH1=0xE3;              //22.1184/4ms
  45   1              TL1=0x33;
  46   1              TH0=0x00;              
  47   1              TL0=0x00;
  48   1              SCON=0x00;
  49   1              Firstint=0;
  50   1              Firstfilt=1;
  51   1              Samp_data_h=0;
  52   1          Samp_data_l=0;
  53   1          Samp_data_c=0;
  54   1              Time_int_t0=0;
  55   1          Samp_ok=0;
C51 COMPILER V8.01   MAIN                                                                  11/30/2005 15:57:30 PAGE 2   

  56   1              IE=0x8B;
  57   1              TR1=1;
  58   1      }
  59          
  60          void disp_logo()
  61          {
  62   1          uchar i=250;
  63   1              Dispbuff[0]=43;
  64   1              Dispbuff[1]=22;
  65   1              Dispbuff[2]=11;
  66   1              Dispbuff[3]=0;
  67   1              while(i--)
  68   1              PCON|=0x01;
  69   1      }
  70          
  71          void samp()
  72          {
  73   1          uint  temp1;
  74   1              ulong temp2;
  75   1          Time_samp=4;
  76   1              P_buff=0;
  77   1              while(--Time_samp)
  78   1              {
  79   2              while(Samp_ok==0);
  80   2                      Samp_ok=0;
  81   2                      temp1=Samp_data_h;
  82   2                      temp1=(temp1<<8)|Samp_data_l;
  83   2                      temp2=65535*Samp_data_c;
  84   2                      Sampbuff[P_buff++]=(temp1+temp2);
  85   2              }
  86   1      }
  87          
  88          void filter()
  89          {
  90   1              uchar i,j;
  91   1              ulong temp;
  92   1              for(i=0;i<=1;i++)
  93   1                      for(j=0;j<=(1-i);j++)
  94   1                              if(Sampbuff[j]>Sampbuff[j+1])
  95   1                              {
  96   2                              temp=Sampbuff[j];Sampbuff[j]=Sampbuff[j+1];Sampbuff[j+1]=temp;
  97   2                              }
  98   1              if(Firstfilt)
  99   1          {
 100   2                      Firstfilt=0;
 101   2                      Firstint=0;
 102   2              Filter_result=Sampbuff[1];
 103   2                      Last_samp_data=Sampbuff[1];
 104   2          }
 105   1          else if(-250<(Sampbuff[1]-Last_samp_data)<250)
 106   1         {    
 107   2              
 108   2              Firstint=0;
 109   2                      Last_samp_data=Sampbuff[1];
 110   2              Filter_result=(Filter_result*9+Sampbuff[1])/10;
 111   2              }
 112   1              else
 113   1         {
 114   2              if (Firstint)
 115   2              {
 116   3                      Firstint=0;
 117   3                      Filter_result=Sampbuff[1];
C51 COMPILER V8.01   MAIN                                                                  11/30/2005 15:57:30 PAGE 3   

 118   3                          Last_samp_data=Sampbuff[1];
 119   3              }
 120   2              else
 121   2                      Firstint=1;
 122   2          }   
 123   1      
 124   1      }
 125          
 126          
 127          void data_manage()
 128          {       
 129   1              ulong temp=184320000;
 130   1              Measure=temp/Filter_result;
 131   1      }
 132          
 133          void renovate_disp(ulong Measure)
 134          {
 135   1          uint  i=Measure;
 136   1              uchar temp[4];
 137   1              temp[0]=i/1000;
 138   1              temp[1]=(i-temp[0]*1000)/100;
 139   1              temp[2]=(i-temp[0]*1000-temp[1]*100)/10;
 140   1              temp[3]=i-temp[0]*1000-temp[1]*100-temp[2]*10;
 141   1              if (temp[0]==0)
 142   1              {
 143   2                      temp[0]=43;
 144   2              }
 145   1              Dispbuff[0]=temp[0];
 146   1              Dispbuff[1]=temp[1]+10;
 147   1              Dispbuff[2]=temp[2];
 148   1              Dispbuff[3]=temp[3];
 149   1      }
 150          
 151          void main()
 152          {
 153   1              SP=0x5F;
 154   1              ini_sfr();
 155   1              disp_logo();
 156   1      
 157   1              while(1)
 158   1              {
 159   2                      samp();
 160   2                      filter();
 161   2                      data_manage();
 162   2                      renovate_disp(Measure);
 163   2              }
 164   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    667    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     30      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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