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

📄 main.lst

📁 周期测量
💻 LST
字号:
C51 COMPILER V8.01   MAIN                                                                  08/08/2008 09:30:15 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 LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************************/
   2          //周期测量模块
   3          /*********************************************************************/
   4          #include<C8051F000.h>
   5          #include<define.h>
   6          unsigned int    Pulse_Counts=0;                 //脉冲数
   7          unsigned int    Flow_Counts=0;                  //定时器溢出数
   8          double                  T,F;                                    //被测信号周期
   9          unsigned int    Cat_F;                                  //第一个沿时的定时器值
  10          unsigned int    Cat_L;                                  //最后一个沿时的定时器值
  11          void main()
  12          {  
  13   1              WDTCN=0xde;                                                     //关看门狗
  14   1              WDTCN=0xad;
  15   1              SYSCLK_Init();                                          //时钟初始化
  16   1              PORT_Init();                                            //端口初始化
  17   1              PCA_Init();                                                     //PCA初始化
  18   1              EIE1|=0x08;                                                     //允许PCA0中断
  19   1              EA=1;                                                           //开总中断
  20   1              while(1);                                                       //等待中断到
  21   1      }
  22          
  23          void PCA0_ISR(void) interrupt 9
  24          {
  25   1              EA=0;                                                           //中断禁止
  26   1              if(CCF0==1)
  27   1              {
  28   2                      CCF0=0;                                                 //清中断标志
  29   2                      Pulse_Counts++;                                 //脉冲数加一
  30   2                      if(Pulse_Counts==1)                             //捕捉第一个上升沿到时定时器值
  31   2                      {
  32   3                              Cat_F=PCA0CPH0*256+PCA0CPL0;
  33   3                      }
  34   2                      if(Pulse_Counts==2&&Flow_Counts>0)                              //捕捉第一个上升沿到时定时器值
  35   2                      {
  36   3                              Cat_L=PCA0CPH0*256+PCA0CPL0;                            //低频计算
  37   3                              T=65535*(Flow_Counts-1);
  38   3                              T+=(65536-Cat_F)+Cat_L;
  39   3                              T=T*4/SYSCLK;                                           
  40   3                              F=1/T;
  41   3                               
  42   3                      }
  43   2      
  44   2                      else if(Flow_Counts==1&&Pulse_Counts>2)                 //高频计算
  45   2                      {
  46   3                              Cat_L=PCA0CPH0*256+PCA0CPL0;
  47   3                              T=65535-Cat_F+Cat_L;
  48   3                              T=T*4/(SYSCLK*(Pulse_Counts-1));
  49   3                              F=1/T;                                          
  50   3                      }
  51   2              }
  52   1              
  53   1              if(CF==1)
  54   1              {       
  55   2                      CF=0;                                                   //溢出中断标志清零
C51 COMPILER V8.01   MAIN                                                                  08/08/2008 09:30:15 PAGE 2   

  56   2                      Flow_Counts++;                                  //溢出数加一
  57   2              }
  58   1      
  59   1              EA=1;                                                           //开总中断
  60   1      }
  61          


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