#include <avr/io.h>        // 端口
#include <avr/interrupt.h> // 中断
#ifndef F_CPU
#define  F_CPU 11059200UL
#endif
#define  BAUDRATE    9600
#define Max_BUFF_Len 9   //接收的串口字符长度
uint8_t Uart_Buffer[Max_BUFF_Len];
uint16_t Uart_Rx=0;
uint8_t usart_flag;  //串口标志位
void  init_USART( void ) // USART 初始化
{   UCSRB=0x00;       //禁止发送器和接收器,禁止串口中断UCSRA = 0x00;    //各标志位清零UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);     //写 ,异步,8位数据,无奇偶校验,一个停止位,无倍速UBRRL = (F_CPU/BAUDRATE/16-1)%256; //9600UBRRH = (F_CPU/BAUDRATE/16-1)/256;UCSRB = (1<<TXEN)|(1<<RXEN)|(1<<RXCIE);    // 使能发送 ,使能接收,使能接收中断
}
void uart_send(uint8_t data)
{while(!(UCSRA&(1<<UDRE))); //第五位是否为1,从而满足条件退出循环发送数据UDR=data;while(!(UCSRA&(1<<TXC)));UCSRA|=(1<<TXC); //写1进行清除操作
}void usart_s(uint8_t * ptr)   //发送字符串
{while (*ptr){uart_send(*ptr++);}
}
int main(void)
{init_USART();sei();{uart_send(0x00);if (usart_flag==1){usart_s("halllo\r\n");usart_flag=0;DE_LOW;}}
}
ISR(  USART_RXC_vect )
{UCSRB&=~(1<<RXCIE);         // 校验数据是否传输完成,关闭接收中断Uart_Buffer[0] = UDR;       // 接收串口数据到buff缓冲区usart_flag=1;               // 标志位至1UCSRB|=(1<<RXCIE);          // 接收完毕,开启接收中断
}

基本的串口收发代码

收到数据后标志位置1,在主函数中发送代码,也可以判断收到的函数是否是自己想要的数据。

例如:

if(Uart_Buffer[]==0xaa)
{usart_flag=1;               // 标志位至1
}
elseusart_flag=0;              

Atmega32a-au串口收发相关推荐

  1. 基于Atmega8单片机的串口收发程序

    Atmega8出厂默认的内部时钟频率是1Mhz,做串口收发时波特率最高设置为4800,设置为9600会乱码,提高时钟频率才能将波特率提高. #include <avr/io.h> #inc ...

  2. 搭建串口收发与存储双口RAM简易应用系统

    搭建串口收发与存储双口RAM简易应用系统 为了实现通过串口发送数据到 FPGA 中, FPGA 接收到数据后将数据存储在双口 ram 的 一段连续空间中,当需要时,按下按键 S0,则 FPGA 将 R ...

  3. MTK:UART串口收发数据

    MTK之UART串口收发数据 转:https://blog.csdn.net/ivy_reny/article/details/51192110 寄存器 UARTn_RBR: Rx Buffer Re ...

  4. qt 串口粘包_用Qt 5写一个串口收发桌面工具

    今天用Qt写了一个串口收发工具,记录下整个流程. 1.项目工程布局 2.ui文件布局 3.widget.h文件 #ifndef WIDGET_H #define WIDGET_H #include # ...

  5. GD32F4xx串口收发,DMA+空闲中断

    GD32F4xx系列的串口收发DMA+空闲中断基础配置:(这里主要是以DMA+空闲中断为例) 原理就不赘述了,网上资料很多,这里直接进行配置和测试. 1,首先添加GD32F4xx的dma外设库函数文件 ...

  6. FPGA串口收发(四):接收数据并转发,间隔时间发送

    FPGA串口收发(四):接收数据并转发,间隔时间发送 // Description: 串口收发:串口接收数据,内部生成数据,串口间隔特定时间发送数据 // 串口接收数据:串行信号线 1101_1000 ...

  7. 【嵌入式】——串口实验——实现芯片串口收发数据,按键中断串口发送数据,串口接收数据中断来控制LED亮/灭

    实验目的: 实现芯片串口收发数据,按键中断串口发送数据:按下按键,向串口发送数据,并通过虚拟终端显示出来: 串口接收数据中断来控制LED亮/灭:通过串口助手向MCU发送数据,"A" ...

  8. QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现

    QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现 结构 UI部分 代码部分 step1:实现串口数据接受 串口接受数据格式 在`.pro`文件中添加`serialp ...

  9. linux下c的串口收发

    linux下c的串口收发录 转自: https://blog.csdn.net/weixin_41471318/article/details/116230465 文章目录 linux下c的串口收发录 ...

  10. 【CubeIDE】STM32 HAL库史上最详细教程(一):UART串口收发

    博主能力有限,有错误望大佬指出 0x00 文章内容: UART阻塞方式收发 UART中断方式收发 UART中断回调函数 UART DMA方式收发 printf()函数串口重定向 0x01 UART阻塞 ...

最新文章

  1. 工作小记(三)----说说北京生活的乐趣
  2. About JXTA message reliable design
  3. MyBatis版本升级引发的线上告警回顾及原理分析
  4. [目录]Linux 核心系统命令目录
  5. CodeForces 451A
  6. Quartz 定时器任务调度
  7. 【渝粤教育】国家开放大学2018年春季 3818-22T燃气工程施工 参考试题
  8. 牛客16589 机器翻译
  9. 承担集团数万应用、研发人员日常工作,阿里持续交付平台的设计、迭代之道... 1
  10. XAMPP中mysql升级到5.7.36版本
  11. 数据结构与算法分析(一)基础部分与算法分析方法
  12. STC8A8K64D4 EEPROM读写失败
  13. db2 导出 oracle,db2导出数据库数据库
  14. win7 批处理文件默认以管理员身份运行及清除IE缓存脚本
  15. 商城会员积分过期的实现方案
  16. 教你如何ping指定指定IP的指定端口
  17. teamviewer v_p_n+xp v_p_n服务实现在家访问公司内部局域网
  18. 关于社交电商系统的起源、发展历史和类型
  19. 莫拉蒂致天堂里法切蒂公开信
  20. jq分割数组、截取字符串、数组遍历push新数组

热门文章

  1. 关于如何获取复选框选中行的数据
  2. 大学计算机基础第3套,大学计算机基础(Windows7+Office2010)(第3版)
  3. 华为HANA一体机双机操作实例
  4. cvss评分及漏洞矢量
  5. MATLAB什么意思04i.png
  6. 一些常见的CNN模型
  7. 13_离线计算系统_第12-13天(离线综合案例day1-2)
  8. NE555+CD4017l流水灯原理图
  9. Revit中屋面瓦填充图案问题和构件上色问题
  10. python实战——XML转Json