• atmega8 例程:USART串口通信


    /***************************************************************** 
    * 函数库说明: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);
    }
  • 相关阅读:
    C/C++ 语言中的表达式求值
    C++中delete与delete[]
    特殊数据类型成员变量的初始化
    C++中的new
    C++数组名解析
    C++中的位拷贝和值拷贝
    while(cin>>s)退出问题
    C++继承中的虚析构函数
    C++的IO标准库介绍
    C++一道面试题(atexit)
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2312375.html
Copyright © 2020-2023  润新知