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

📄 timer.lst

📁 单片机实现消息队列的例子
💻 LST
字号:
C51 COMPILER V7.10   TIMER                                                                 12/14/2004 10:51:16 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN .\Timer.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\Timer.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.
                    -\Timer.lst) OBJECT(.\Timer.obj)

line level    source

   1          /*************************************************/
   2          
   3          /****************定时器************************/
   4          
   5          /*************2003年2月9日*********************/
   6          
   7          /************WROTE BY WANGSW********************/
   8          /*
   9          寄存器说明:
  10          1       TCON:中断标志寄存器
  11                  TF1(8F)         T1中断标志位
  12                  TR1(8E)         T1启停位        
  13                  TF0(8D)         T0中断标志位
  14                  TR0(8C)         T0启停位
  15          2       TMOD:定时器方式寄存器
  16                  GATE    |       C/~T    |       M1,M0   |GATE   |       C/~T    |       M1,M0   |
  17                  \______________________________/        0 ~INT0  0      定时器    0 , 0 -----方式0
  18                                          T1                                      无关     1      计数器    0 ,  1        -----方式1
  19                  对应                                                    1 ~INT0     模式                  1 ,  0        -----方式2
  20                  INT1                                                            有关                                      1 ,  1        -----方式3
  21          
  22          
  23          3       工作方式:
  24                  方式0:13位计数器TL的搞三位不用
  25                  方式1:16位计数器
  26                  方式2:可循环8位计数器,适用于UART
  27                  方式3:T0与T1不同
  28                  定时器1 只能按不需要中断的方式2工作
  29                  此模式下定时器0 的TL0 及TH0 作为两个独立的8 位计数器/定时器
  30                  TL0 占用定时器0 的TF0 TH0 
  31                  TL1 占用定时器1 的TR1和TF1
  32                  
  33          */
  34          
  35          #include "reg52x2.h"  
  36          
  37          #include "define.h"
  38          
  39          #include "timer.h"
  40          
  41          
  42          
  43          
  44          
  45          
  46          
  47          /******************************************************************************************
  48          *函数名:                timer0
  49          *参数:                  bStart                  设置定时/计数器0是否开始工作
  50                                          bInt0Relation   定时/计数器0是否与INT0有关,此位设置即影响TMOD
  51                                                                          中关于定时/计数器0的GATE位
  52                                          bTimerMode              定时/计数器0是否是定时器模式,bTimerMode=1,即进入
  53                                                                          定时器模式;bTimerMode=0,即进入计数器模式
  54                                          bInterruptEnable        定时/计数器0中断使能
C51 COMPILER V7.10   TIMER                                                                 12/14/2004 10:51:16 PAGE 2   

  55                                          WorkMode                定时/计数器0工作模式设定
  56                                          TH0Data                 定时/计数器0高8位定时计数器数据
  57                                          TL0Data                 定时/计数器0低8位定时计数器数据 
  58          *返回值:                无
  59          *描述:                  对定时/计数器0的工作模式以及一些设置进行设定,并可以
  60                                          启动定时/计数器0开始工作
  61          *编写:                  王绍伟
  62          *版本信息:              V1.0                    2003年8月15日
  63          ******************************************************************************************/
  64          extern void timer0(bool bStart,
  65                                            bool bInt0Relation,
  66                                            bool bTimerMode,
  67                                            bool bInterruptEnable,
  68                                            byte WorkMode,
  69                                            byte TH0Data,
  70                                            byte TL0Data)
  71          {       
  72   1              TF0 = 0;                /*定时器中断标志位*/
  73   1      
  74   1              if(bInt0Relation)       /*是否受INT0控制*/
  75   1              {
  76   2                      SETBIT(TMOD, 3);
  77   2              }
  78   1              else
  79   1              {
  80   2                      RESETBIT(TMOD, 3);
  81   2              }
  82   1              if(bTimerMode)          /*定时器计数器模式,TRUE为定时器,FALSE为计数器*/
  83   1              {
  84   2                      RESETBIT(TMOD, 2);
  85   2              }
  86   1              else
  87   1              {
  88   2                      SETBIT(TMOD, 2);
  89   2              }
  90   1              if(WorkMode & 0x02)             /*定时/计数器0工作方式设定*/
  91   1              {
  92   2                      SETBIT(TMOD, 1);                
  93   2              }
  94   1              else
  95   1              {
  96   2                      RESETBIT(TMOD, 1);
  97   2              }
  98   1              if(WorkMode & 0x01)
  99   1              {
 100   2                      SETBIT(TMOD, 0);
 101   2              }
 102   1              else
 103   1              {
 104   2                      RESETBIT(TMOD, 0);
 105   2              }
 106   1              TH0 = TH0Data;
 107   1              TL0 = TL0Data;
 108   1      
 109   1              ET0 = bInterruptEnable;
 110   1              TR0 = bStart;
 111   1      
 112   1      }
 113          
 114          
 115          
 116          /******************************************************************************************
C51 COMPILER V7.10   TIMER                                                                 12/14/2004 10:51:16 PAGE 3   

 117          *函数名:                timer2
 118          *参数:          bStart                  设置定时/计数器2是否开始工作
 119                                          TH2Data                 定时器2初值设置
 120          *返回值:                无
 121          *描述:          定时器2设置程序,在这里定时/计数器2为可重复装载递增
 122                                          16位定时器,设置为每5ms产生一次溢出中断
 123          *编写:                  王绍伟
 124          *版本信息:              V1.0                    2003年8月15日
 125          ******************************************************************************************/
 126          extern void timer2(bool bStart, byte TH2Data)
 127          {
 128   1      
 129   1      #ifdef SPEEDUP  
 130   1              TH2 = TH2Data;
 131   1              RCAP2H = TH2Data;
 132   1      #else
              /*
                      当非加速模式时,让至溢出的定时计数次
                      数为原来加速模式的一半
              */
                      byte temp;
                      temp = 0x100 - TH2Data;                         
                      temp = (temp >> 1) + TH2Data;                   
                      TH2 = temp;                                                     
                      RCAP2H = temp;
              #endif
 143   1              ET2 = 1;
 144   1              TL2 = 0x00;
 145   1              RCAP2L = 0x00;
 146   1              T2MOD = 0x00;
 147   1              if(bStart)
 148   1              {
 149   2                      T2CON = 0x04;
 150   2              }
 151   1              else
 152   1              {
 153   2                      T2CON = 0x00;
 154   2              }
 155   1      }
 156          
 157          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    100    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       4
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       5
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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