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

📄 main.lst

📁 在89S52上运行的一个测量频率的并且利用串口通信的程序
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  11/02/2007 10:51:39 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN C:\Documents and Settings\Administrator\桌面\chengxu\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND OBJECT(C:\Documents and Settings\Administr
                    -ator\桌面\chengxu\main.obj)

line level    source

   1          #include "main.h"
   2          #include "init.h"
   3          #include "x5045.h"
   4          #include "flux.h"
   5          #include "comuni.h"
   6          #include "filter.h"
   7          
   8          
   9          void       set_freq(uint  fre)         ;
  10          static     uchar    time_H,  time_L    ;               //存放计时时间  
  11          static     uint     time_enter         ;
  12          
  13          void  main(void)
  14          {
  15   1              static    uint     time ,time_av                ;
  16   1              static    uint     time1 ,time2         ;
  17   1              static    uint     data_send            ;
  18   1              static    uint     i                    ;
  19   1              static    uchar    eleven               ;
  20   1      
  21   1              init()    ;
  22   1              wr_sr(0)  ;                                //设置1.4秒的看门狗,不保护数据
  23   1              TR2 = 1   ;                                //启动定时器 2
  24   1              dog()     ;
  25   1              eleven = 11 ;
  26   1      
  27   1      
  28   1              while(1)                                     //循环一周的时间大约是7.5ms
  29   1              {
  30   2                      
  31   2                      time_enter += 1 ;  
  32   2              
  33   2                      if(time_enter >= 5) 
  34   2                      {
  35   3      
  36   3                              time = 5730 ;
  37   3                              eleven = 11 ;
  38   3                              time_enter = 10 ; 
  39   3                      }else
  40   2                      {
  41   3                              for(i =999 ; i <= 10000 ; i ++) 
  42   3                              {
  43   4                                      if(i == 1000) 
  44   4                                      {
  45   5                                              time1 = time_H  ;
  46   5                                              time1 <<= 8     ;
  47   5                                              time1 = time1 + (uint)time_L ;
  48   5                                      } 
  49   4                                      if(i == 9000) 
  50   4                                      {
  51   5                                              time2 = time_H  ;
  52   5                                              time2 <<= 8     ;
  53   5                                              time2 = time2 + (uint)time_L ;
  54   5                                      } 
C51 COMPILER V7.50   MAIN                                                                  11/02/2007 10:51:39 PAGE 2   

  55   4      
  56   4                                      
  57   4                      
  58   4                              }  
  59   3                              if(time1 == time2)
  60   3                              {
  61   4                                      time = time1 ;
  62   4                              }  
  63   3                      } 
  64   2      //              if(eleven != 11)
  65   2      //              {
  66   2                              time_av = filte(time) ;         
  67   2      //              }else
  68   2        /*        {
  69   2                              for( i = 0 ;i <= 9 ;i ++)
  70   2                              {
  71   2                                      time_av = filte(time) ;
  72   2                              }
  73   2                              eleven = 0 ;    
  74   2                      }  
  75   2      
  76   2      */
  77   2                      
  78   2                      dog() ;
  79   2                      data_send = press(time_av) ;                              //计算压力 
  80   2      
  81   2                  comuni(data_send)  ; 
  82   2      //              comuni(time_av) ;
  83   2                      set_freq(data_send) ;
  84   2      
  85   2                      dog()  ;
  86   2      
  87   2              }               
  88   1      }
  89          
  90          
  91          
  92          
  93          
  94          void   measure_freq(void)   interrupt   0       //外部中断 0   压频输入  
  95          {   
  96   1              static uchar ss = 0 ;
  97   1              if(ss == 0)                            //注意是双等号 == 
  98   1              {
  99   2                      TH1 = 0 ;                          //16位定时器1测量频率的周期  
 100   2                      TL1 = 0 ;
 101   2                      TR1 = 1 ;
 102   2                      ss  = 1 ;
 103   2                      time_enter = 0 ;   
 104   2                      return  ;
 105   2              }               
 106   1              if(ss == 1) 
 107   1              {       
 108   2                      TR1 = 0 ;
 109   2                      time_H = TH1 ;
 110   2                      time_L = TL1 ;
 111   2                      ss = 0 ;
 112   2                      time_enter = 0 ;
 113   2                      return  ;
 114   2              }
 115   1              
 116   1      }
C51 COMPILER V7.50   MAIN                                                                  11/02/2007 10:51:39 PAGE 3   

 117          
 118          
 119          
 120          
 121          
 122          /*
 123          void   measure_freq(void)   interrupt   2       //外部中断 1   流量输入中断 
 124          {   
 125                  static uchar ss=0;
 126                  if(ss == 0)                    //注意是双等号 == 
 127                  {
 128                          TH1=0;                   //16位定时器1测量频率的周期  
 129                          TL1=0;
 130                          TR1=1;
 131                          ss=1;
 132                          time_inter = 0 ;
 133                          return ;
 134                  }               
 135                  else
 136                  {       
 137                          TR1=0;
 138                          flux_H=TH1;
 139                          flux_L=TL1;
 140                          ss=0;
 141                          time_inter = 0 ;
 142                          return ;
 143                  }
 144                  
 145          }
 146          
 147          */
 148          void  timer2_isr (void)   interrupt   5
 149          {
 150   1              TF2 = 0;
 151   1              OUT4 = !OUT4 ;
 152   1              return ;
 153   1      }
 154          
 155          
 156          
 157          void set_freq(uint  fre)  
 158          {   
 159   1          uint  rcap_press , press_set; 
 160   1              uint  press ;
 161   1              press  =  fre ;
 162   1              press_set = press * 0.8 + 200  ;                      //转换成频率输出 
 163   1              rcap_press  = 65536 - 1000000 / (press_set * 2);  
 164   1              RCAP2H = rcap_press >> 8 ;              
 165   1              RCAP2L = rcap_press ;
 166   1      
 167   1          
 168   1      }
 169          
 170                  
 171          
 172          
 173          
 174          /*x5045复位看门狗函数~~~~~~~~~~~~~*/
 175          void dog(void)
 176          {
 177   1          CS=0;
 178   1          CS=1;
C51 COMPILER V7.50   MAIN                                                                  11/02/2007 10:51:39 PAGE 4   

 179   1      }
 180          
 181          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    323    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18    ----
   IDATA SIZE       =   ----    ----
   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 + -