在Atmega 2560中,UBRR(USART Baud Rate Register)用于配置串口的波特率。下面是一个示例代码,展示如何在Atmega 2560中配置UBRR。
首先,你需要包含avr/io.h头文件以访问Atmega 2560的寄存器定义。
#include
void USART_Init(unsigned int ubrr) {
// 设置波特率
UBRR0H = (unsigned char)(ubrr >> 8);
UBRR0L = (unsigned char)ubrr;
// 启用接收和发送
UCSR0B = (1 << RXEN0) | (1 << TXEN0);
// 设置帧格式:8个数据位,1个停止位
UCSR0C = (1 << UCSZ00) | (1 << UCSZ01);
}
void USART_Transmit(unsigned char data) {
// 等待发送缓冲区为空
while (!(UCSR0A & (1 << UDRE0)));
// 将数据写入发送缓冲区
UDR0 = data;
}
unsigned char USART_Receive() {
// 等待接收完成
while (!(UCSR0A & (1 << RXC0)));
// 返回接收到的数据
return UDR0;
}
int main(void) {
// 配置波特率为9600
USART_Init(103);
// 循环发送数据
while (1) {
USART_Transmit('A');
}
}
在上面的代码中,USART_Init
函数用于初始化串口,传入参数ubrr
用于设置波特率。USART_Transmit
函数用于发送一个字节的数据,USART_Receive
函数用于接收一个字节的数据。
在main
函数中,我们调用USART_Init
函数来配置波特率为9600。然后,我们在一个无限循环中使用USART_Transmit
函数发送字符'A'。
请注意,上述代码使用的是Atmega 2560的USART0。如果你使用的是USART1或其他USART通道,请相应地更改寄存器和函数名。