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

📄 pca.lst

📁 电子设计训练课题
💻 LST
字号:
C51 COMPILER V8.02   PCA                                                                   07/20/2007 20:16:00 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE PCA
OBJECT MODULE PLACED IN PCA.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PCA.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          #define  M   0.32653061
  13          
  14          float value;
  15          float xdata  PCA0_Value[10];
  16          long pca_temp;
  17          float  period;
  18          float  frequncy;
  19          uchar number=0;
  20          bit pca_flag;
  21          /*===============================================================*/
  22          /*  CAPPn----------------------------------------------上升沿捕捉*/
  23          /*  CAPNn----------------------------------------------下降沿捕捉*/
  24          /*  ECCFn--------------------------------------------允许捕捉中断*/   
  25          /*===============================================================*/
  26          void PCA0_Initial()
  27          {                       //PCA CEX0配置为正负边沿均捕捉
  28   1              PCA0CPM0 = 0x31;    //正负边沿触发模式,CEX0捕捉中断使能
  29   1              PCA0CPL0 = 0x00;    
  30   1              PCA0CPH0 = 0x00;    
  31   1      }
  32          void PCA_Initial()
  33          {
  34   1              PCA0MD=0x08;        //PCA采用系统时钟,且PCA溢出中断禁止
  35   1              PCA0CN=0x40;        //启动PCA计数器
  36   1              EIE1|=0x08;         //PCA中断使能
  37   1      }
  38          
  39          float PCA_Capture()
  40          {   
  41   1      
  42   1                      if(pca_flag)  //捕捉十次
  43   1                      {                                                 
  44   2                              pca_flag=0;
  45   2                              if(number>=10)
  46   2                              {
  47   3                                      pca_temp = PCA0_Value[1]+PCA0_Value[3]+PCA0_Value[5]+PCA0_Value[7]+PCA0_Value[9];
  48   3                                      period = (float)pca_temp/5;
  49   3                                      period = (float)M*period*2;
  50   3                                      frequncy = (float)1000/period;
  51   3                                      frequncy = (float)1000*frequncy;
  52   3                                      number=0;
  53   3                              }                               
  54   2                      }       
  55   1                  return(period);
C51 COMPILER V8.02   PCA                                                                   07/20/2007 20:16:00 PAGE 2   

  56   1      }
  57          /*捕捉思想:在中断程序中放个静态变量,电平的跳变间隔就是当前的捕捉值与上次捕捉
  58                      值之差。
  59          */
  60          void PCA_ISR(void) interrupt 9 using 1 
  61          {
  62   1              static xdata uint temp_count=0,cnum=0;
  63   1              if(CF)
  64   1              {
  65   2                  cnum++;
  66   2                      CF=0;   
  67   2              }
  68   1              if(CCF0)
  69   1              {
  70   2                      if(PCA0CP0<temp_count)
  71   2                                cnum--;         
  72   2                      if(number>=10)
  73   2                              number=0;
  74   2              PCA0_Value[number] = PCA0CP0-temp_count;
  75   2                      PCA0_Value[number]+=65536L*cnum;
  76   2                      cnum=0;
  77   2                      temp_count=PCA0CP0;
  78   2                      number++;
  79   2                      CCF0=0;
  80   2              }
  81   1              pca_flag=1;
  82   1        }     


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