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

📄 sy5.lst

📁 数字频率计 c8051f单片机 使用PCA比较捕捉模块
💻 LST
字号:
C51 COMPILER V7.20   SY5                                                                   08/08/2008 09:00:07 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE SY5
OBJECT MODULE PLACED IN sy5.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE sy5.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <c8051f000.h>
   2          
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          
   6          void sysclk_init();
   7          void port_init();
   8          void pca_init();
   9          void bl_init();
  10          
  11          
  12          uchar bzw;
  13          uchar bzw2;
  14          uint i;                                         //pca计数器溢出次数
  15          uchar cfbzw;
  16          uchar ccf0bzw;
  17          uchar pca0l;
  18          uchar pca0h;
  19          uchar pca0newl;                                 //第二次捕获下降沿时计数值
  20          uchar pca0newh;
  21          uchar pca0oldl;                                 //第一次捕获下降沿时计数值
  22          uchar pca0oldh;
  23          uint pca0old;
  24          uint pca0new;
  25          uint k;
  26          float t;
  27          uint n;
  28          uint bi;
  29          
  30          
  31          void main()
  32          {
  33   1              sysclk_init();
  34   1              port_init();
  35   1              pca_init();
  36   1              EA=1;                                           //开总中断
  37   1              i=0;
  38   1              bl_init();
  39   1              for(;;)
  40   1              {
  41   2                      if(k==0)
  42   2                      {
  43   3                              
  44   3                              {
  45   4                                      pca0new=(pca0newh<<8)+pca0newl;
  46   4                                      pca0old=(pca0oldh<<8)+pca0oldl;
  47   4                                      t=(pca0new+(i*65536.0)-pca0old)/(16000000.0/12.0)/n;
  48   4                                      bl_init();
  49   4                                      bi=i;
  50   4                                      EA=1;
  51   4                              }
  52   3                      }
  53   2              }
  54   1      }
  55          
C51 COMPILER V7.20   SY5                                                                   08/08/2008 09:00:07 PAGE 2   

  56          
  57          void bl_init()
  58          {
  59   1      //      bzw=0;
  60   1      //      bzw2=0;
  61   1      //      i=0;
  62   1      //      ccf0bzw=0;
  63   1      //      cfbzw=0;
  64   1              n=10000;                                //计n个周期
  65   1              k=n+1;
  66   1      }
  67          
  68          void sysclk_init()
  69          {
  70   1              WDTCN=0XDE;                                     //关看门狗
  71   1              WDTCN=0XAD;
  72   1              OSCICN=0x07;                            //内部16M时钟
  73   1      }
  74          
  75          void port_init()
  76          {
  77   1              XBR0=0X10;                                      //CEX0,CEX1连接到端口
  78   1              XBR1=0X00;
  79   1              XBR2=0X40;                                      //交叉开关允许
  80   1              PRT0CF=0X00;                            //P0口输出方式漏开
  81   1      }
  82          
  83          void pca_init()
  84          {
  85   1              PCA0MD=0X01;                            //系统时钟12分频,允许CF中断
  86   1              PCA0CPM0=0x11;                          //PCA模块0下降沿触发捕捉,允许CCF0中断
  87   1              EIE1|=0X08;                                     //允许PCA中断
  88   1              PCA0CN=0x40;                            //允许PCA计数器
  89   1      }
  90          
  91          void cf_int() interrupt 9
  92          {
  93   1              
  94   1      
  95   1              if(CF)
  96   1              {
  97   2                      CF=0;                                   //PCA中断标志清零
  98   2      //              CCF0=0;
  99   2                      i++;
 100   2              }
 101   1              else
 102   1              {
 103   2                      CCF0=0;
 104   2      //              CF=0;
 105   2      //              ccf0bzw++;
 106   2                      if(k==1)
 107   2                      {
 108   3                              pca0newl=PCA0CPL0;      //记下n+1次下降沿来时的计数值
 109   3                              pca0newh=PCA0CPH0;
 110   3                              EA=0;                           //禁止中断
 111   3      //                      k--;                            //两次计数完毕
 112   3                      }
 113   2                      if(k==n+1)
 114   2                      {
 115   3                              pca0oldl=PCA0CPL0;      //记下第一次下降沿来时的计数值
 116   3                              pca0oldh=PCA0CPH0;
 117   3                              i=0;
C51 COMPILER V7.20   SY5                                                                   08/08/2008 09:00:07 PAGE 3   

 118   3      //                      k--;
 119   3                      }
 120   2                      k--;
 121   2              }
 122   1      
 123   1              bzw++;
 124   1      }


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