atmega8 例程:USART串口通信

来源:互联网 发布:石材效果图设计软件 编辑:程序博客网 时间:2024/06/04 21:51

 

 

/******************************************************************  函数库说明:ATMEGA8 串口通信*  版本:      v1.0       *  修改:      庞辉    芜湖联大飞思卡尔工作室                    *  修改日期:  2011年08月03日    *      *  说明:   查询发送、中断接收   *                                                          *  版本更新:                                              *                                                                                          *******************************************************************注意: RXD    PD0*       TXD    PD1******************************************************************/#include <avr/io.h>#include <avr/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);}


 

原创粉丝点击