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

📄 celiang.lst

📁 脉冲宽度的测量
💻 LST
字号:
C51 COMPILER V7.50   CELIANG                                                               07/17/2007 10:34:42 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CELIANG
OBJECT MODULE PLACED IN CeLiang.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CeLiang.C LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #ifndef CeLiang_Program
   3          #define CeLiang_Program
   4          
   5          #include <regX51.H>
   6          #define _MHZ_ 11.0592    // 设置单片机使用的晶振频率
   7          
   8          typedef unsigned char uchar;
   9          typedef struct times
  10          {  uchar second;       //秒级
  11             uchar m_second;     //50毫秒级
  12             uchar mm_second_1;  //计数器高8位,12/_MHZ_秒级
  13             uchar mm_second_2;  //计数器低8位
  14             long  sum;          //时间
  15          }TIME;
  16          
  17          uchar puls_num;        //脉冲次数
  18          uchar  flag;            //开始计时标志
  19          TIME time[65];         //每次脉冲的时间
  20          
  21          //中断系统初始化
  22          void int0_initial()
  23          {  flag=1;
  24   1         /* 定时、中断初始化 */
  25   1         TMOD = 0x10;    // T1使用定时模式,工作模式1,无门控位
  26   1         TH1 = 0x4C;     // 为T1填入初值,定时时间50ms
  27   1         TL1 = 0x00;
  28   1         IT0 = 1;    // 设置INTR0中断方式为边沿触发方式,负跳变时产生中断
  29   1         PT1 = 1;    // 设置定时器1中断为高优先级
  30   1         EX1 = 1;    // 允许外部中断0中断
  31   1         EA = 1;    // CPU开放中断
  32   1      }
  33          
  34          /* T1溢出中断处理函数 */
  35          void timer1_int() interrupt 3 using 3           //不同级别的中断函数使用不同的工作组
  36          {   TH1 = 0x4C;                                 // 重新填入初值,每次溢出间隔50ms  
  37   1          TL1 = 0x00;                                        
  38   1          time[puls_num].m_second++;
  39   1          if(time[puls_num].m_second==20)           // 计时满1s
  40   1          {  time[puls_num].m_second=0;             // 清0
  41   2             time[puls_num].second++;             // 总秒数增1,溢出时会自动归0
  42   2          }
  43   1      }
  44          
  45          
  46          /* 外部中断0处理函数 */
  47          void intr0_int() interrupt 0 using 2            // INTR0中断,使用工作组2
  48          {  unsigned char tmp1,tmp2;
  49   1         if(flag)
  50   1         {  flag=0;
  51   2            TR1=1;
  52   2            ET1=1;
  53   2         }
  54   1         puls_num++;
  55   1         EA = 0;                   // 关中断
C51 COMPILER V7.50   CELIANG                                                               07/17/2007 10:34:42 PAGE 2   

  56   1         do                        // 读取T1中的内容
  57   1         { tmp1 = TH1;
  58   2           tmp2 = TL1;
  59   2         }while(tmp1 != TH1);     // 数据无效则反复循环
  60   1         time[puls_num].mm_second_1=tmp1;   //在这里不进行时间处理,减少中断处理时间
  61   1         time[puls_num].mm_second_2=tmp2;
  62   1         EA = 1;                  // 开中断
  63   1         if(puls_num==64)
  64   1         {  EA=0;
  65   2         }
  66   1      } 
  67          #endif


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