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

📄 pca_capture.lst

📁 基于8051F实现导纳分析仪,键盘,液晶,功能都全有,其中包含测频,测相,测高电平,测低电平,测幅.等多种算法思想.用C语言实现.绝对原创!
💻 LST
字号:
C51 COMPILER V8.02   PCA_CAPTURE                                                           04/04/2008 19:55:16 PAGE 1   


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

line level    source

   1          /*===============================================================*/
   2          /*函数名称: PCA_Capture.c                                       */
   3          /*函数功能: 主函数,调用各模块                                   */
   4          /*基本思想:  正负边沿均捕捉脉冲                                  */
   5          /*修改记录: 无修改记录                                          */
   6          /*编写作者: t483-4-19chenyong                                   */
   7          /*编写日期: 2007-4-14                                           */
   8          /*===============================================================*/
   9          #include"common.h"
  10          #include"PCA.h"
  11          #include<math.h>
  12          
  13          xdata uint PCA0_Value[12],i;
  14          xdata ulong sum0,sum1,x,y;
  15          uchar number=0;
  16          float value;
  17          bit isnewdata;
  18          /*===============================================================*/
  19          /*  CAPPn----------------------------------------------上升沿捕捉*/
  20          /*  CAPNn----------------------------------------------下降沿捕捉*/
  21          /*  ECCFn--------------------------------------------允许捕捉中断*/   
  22          /*===============================================================*/
  23          void PCA0_Initial()
  24          {                       //PCA CEX0配置为正负边沿均捕捉
  25   1              PCA0CPM0 = 0x31;    //正负边沿触发模式,CEX0捕捉中断使能
  26   1              PCA0CPL0 = 0x00;    
  27   1              PCA0CPH0 = 0x00;    
  28   1      }
  29          void PCA_Initial()
  30          {
  31   1              PCA0MD=0x08;        //PCA采用系统时钟,且PCA溢出中断禁止
  32   1              PCA0CN=0x40;        //启动PCA计数器
  33   1              EIE1|=0x08;         //PCA中断使能
  34   1      }
  35          
  36          float PCA_Capture()
  37          {   
  38   1                              //把捕捉端口配置到P0.0
  39   1          if(isnewdata)       //捕捉十次
  40   1              {                                                 
  41   2                      isnewdata=0;
  42   2                              if(number>=12)
  43   2                              {
  44   3                      sum0=PCA0_Value[1]+PCA0_Value[3]+PCA0_Value[5]+PCA0_Value[7]+PCA0_Value[9];
  45   3                                      sum1=PCA0_Value[2]+PCA0_Value[4]+PCA0_Value[6]+PCA0_Value[8]+PCA0_Value[10];
  46   3                                      if(sum0<sum1)
  47   3                                      {   
  48   4                                          value=sum0;
  49   4                                              value=(float)value*0.2;
  50   4                                              value=(float)value/3.999892398;  
  51   4                                      }
  52   3                                      else
  53   3                                      {
  54   4                                          value=sum1;
  55   4                                              value=(float)value*0.2; 
C51 COMPILER V8.02   PCA_CAPTURE                                                           04/04/2008 19:55:16 PAGE 2   

  56   4                                              value=(float)value/3.999892398;                         
  57   4                                      
  58   4                                      }
  59   3      //                              value=sum0<sum1? x:y;
  60   3      //              value=sum;
  61   3      //                              value=(float)value*0.2;
  62   3      //                              value=(float)value/3.999892398;                  
  63   3                      number=0;
  64   3                              }       
  65   2              }
  66   1              return(value);
  67   1      }
  68          /*
  69            捕捉思想:在中断程序中放个静态变量,电平的跳变间隔就是当前的捕捉值与上次捕捉
  70                      值之差。
  71          */
  72          void PCA_ISR(void) interrupt 9 using 1 
  73          {
  74   1              static xdata uint temp_count=0;
  75   1              if(CCF0)
  76   1              {
  77   2                      PCA0_Value[number] = PCA0CPL0+PCA0CPH0*256-temp_count;
  78   2                      temp_count = PCA0CPL0+PCA0CPH0*256;
  79   2                      number++;
  80   2                      CCF0=0;
  81   2              }
  82   1              isnewdata=1;
  83   1        }             


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    378    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     44    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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