STC15W408AS library 0.12.0
Loading...
Searching...
No Matches
uart1_mode1_timer2_12T.h
Go to the documentation of this file.
1#ifndef STC15_UART1MODE1_T212H
2#define STC15_UART1MODE1_T212H
3
53#include <stdint.h>
54
55#include <sys.h>
56#include <bits.h>
57#include <frequency.h>
58#include <interrupt.h>
59#include <uart1_shared.h>
60#include <uart1_8bit_shared.h>
61
67typedef enum
68{
70 baudrate_1200 = 0xFF3F,
72 baudrate_2400 = 0xFF9F,
74 baudrate_4800 = 0xFFCF,
76 baudrate_9600 = 0xFFE7,
78
96#define uart1_mode1_timer2_12T_init(pins) \
97do { \
98 \
99 enable_mcu_interrupts(); \
100 enable_uart1_interrupt(); \
101 disable_timer2_interrupt(); \
102 \
103 PCON &= 0x3F; \
104 SCON = 0x50; \
105 \
106 /* The clock source of Timer 2 is SYSclk/12. AUXR.T2x12 = 0 */ \
107 /* AUXR.UART_M0x6 = 0 */ \
108 /* Timer2 is not started. AUXR.T2R = 0 */ \
109 /* Timer2 are used as timer. AUXR.T2_C/T = 0 */ \
110 AUXR &= 0xC2; \
111 \
112 /* Select Timer2 as UART1 baud rate generator. AUXR.S1ST2 = 1; */ \
113 bit_set(AUXR, SBIT0); \
114 \
115 /* Point-to-point mode */ \
116 bit_clr(CLK_DIV, CBIT4); \
117 \
118 /* Set AUXR1 bits 6, 7 to select RxD/TxD pins */ \
119 AUXR1 &= 0x3F; \
120 AUXR1 |= pins; \
121} while(0)
122
135#define uart1_mode1_timer2_12T_start(baudrate) \
136do { \
137 /* Set TH TL values */ \
138 T2L = baudrate & 0xFF; \
139 T2H = baudrate >> 8; \
140 \
141 /* Start Timer2 */ \
142 bit_set(AUXR, SBIT4); \
143} while(0)
144
160#define uart1_mode1_timer2_12T_ticks(baudrate) (65536 - ((((MAIN_Fosc / 12) / baudrate) >> 2) >> get_frequency_divider_scale()))
161
173#define uart1_mode1_timer2_12T_start_ext(baudrate) \
174do { \
175 const uint16_t ticks = uart1_mode1_timer2_12T_ticks(baudrate);\
176 \
177 /* Set TH TL values */ \
178 T2L = ticks & 0xFF; \
179 T2H = ticks >> 8; \
180 \
181 /* Start Timer2 */ \
182 bit_set(AUXR, SBIT4); \
183} while (0)
184
192#define uart1_mode1_timer2_12T_stop (bit_clr(AUXR, CBIT4))
193
200#define is_uart1_mode1_timer2_12T_started() (test_if_bit_set(AUXR, SBIT4))
201
202#endif
uart1_mode1_timer2_12t_baudrate_t
UART1 precalculated baudrates.
Definition uart1_mode1_timer2_12T.h:68
@ baudrate_2400
2400 baudrate
Definition uart1_mode1_timer2_12T.h:72
@ baudrate_1200
1200 baudrate
Definition uart1_mode1_timer2_12T.h:70
@ baudrate_9600
9600 baudrate
Definition uart1_mode1_timer2_12T.h:76
@ baudrate_4800
4800 baudrate
Definition uart1_mode1_timer2_12T.h:74