STC15W408AS library
0.10.0
Loading...
Searching...
No Matches
include
timer0_mode2.h
Go to the documentation of this file.
1
#ifndef STC15_TIMER0_MODE2H
2
#define STC15_TIMER0_MODE2H
3
28
#include <
sys.h
>
29
#include <bits.h>
30
#include <
interrupt.h
>
31
32
#include <stdint.h>
33
#include <stdbool.h>
34
35
#include <timer_structs.h>
36
42
#define INT0 P32
43
44
//============================== Timer0 mode2 declarations begin ==========================
48
54
#define timer0_mode2_12T_init() \
55
do { \
56
enable_mcu_interrupts(); \
57
enable_timer0_interrupt(); \
58
TMOD &= 0xf0; \
59
TMOD |= 0x02; \
60
bit_clr(AUXR, CBIT7); \
61
} while(0)
62
68
#define timer0_mode2_1T_init() \
69
do { \
70
enable_mcu_interrupts(); \
71
enable_timer0_interrupt(); \
72
TMOD &= 0xf0; \
73
TMOD |= 0x02; \
74
bit_set(AUXR, SBIT7); \
75
} while(0)
77
//============================== Timer0 mode2 declarations end ============================
78
79
84
89
#define timer0_mode2_enable_P35_output() (bit_set(INT_CLKO, SBIT0))
90
96
#define timer0_mode2_disable_P35_output() (bit_clr(INT_CLKO, CBIT0))
97
105
#define is_timer0_mode2_P35_output_enabled() (test_if_bit_set(INT_CLKO, SBIT0))
106
113
#define timer0_mode2_close_gate() (bit_set(TMOD, SBIT3))
114
121
#define timer0_mode2_open_gate() (bit_clr(TMOD, CBIT3))
122
130
#define is_timer0_mode2_gate_opened() (test_if_bit_cleared(TMOD, SBIT3))
131
133
//============================== Timer0 get mode, divider, pins declarations end =======
134
135
136
//============================== Timer0 run/stop declarations start =====================
140
141
151
#define timer0_mode2_reload(ticks) \
152
do { \
153
/* Load timer value */
\
154
TH0 = (0xff - ticks); \
155
} while(0)
156
165
#define timer0_mode2_direct_reload(th0) (TH0 = th0)
166
183
#define timer0_mode2_start(ticks) \
184
do { \
185
timer0_mode2_reload(ticks); \
186
\
187
TF0 = 0;
/* clear timer overload flag */
\
188
TR0 = 1;
/* set run timer flag */
\
189
} while(0)
190
208
#define timer0_mode2_direct_start(th0) \
209
do { \
210
timer0_mode2_direct_reload(th0); \
211
\
212
TF0 = 0; \
213
TR0 = 1; \
214
} while(0)
215
224
#define timer0_mode2_stop() \
225
do { \
226
TR0 = 0;
/* clear run timer flag */
\
227
TF0 = 0;
/* clear timer overload flag */
\
228
} while(0)
229
237
#define is_timer0_mode2_started() (TR0 == 1 && (is_timer0_mode2_gate_opened() || INT0 == 1))
238
240
//============================== Timer0 run/stop declarations end =======================
241
242
//============================== Timer0 run once declarations start =====================
246
265
#define timer0_mode2_delay(ticks) \
266
do { \
267
disable_timer0_interrupt(); \
268
timer0_mode2_start(ticks); \
269
/* Waiting for timer overloaded (timer overload flag set to 1) */
\
270
while(!TF0) \
271
{ \
272
} \
273
timer0_mode2_stop(); \
274
} while(0)
276
//============================== Timer0 run once declarations end =========================
277
278
#endif
interrupt.h
sys.h
Generated by
1.9.8