📄 timer.lst
字号:
C51 COMPILER V7.09 TIMER 01/12/2007 09:30:15 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timer.c ROM(COMPACT) OPTIMIZE(9,SPEED) BROWSE MODP2 DEBUG OBJECTEXTEND PREP
-RINT
line level source
1 /*=============================================================================*/
2 // time.c - source file for lme2200 API
3 //
4 // Copyright 2005, Leaguer MicroElectronics Co., Ltd
5 // www.leaguerme.com
6 /*=============================================================================*/
7
8 #include <REG922.H>
9
10 #include "sart.h"
11 #define uint unsigned int
12 #define uchar unsigned char
13
14 uchar tm_count, count_reload;
15 uchar inter;
16 // Logic timers
17 void (*t0_proc)(); // pointer to a functin that returns void
18 uint t0_count;
19 uint t0_val;
20 bit t0_enable;
21
22 void (*t1_proc)(); // pointer to a functin that returns void
23 uint t1_count;
24 uint t1_val;
25 bit t1_enable;
26 /**/
27 void (*t2_proc)(); // pointer to a functin that returns void
28 uint t2_count;
29 uint t2_val;
30 bit t2_enable;
31
32 void (*t3_proc)(); // pointer to a functin that returns void
33 uchar t3_count;
34 uchar t3_val;
35 bit t3_enable;
36 /**/
37 void (*t4_proc)(); // pointer to a functin that returns void
38 uint t4_count;
39 uint t4_val;
40 bit t4_enable;
41
42 /*=============================================================================*/
43
44 void timer0_init(uchar interval, uchar count)
45 {
46 1
47 1
48 1
49 1 TMOD = (TMOD & 0xF0) | 0x01; /* Set Mode 2 (8 bit reload) 使用T0与串口*/
50 1 TAMOD = 0x00;
51 1
52 1 TH0 = interval; // count 185 times from 71 to 256
53 1 // = 50 us, Reload TL0 to count count_val clocks TH0 = 0x47 */
54 1 TL0 = 0; // In LPC922
C51 COMPILER V7.09 TIMER 01/12/2007 09:30:15 PAGE 2
55 1 inter=TH0;
56 1
57 1 EX1 = 1; //<----------------开外部中断1
58 1 IT1 = 1; //<---------------- 外部中断下沿触发
59 1 ET0 = 1; /* Enable Timer 0 Interrupts */
60 1 TR0 = 1; /* Start Timer 0 Running */
61 1 EA = 1; /* Global Interrupt Enable */
62 1
63 1 // IP0 = 0X02; // TO定时器为一级优先级
64 1 // IP0H = 0X00;
65 1 count_reload = count;
66 1 tm_count = count;
67 1
68 1 t0_enable = 0;
69 1 t1_enable = 0;
70 1 t2_enable = 0;
71 1 t3_enable = 0;
72 1 t4_enable = 0;
73 1 }
74
75
76 /*=============================================================================*/
77 // Timer 1 Interrupt Service Routine.
78
79 // Interrupt is generated everytime timer1 overflows.
80 /*=============================================================================*/
81
82 void timer0_ISR (void) interrupt 1
83 {
84 1 TH0 = inter; //重装计时 1ms
85 1 TL0 = 0;
86 1
87 1
88 1
89 1 if (t0_enable == 1) { //1.6秒定时
90 2 t0_count++;
91 2 if (t0_count == t0_val) {
92 3 t0_count = 0;
93 3 t0_proc();
94 3 }
95 2 }
96 1
97 1 if (tm_count-- == 0) {//<--------------计10ms
98 2
99 2 tm_count = count_reload; //10
100 2
101 2 if (t1_enable == 1) { //定时LED为300ms
102 3 t1_count++;
103 3 if (t1_count == t1_val) {
104 4 t1_count = 0;
105 4 t1_proc();
106 4 }
107 3 }
108 2
109 2 if (t2_enable == 1) { //40S定时器
110 3 t2_count++;
111 3 if (t2_count == t2_val) {
112 4 t2_count = 0;
113 4 t2_proc();
114 4 }
115 3 }
116 2
C51 COMPILER V7.09 TIMER 01/12/2007 09:30:15 PAGE 3
117 2
118 2 if (t3_enable == 1) { //150ms计中断脉宽
119 3 t3_count++;
120 3 if (t3_count == t3_val) {
121 4 t3_count = 0;
122 4 t3_proc();
123 4 }
124 3 }
125 2 if (t4_enable == 1) { //
126 3 t4_count++;
127 3 if (t4_count == t4_val) {
128 4 t4_count = 0;
129 4 t4_proc();
130 4 }
131 3 }
132 2 }
133 1
134 1 }
135 /*===============================看门狗初始化==================================*/
136
137 void wdt_init()
138 {
139 1 ACC = WDCON; //<------读取WDT控制寄存器
140 1 ACC = ACC| 0x74; //<------置位ACC.2,准备启动WDT
141 1 WDL = 0xff; //<------设置8位倒计时初值
142 1 WDCON = ACC; //<------启动WDT
143 1 WFEED1 = 0xA5; //<------清第一部分
144 1 WFEED2 = 0x5A; //<------清第二部分
145 1
146 1 }
147 /*=============================================================================*/
148
149 void clr_wdt()
150 {
151 1 EA = 0; //<------关中断
152 1 WFEED1 = 0xA5; //<------清第一部分
153 1 WFEED2 = 0x5A; //<------清第二部分
154 1 // Rxok = ~Rxok; //<------显示
155 1 EA = 1; //<------开中断
156 1 }
157 /*=============================================================================*/
158
159 void setup_t0(uint t0, void (*proc)())
160 {
161 1 t0_val = t0; //100次为1s
162 1 t0_proc = proc; //时间到设timeout_1s = 1;
163 1 t0_count = 0;
164 1 t0_enable = 1;
165 1
166 1 }
167 /*=============================================================================*/
168
169
170 void disable_t0(void)
171 {
172 1 t0_enable = 0;
173 1 }
174
175
176 void setup_t1(uint t, void (*proc)())
177 {
178 1 t1_val = t;
C51 COMPILER V7.09 TIMER 01/12/2007 09:30:15 PAGE 4
179 1 t1_proc = proc;
180 1 t1_count = 0;
181 1 t1_enable = 1;
182 1
183 1 }
184
185 void disable_t1(void)
186 {
187 1 t1_enable = 0;
188 1 Rxok = 1;
189 1 }
190 /**/
191 /*=============================================================================*/
192
193 void setup_t2(uint t, void (*proc)())
194 {
195 1 t2_val = t;
196 1 t2_proc = proc;
197 1 t2_count = 0;
198 1 t2_enable = 1;
199 1
200 1 }
201
202 /*=============================================================================*/
203
204 /**//**/
205 void disable_t2(void)
206 {
207 1 t2_enable = 0;
208 1 }
209
210 void setup_t3(uint t, void (*proc)())
211 {
212 1 t3_val = t;
213 1 t3_proc = proc;
214 1 t3_count = 0;
215 1
216 1 t3_enable = 1;
217 1 }
218
219 void disable_t3(void)
220 {
221 1 t3_enable = 0;
222 1 }
223
224 void setup_t4(uint t, void (*proc)())
225 {
226 1 t4_val = t;
227 1 t4_proc = proc;
228 1 t4_count = 1;
229 1
230 1 t4_enable = 1;
231 1 }
232
233 void disable_t4(void)
234 {
235 1 t4_enable = 0;
236 1
237 1 }
238 /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$<<<<<软件说明>>>>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* /
239
240 /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$<<<<<软件说明>>>>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
C51 COMPILER V7.09 TIMER 01/12/2007 09:30:15 PAGE 5
241
242
243
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 408 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 36 ----
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 + -