访问手机版页面
你的位置:老古开发网 > AVR单片机 > ATMega8系列单片机 > 正文  
atmega8 例程:USART串口通信
内容导读:
/****************************************************************** 函数库说明:ATMEGA8 串口通信* 版本: v1.0 * 说明: 查询发送、中断

/*****************************************************************

* 函数库说明:ATMEGA8 串口通信

* 版本: v1.0

* 说明: 查询发送、中断接收

*

******************************************************************

*注意: RXD PD0

* TXD PD1

******************************************************************/

#include

#include interrupt.h>

//晶振频率

#define F_CPU 6000000UL

//波特率

#define BAUD 9600

/*****************************************************************

** 名称:void Init_Usart(void)

** 功能:atmega8 串口初始化

** 入口参数:无

** 出口参数:无

** 使用说明:查询发送,中断接收,8位数据位,1位停止位,9600波特率

*****************************************************************/

void Init_Usart(void)

{

//设置波特率

UBRRH = (F_CPU / BAUD / 16 - 1) / 256;

UBRRL = (F_CPU / BAUD / 16 - 1) % 256;

//接收中断使能,接收使能,发送使能

UCSRB |= (1 << RXCIE) | (1 << RXEN) | (1 << TXEN);

}

/*****************************************************************

** 名称:void Send_Char(char data)

** 功能:atmega8 串口发送字符

** 入口参数:data 发送字符

** 出口参数:无

** 使用说明:查询发送

*****************************************************************/

void Send_Char(char data)

{

//查询方式发送

while(!(UCSRA & (1 << UDRE)));

UDR = data;

}

//主函数

int main(void)

{

Init_Usart();

//总中断使能

sei();

//发送一个字符a

Send_Char('a');

while(1);

return 0;

}

//定义接收字符

volatile char rev_data;

//串口接收中断

SIGNAL(SIG_UART_RECV)

{

rev_data = UDR;

//发送接收到的字符

Send_Char(rev_data);

}


标签: atmega8,usart,串口通信,
来源:互联网 作者:karen 时间:2018/12/12 13:40:01
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐