ATMEGA168串口初始化及接收和发送函数
时间: 2023-07-29 22:11:32 浏览: 133
RXD.zip_atmega16串口发送_zip
ATGA168是一款8位微控制器,它具有多个串口,可以进行数据的收发。以下是ATMEGA168串口初始化及接收和发送函数的示例代码:
串口初始化:
```c
void USART_Init(unsigned int baud) {
unsigned int ubrr;
/* 计算波特率寄存器值 */
ubrr = F_CPU/16/baud-1;
/* 设置波特率寄存器 */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/* 使能接收和发送 */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* 设置帧格式: 8bit数据位,1bit停止位 */
UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
}
```
串口接收函数:
```c
unsigned char USART_Receive(void) {
/* 等待接收完成 */
while (!(UCSR0A & (1<<RXC0)));
/* 返回接收到的数据 */
return UDR0;
}
```
串口发送函数:
```c
void USART_Transmit(unsigned char data) {
/* 等待发送缓冲区为空 */
while (!(UCSR0A & (1<<UDRE0)));
/* 将数据写入发送缓冲区 */
UDR0 = data;
}
```
其中,baud为波特率,F_CPU为主频。在使用串口之前,需要先进行串口初始化,设置波特率、帧格式、使能接收和发送等参数。接收函数等待接收完成,然后返回接收到的数据;发送函数等待发送缓冲区为空,然后将数据写入发送缓冲区。
阅读全文