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

📄 pca_cap.lst

📁 基于C8051F040的液晶
💻 LST
字号:
C51 COMPILER V7.50   PCA_CAP                                                               08/22/2007 14:50:11 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PCA_CAP
OBJECT MODULE PLACED IN PCA_CAP.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE PCA_CAP.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /////////t3 频率方波输出//////////////
   2          /////////PCA CEX4 捕捉 测试程序//////
   3          /////////PCA_CAP.c//////////////////////////
   4          #include <C8051F040.h>
   5          #define T3RUN temppage=SFRPAGE;SFRPAGE=0x01;TR3=1;SFRPAGE=temppage
   6          #define T3STOP temppage=SFRPAGE;SFRPAGE=0x01;TR3=0;SFRPAGE=temppage
   7          typedef unsigned int uint;
   8          typedef unsigned char uchar;
   9          typedef unsigned long ulong;
  10          sfr16 RCAP2=0xca;
  11          sfr16 RCAP3=0xca;
  12          sfr16 RCAP4=0xca;
  13          sfr16 TMR4=0xcc;
  14          sfr16 TMR3=0xcc;
  15          sfr16 TMR2=0xcc;
  16          sfr16 PCA0CP0=0xfb;
  17          sfr16 PCA0CP1=0xfd;
  18          sfr16 PCA0CP2=0xe9;
  19          sfr16 PCA0CP3=0xeb;
  20          sfr16 PCA0CP4=0xed;
  21          sfr16 PCA0CP5=0xe1;
  22          uchar temppage;
  23          xdata uint pcacap4[10];
  24          uchar num1=0;
  25          bit isnewdata;
  26          void delay1ms(){
  27   1              uchar j;
  28   1              for(j=0;j<25;j++);                      
  29   1      }
  30          void t3_fre_set(uint val){//T3频率设置,计算公式为:(T3时钟频率/(2*val))
  31   1              temppage=SFRPAGE;
  32   1              SFRPAGE=0x01;
  33   1              RCAP3=~val+1;
  34   1              TMR3=RCAP3;
  35   1              SFRPAGE=temppage;
  36   1      }
  37          void t3_ini(){//t3为频率输出模式
  38   1              temppage=SFRPAGE;
  39   1              SFRPAGE=0x01;
  40   1              TMR3CN=0x00;//TR3=0,T3尚未启动
  41   1              TMR3CF=0x0e;//T3采用系统时钟,TOG3=1,T3不计数时输出为1,DCEN=0
  42   1              SFRPAGE=temppage;
  43   1      }
  44          void pca4ini(){//PCA CEX4配置为正负边沿均捕捉
  45   1              SFRPAGE=0x00;
  46   1              PCA0CPM4 = 0x31;    // 正负边沿触发模式,CEX4捕捉中断使能
  47   1              PCA0CPL4 = 0x00;    
  48   1              PCA0CPH4 = 0x00;    
  49   1      }
  50          void pcaini(){
  51   1              SFRPAGE=0x00;
  52   1              PCA0MD=0x08;//PCA采用系统时钟,且PCA溢出中断禁止
  53   1              PCA0CN=0x40;//启动PCA计数器
  54   1              EIE1|=0x08;//PCA中断使能
  55   1      }
C51 COMPILER V7.50   PCA_CAP                                                               08/22/2007 14:50:11 PAGE 2   

  56          void config(){
  57   1      //看门狗禁止
  58   1              WDTCN = 0x07;   
  59   1          WDTCN = 0xDE;   
  60   1              WDTCN = 0xAD;
  61   1              SFRPAGE = 0x0F;
  62   1      //交叉开关配置,CEX4配置在P0.4,T3输出配置在P0.6
  63   1              XBR0 = 0x30;    
  64   1              XBR1 = 0x00;    
  65   1              XBR2 = 0x40;
  66   1              XBR3 = 0x01;   
  67   1      //管脚输出配置,P0口为开漏输出,其中P0.6接上拉电阻,P1为数字输入口
  68   1              SFRPAGE = 0x0F;
  69   1              P0MDOUT = 0x00; 
  70   1              P1MDIN = 0xFF;  
  71   1      //晶振配置,采用内部晶振8分频
  72   1              SFRPAGE = 0x0F;
  73   1              CLKSEL = 0x00;  
  74   1              OSCXCN = 0x00;  
  75   1              OSCICN = 0x84;  
  76   1      }
  77          uchar idata x;
  78          uchar idata fifo[60];  //用数组构建产度为60的队列
  79          uchar fifoAdd(uchar a){//队列元素增加
  80   1              uchar i;
  81   1              for(i= 0;i<59;i++){
  82   2                      fifo[59-i]=fifo[58-i];
  83   2              }
  84   1              fifo[0] = a;
  85   1              return fifo[0];
  86   1      }
  87          void main(void){//测试时将P0.6与P0.4口相连
  88   1              xdata uint freset=1000;
  89   1              config();
  90   1              t3_ini();
  91   1              t3_fre_set(freset);
  92   1              T3RUN;
  93   1              EA=1;
  94   1              num1=0;
  95   1              isnewdata=0;
  96   1              pcaini();
  97   1              pca4ini();
  98   1              while(1){
  99   2                      if(isnewdata){
 100   3                              isnewdata=0;
 101   3                              fifoAdd(x);
 102   3                              /*if(num1>=10)
 103   3                                      num1=0;*/
 104   3                      }
 105   2              }
 106   1      }
 107          void PCA_ISR(void) interrupt 9 using 1 {
 108   1      /*      static xdata uint tmpcnt=0;
 109   1              if(CCF4){
 110   1                      pcacap4[num1]=PCA0CP4-tmpcnt;
 111   1                      tmpcnt=PCA0CP4;
 112   1                      num1++;
 113   1                      CCF4=0;
 114   1              }*/
 115   1              //delay1ms();
 116   1              P1 = 0xff;
 117   1              x = P1;
C51 COMPILER V7.50   PCA_CAP                                                               08/22/2007 14:50:11 PAGE 3   

 118   1              isnewdata=1;
 119   1      
 120   1        }             
 121          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    233    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     20       2
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =     61    ----
   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 + -