STC15W408AS library 0.12.0
Loading...
Searching...
No Matches
uart1_mode3_timer2_1T.h
Go to the documentation of this file.
1#ifndef STC15_UART1MODE3_T21H
2#define STC15_UART1MODE3_T21H
3
4#include <stdint.h>
5
6#include <sys.h>
7#include <bits.h>
8#include <frequency.h>
9#include <interrupt.h>
10#include <uart1_shared.h>
11#include <uart1_9bit_shared.h>
12
87
105#define uart1_mode3_timer2_1T_init(pins) \
106do { \
107 enable_mcu_interrupts(); \
108 enable_uart1_interrupt(); \
109 disable_timer2_interrupt(); \
110 \
111 PCON &= 0x3F; \
112 SCON = 0xD0; \
113 \
114 /* The clock source of Timer 2 is SYSclk/12. AUXR.T2x12 = 0 */ \
115 /* AUXR.UART_M0x6 = 0 */ \
116 /* Timer2 is not started. AUXR.T2R = 0 */ \
117 /* Timer2 are used as timer. AUXR.T2_C/T = 0 */ \
118 AUXR &= 0xC2; \
119 /* The clock source of Timer 2 is SYSclk. AUXR.T2x12 = 1 */ \
120 bit_set(AUXR, SBIT2); \
121 \
122 /* Select Timer2 as UART1 baud rate generator. AUXR.S1ST2 = 1; */ \
123 bit_set(AUXR, SBIT0); \
124 \
125 /* Point-to-point mode */ \
126 bit_clr(CLK_DIV, CBIT4); \
127 \
128 /* Set AUXR1 bits 6, 7 to select RxD/TxD pins */ \
129 AUXR1 &= 0x3F; \
130 AUXR1 |= pins; \
131} while (0)
132
145#define uart1_mode3_timer2_1T_start(baudrate) \
146do { \
147 /* Set TH TL values */ \
148 T2L = baudrate & 0xFF; \
149 T2H = baudrate >> 8; \
150 \
151 /* Start Timer2 */ \
152 bit_set(AUXR, SBIT4); \
153} while (0)
154
170#define uart1_mode3_timer2_1T_ticks(baudrate) (65536 - (((MAIN_Fosc / baudrate) >> 2) >> get_frequency_divider_scale()))
171
183#define uart1_mode3_timer2_1T_start_ext(baudrate) \
184do { \
185 const uint16_t ticks = uart1_mode3_timer2_1T_ticks(baudrate);\
186 \
187 /* Set TH TL values */ \
188 T2L = ticks & 0xFF; \
189 T2H = ticks >> 8; \
190 \
191 /* Start Timer2 */ \
192 bit_set(AUXR, SBIT4); \
193} while (0)
194
202#define uart1_mode3_timer2_1T_stop() (bit_clr(AUXR, CBIT4))
203
210#define is_uart1_mode3_timer2_1T_started() (test_if_bit_set(AUXR, SBIT4))
211
212#endif
uart1_mode2_timer2_1t_baudrate_t
UART1 precalculated baudrates.
Definition uart1_mode3_timer2_1T.h:69
@ baudrate_2400
2400 baudrate
Definition uart1_mode3_timer2_1T.h:73
@ baudrate_1200
1200 baudrate
Definition uart1_mode3_timer2_1T.h:71
@ baudrate_19200
19200 baudrate
Definition uart1_mode3_timer2_1T.h:79
@ baudrate_9600
9600 baudrate
Definition uart1_mode3_timer2_1T.h:77
@ baudrate_38400
38400 baudrate
Definition uart1_mode3_timer2_1T.h:81
@ baudrate_4800
4800 baudrate
Definition uart1_mode3_timer2_1T.h:75
@ baudrate_115200
115200 baudrate
Definition uart1_mode3_timer2_1T.h:85
@ baudrate_57600
57600 baudrate
Definition uart1_mode3_timer2_1T.h:83