当前位置:首页 > 单片机 > 单片机
[导读]/****************************************************************** 函数库说明: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);

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭