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 + -
显示快捷键?