STC15W408AS library 0.15.0
Loading...
Searching...
No Matches
timer2_mode0.h
Go to the documentation of this file.
1#ifndef STC15_TIMER2_MODE0H
2#define STC15_TIMER2_MODE0H
3
27#include <sys.h>
28#include <bits.h>
29#include <interrupt.h>
30
31#include <stdint.h>
32#include <stdbool.h>
33
34#include <timer_structs.h>
35
40
48#define timer2_mode0_12T_init() \
49do { \
50 enable_mcu_interrupts(); \
51 enable_timer2_interrupt(); \
52 AUXR &= 0xE2; \
53} while(0)
54
63#define timer2_mode0_1T_init() \
64do { \
65 enable_mcu_interrupts(); \
66 enable_timer2_interrupt(); \
67 AUXR &= 0xE2; \
68 AUXR |= 0x05; \
69} while(0)
71
76
83#define timer2_mode0_enable_P30_output() (bit_set(INT_CLKO, SBIT2))
84
90#define timer2_mode0_disable_P30_output() (bit_clr(INT_CLKO, CBIT2))
91
99#define is_timer2_mode0_P30_output_enabled() (test_if_bit_set(INT_CLKO, SBIT2))
100
102
107
127#define timer2_mode0_start(ticks) \
128do { \
129 timer2_mode0_reload(ticks); \
130 \
131 bit_set(AUXR, SBIT4); \
132} while(0)
133
153#define timer2_mode0_direct_start(th0, tl0) \
154do { \
155 timer2_mode0_direct_reload(th0, tl0); \
156 \
157 bit_set(AUXR, SBIT4); \
158} while(0)
159
166#define timer2_mode0_stop() { \
167 bit_clr(AUXR, CBIT4); /* clear T2 run flag */ \
168}
169
177#define is_timer2_mode0_started() (test_if_bit_set(AUXR, SBIT4))
178
188#define timer2_mode0_reload(ticks) \
189do { \
190 uint16_t value = 0xffff - ticks; \
191 T2L = value & 0xff; \
192 T2H = (value >> 8) & 0xff; \
193} while(0)
194
204#define timer2_mode0_direct_reload(th2, tl2) \
205do { \
206 T2H = th2; \
207 T2L = tl2; \
208} while(0)
209
211
212#endif