单片机uart模块化代码
时间: 2023-07-09 14:21:50 浏览: 40
以下是一个基于单片机的UART通信模块化代码:
```
// 宏定义波特率
#define BAUDRATE 9600
// 计算波特率寄存器的值
#define UBRR_VALUE ((F_CPU / (BAUDRATE * 16UL)) - 1)
// 初始化UART通信
void uart_init(void) {
// 设置波特率寄存器
UBRR0H = (uint8_t)(UBRR_VALUE >> 8);
UBRR0L = (uint8_t)UBRR_VALUE;
// 启用接收器和发送器
UCSR0B = (1 << RXEN0) | (1 << TXEN0);
// 设置数据位为8位,无校验位,停止位为1位
UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
}
// 发送一个字符
void uart_putc(char c) {
// 等待发送缓冲区为空
while (!(UCSR0A & (1 << UDRE0)));
// 将字符放入发送缓冲区
UDR0 = c;
}
// 发送一个字符串
void uart_puts(const char* str) {
// 循环发送字符串中的每个字符
while (*str) {
uart_putc(*str++);
}
}
// 接收一个字符
char uart_getc(void) {
// 等待接收缓冲区非空
while (!(UCSR0A & (1 << RXC0)));
// 返回接收缓冲区中的字符
return UDR0;
}
```
以上代码实现了初始化UART通信、发送字符、发送字符串和接收字符的功能。可以将这些函数放在一个单独的文件中,然后在需要使用UART通信的地方包含该文件即可。