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

📄 capturetest.lst

📁 C8051F020捕获测试...C8051F020捕获测试...C8051F020捕获测试...
💻 LST
字号:
C51 COMPILER V8.02   CAPTURETEST                                                           03/14/2009 16:22:21 PAGE 1   


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

line level    source

   1          #include <C8051F020.H>
   2          #include "pwmtest.h"
   3          #include "uart.h"
   4          #include "stdio.h"
   5          #include "intrins.h"
   6          
   7          unsigned char CaptureFlag=0;
   8          unsigned int temp=0;
   9          
  10          void PCAInit()
  11          {
  12   1              EA=1;  //允许总中断
  13   1              EIE1|=0X08; // 允许PCA0中断(EIE1.3=1)
  14   1              PCA0CPM1|=0X21;//CEX1上升沿触发
  15   1      
  16   1      }
  17          
  18          unsigned int Capture(void)
  19          {
  20   1              unsigned int period,Hold_val,Curr_val;
  21   1              union cap_val
  22   1              {
  23   1                      char a[2];
  24   1                      unsigned int b;
  25   1              } CAP_VAL;
  26   1          
  27   1      
  28   1              while(CaptureFlag==0);
  29   1      
  30   1              EA=0;
  31   1      
  32   1              Hold_val=temp;
  33   1              CAP_VAL.a[1]=PCA0CPL1;
  34   1              CAP_VAL.a[0]=PCA0CPH1;
  35   1              Curr_val=CAP_VAL.b;
  36   1              
  37   1              if(Curr_val<Hold_val)
  38   1              period=0xffff+Curr_val-Hold_val;
  39   1              else
  40   1              period=Curr_val-Hold_val;       
  41   1              
  42   1              temp=Curr_val;          //保存上次的值
  43   1              CaptureFlag=0; 
  44   1              EIE1|=0X08;             //开PCA0中断(EIE1.3=1)
  45   1      
  46   1              EA=1;
  47   1      
  48   1              return period;
  49   1      }
  50          
  51          void main()
  52          { 
  53   1              unsigned int Period;
  54   1              float Frequency;
  55   1              PORT_Init(); //CEX0 连到P0.0 CEX1连到P0.1
C51 COMPILER V8.02   CAPTURETEST                                                           03/14/2009 16:22:21 PAGE 2   

  56   1              ClkInit();
  57   1              PWMInit();
  58   1              PCAInit();
  59   1              UartInit();
  60   1              TI0=1;
  61   1              //printf("UART is OK!\n");
  62   1      
  63   1              while(1)
  64   1              {
  65   2                      Period=Capture();
  66   2                      Frequency=1843200/Period/2;
  67   2                      //printf("Period=%d\n",Period);
  68   2                      //printf("Frequency=%f\n",Frequency);
  69   2      
  70   2              }
  71   1      }
  72          
  73          
  74          
  75          
  76          void CapInterrupt() interrupt 9
  77          {
  78   1      
  79   1              EIE1&=0Xf7;  // 关PCA0中断(EIE1.3=0)
  80   1              PCA0CN&=0XFD;  //清CCF1中断标志
  81   1              CaptureFlag=1; 
  82   1      
  83   1              _nop_();
  84   1              //EIE1|=0X08; // 开PCA0中断(EIE1.3=1)
  85   1      
  86   1      }


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