zoukankan      html  css  js  c++  java
  • 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);
    }
  • 相关阅读:
    Linux内核配置过程
    Linux内核最顶层文档
    LeetCode 11月第2周题目汇总
    Chapter0
    序列加法的讨论
    ch2-基本工具介绍
    ch1-数据科学概述
    在Linux下制作Linux&windows启动盘
    VMware Workstation 与 Device/Credential Guard 不兼容?
    Linux mint 19.3配置CUDA+安装Tensorflow
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2312375.html
Copyright © 2011-2022 走看看