📄 timer.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 + -