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

📄 t2t3t4_pro.lst

📁 基于C8051F040的液晶
💻 LST
字号:
C51 COMPILER V7.50   T2T3T4_PRO                                                            08/05/2007 17:15:42 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE T2T3T4_PRO
OBJECT MODULE PLACED IN t2t3t4_pro.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\c51.exe t2t3t4_pro.c DB OE

line level    source

   1          //////////T法测频调试程序改进版/////////////
   2          /////////t3 频率方波输出//////////////
   3          /////////t4 脉冲计数/////////////////////
   4          /////////t2 计时////////////////////////////
   5          /////////t2t3t4_pro.c//////////////////////////
   6          #include <C8051F040.h>
   7          #define T3RUN temppage=SFRPAGE;SFRPAGE=0x01;TR3=1;SFRPAGE=temppage
   8          #define T4RUN temppage=SFRPAGE;SFRPAGE=0x02;TR4=1;SFRPAGE=temppage
   9          #define T4STOP temppage=SFRPAGE;SFRPAGE=0x02;TR4=0;SFRPAGE=temppage
  10          #define T3STOP temppage=SFRPAGE;SFRPAGE=0x01;TR3=0;SFRPAGE=temppage
  11          typedef unsigned int uint;
  12          typedef unsigned char uchar;
  13          typedef unsigned long ulong;
  14          sfr16 RCAP2=0xca;
  15          sfr16 RCAP3=0xca;
  16          sfr16 RCAP4=0xca;
  17          sfr16 TMR4=0xcc;
  18          sfr16 TMR3=0xcc;
  19          sfr16 TMR2=0xcc;
  20          uchar temppage;
  21          uchar tf2num;
  22          bit isnewdata;
  23          ulong freTime;
  24          bit isfilter;
  25          void t4ISR();
  26          void t2ISR();
  27          void delay1ms(uint time){//延迟1ms
  28   1              uint i;
  29   1              uint j;
  30   1              for (i=0;i<time;i++){
  31   2                      for(j=0;j<300;j++);
  32   2              }
  33   1      }       
  34          void t3_fre_set(uint val){//T3频率设置,计算公式为:(T3时钟频率/(2*val))
  35   1              temppage=SFRPAGE;
  36   1              SFRPAGE=0x01;
  37   1              RCAP3=~val+1;
  38   1              TMR3=RCAP3;
  39   1              SFRPAGE=temppage;
  40   1      }
  41          void t3_ini(){//t3为频率输出模式
  42   1              temppage=SFRPAGE;
  43   1              SFRPAGE=0x01;
  44   1              TMR3CN=0x00;//TR3=0,T3尚未启动
  45   1              TMR3CF=0x0e;//T3采用系统时钟,TOG3=1,T3不计数时输出为1,DCEN=0
  46   1              SFRPAGE=temppage;
  47   1      }
  48          void t4_ini(){//T4为计数模式
  49   1              temppage=SFRPAGE;
  50   1              SFRPAGE=0x02;
  51   1              TMR4CF=0X00;//计数模式下,对T4M1-T4M0设置无效,DCEN=0,向下计数禁止
  52   1              TMR4CN=0X02;//CT4=1,T4为计数器模式
  53   1              SFRPAGE=0X00;
  54   1              EIE2|=0X04;//T4中断使能
  55   1              SFRPAGE=temppage;
C51 COMPILER V7.50   T2T3T4_PRO                                                            08/05/2007 17:15:42 PAGE 2   

  56   1      }
  57          void t2_ini(){//t2为定时器模式,采用系统时钟12分频
  58   1              temppage=SFRPAGE;
  59   1              SFRPAGE=0x00;
  60   1              TMR2CN=0X00;//定时器模式,自动重载
  61   1              TMR2CF=0x00;//DCEN=0,向下计数禁止,采用系统时钟
  62   1              RCAP2=0x0000;
  63   1              TMR2=0x0000;
  64   1              SFRPAGE=0X00;
  65   1              IE|=0X20;//T2中断使能
  66   1              SFRPAGE=temppage;
  67   1      }
  68          void t2_start(){
  69   1              temppage=SFRPAGE;
  70   1              SFRPAGE=0x00;
  71   1              TMR2=0x0000;
  72   1              TF2=0;
  73   1              TR2=1;
  74   1              SFRPAGE=temppage;
  75   1      }
  76          void t4_set(uint val){//val为计数脉冲数
  77   1              temppage=SFRPAGE;
  78   1              SFRPAGE=0x02;
  79   1              RCAP4=~val+1;
  80   1              TMR4=RCAP4;
  81   1              SFRPAGE=temppage;
  82   1      }
  83          void startCount(uint val){//开始计时
  84   1              t4_set(1);
  85   1              T4RUN;
  86   1              while(!isfilter);
  87   1              t4_set(val);
  88   1              T4RUN;
  89   1              tf2num=0;
  90   1              t2_start();
  91   1              isnewdata=0;
  92   1      }
  93          void config(){
  94   1      //看门狗禁止
  95   1              WDTCN = 0x07;   
  96   1          WDTCN = 0xDE;   
  97   1              WDTCN = 0xAD;
  98   1              SFRPAGE = 0x0F;
  99   1      //交叉开关配置,T3=P0.0,T4=P0.1,测试时将T3与T4相连
 100   1              XBR0 = 0x00;    
 101   1              XBR1 = 0x00;    
 102   1              XBR2 = 0x48;
 103   1              XBR3 = 0x01;   
 104   1      //管脚输出配置,P0口为开漏输出,其中P0.0接上拉电阻,P0为数字输入口
 105   1              SFRPAGE = 0x0F;
 106   1              P0MDOUT = 0x00; 
 107   1              P1MDIN = 0xFF;  
 108   1      //晶振配置,采用内部晶振8分频
 109   1              SFRPAGE = 0x0F;
 110   1              CLKSEL = 0x00;  
 111   1              OSCXCN = 0x00;  
 112   1              OSCICN = 0x84;  
 113   1      }
 114          void main(void){
 115   1              xdata ulong t3frequency[5];
 116   1              uint frenum=100;
 117   1              ulong fre_factor;
C51 COMPILER V7.50   T2T3T4_PRO                                                            08/05/2007 17:15:42 PAGE 3   

 118   1              uchar k=0;
 119   1              config();
 120   1              t2_ini();
 121   1              t3_ini();
 122   1              t4_ini();
 123   1              EA=1;
 124   1              fre_factor=255208L*(ulong)frenum;
 125   1              t3_fre_set(1000);
 126   1              T3RUN;
 127   1              startCount(frenum);
 128   1              isnewdata=0;
 129   1              while(1){
 130   2                      if(isnewdata){
 131   3                              if(k>=5)
 132   3                                      k=0;//在此设断点观察数据
 133   3                              t3frequency[k++]=fre_factor/freTime;
 134   3                              delay1ms(100);
 135   3                              startCount(frenum);
 136   3                              }
 137   2              }
 138   1      }
 139          void t4ISR() interrupt 16 {//frenum个频率计满,产生T4中断
 140   1              temppage=SFRPAGE;
 141   1              SFRPAGE=0X00;
 142   1              TR2=0;//将T2停止,并计算frenum个脉冲所需要的时间,从而可以计算频率
 143   1              freTime=TMR2;
 144   1              SFRPAGE=0X02;
 145   1              TR4=0;
 146   1              TF4=0;
 147   1              isnewdata=1;
 148   1              isfilter=1;
 149   1              freTime+=65536L*tf2num;//需要加上T2的溢出时间
 150   1              //注意若频率不是很高,frenum不宜过大,否则会使freTime计算溢出
 151   1              //若精度有要求,可采用浮点运算
 152   1              SFRPAGE=temppage;
 153   1      }
 154          void t2ISR() interrupt 5{//T2定时溢出处理
 155   1              temppage=SFRPAGE;
 156   1              SFRPAGE=0X00;
 157   1              TF2=0;
 158   1              tf2num++;
 159   1              SFRPAGE=temppage;
 160   1      }
 161          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    554    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      20
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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