time_module.lst

来自「用于C51上的modbus协议」· LST 代码 · 共 110 行

LST
110
字号
C51 COMPILER V7.50   TIME_MODULE                                                           07/12/2005 15:35:44 PAGE 1   


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

line level    source

   1          #include "STC89C58.h"
   2          #include "TG01R.h"
   3          
   4          //利用T0定时器以实现精确的延时
   5          #define   Crystal      24000000L                //定义晶体频率11.592MHZ
   6          #define   Base_50us    256-100                  //50us溢出时间基准
   7          static uint      data         Tcounter;     //基准时间计数器
   8          static bit       T0IR;                          //T0中断标志
   9          
  10          void  Delay_50us(uint _time);                   //延时函数,非中断方式,延时时间基准50us
  11          void  TimeOut_Start(uint _time50us);            //开始时间溢出,中断方式,时间基准50us
  12          void  TimeOut_ReStart(uint _time);          //
  13          void  TimeOut_Stop(void);                       //停止时间溢出定时
  14          
  15          /*-------------------------------------------------------------------------------------------
  16          定时器0中断函数 、用以实现定时功能            
  17           -------------------------------------------------------------------------------------------*/    
  18          
  19          void  T0_Val(void)  interrupt   1   using  2    {
  20   1        Tcounter--;
  21   1        if(Tcounter == 0)     {
  22   2          T0IR  = 1;                           //时间定时到,置位标志
  23   2          TR0   = 0;
  24   2        }
  25   1          
  26   1      } 
  27          
  28          
  29          /*-------------------------------------------------------------------------------------------
  30           函数原型:  void  Delay_50us(uint _time50us)                                
  31           参数说明:  _time50us延时时间基准单位为50us 的个数                                                        
  32           返回值:    无 
  33           说明:          用于系统时间定时                  
  34           -------------------------------------------------------------------------------------------*/    
  35          void  Delay_50us(uint _time50us)        {
  36   1        uint  TempCount;
  37   1        TempCount  = _time50us;
  38   1        TMOD |= 0x02;                                 //T0,初值自动重装
  39   1        TH0  =  Base_50us;                            //设置定时初值
  40   1        TL0  =  Base_50us;
  41   1        ET0  =  0;                                    //禁止T0中断
  42   1        TR0  =  1;                                    //计时开始
  43   1        while( TempCount--)   {
  44   2          while(!TF0);TF0  =  0;                      //等待
  45   2        } 
  46   1        TR0  =  0;         
  47   1      } 
  48          
  49          /*-------------------------------------------------------------------------------------------
  50           函数原型:  void  TimeOut_Start(uint _time)                                 
  51           参数说明:  _time 定时时间基准单位为50us 的个数                                                        
  52           返回值:    无 
  53           说明:          用于系统时间延时                  
  54           -------------------------------------------------------------------------------------------*/ 
  55          void  TimeOut_Start(uint _time)
C51 COMPILER V7.50   TIME_MODULE                                                           07/12/2005 15:35:44 PAGE 2   

  56          {
  57   1       Tcounter = _time;
  58   1       TMOD |= 0x02;                                  //T0,初值自动重装
  59   1       TH0  =  Base_50us;                             //设置定时初值
  60   1       TL0  =  Base_50us;
  61   1       T0IR =  0;                                     //清除中断T0标志 
  62   1       ET0  =  1;                                     //使能T0中断
  63   1       EA       =  1;
  64   1       TR0  =  1;                                     //计时开始
  65   1      }                      
  66          
  67          void  TimeOut_ReStart(uint _time)
  68          {
  69   1       TR0  =  0;
  70   1       Tcounter = _time;
  71   1       TH0  =  Base_50us;
  72   1       TL0  =  Base_50us;
  73   1       T0IR =  0;
  74   1       TR0  =  1;
  75   1      }
  76          
  77          
  78          void  TimeOut_Stop(void)
  79          {
  80   1       Tcounter=0;
  81   1       ET0  =   0;
  82   1       TR0  =   0;
  83   1      }
  84          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    105    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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