Atmega16单片机串口通信

  • Atmega16单片机串口通信
    • 串口通信需要使用到的内部寄存器
    • 程序代码

Atmega16单片机串口通信

本篇文章参考自叶大鹏老师于2008年4月5日完成的UART通信PPT制作而成。

串口通信需要使用到的内部寄存器

在进行程序编写前需要对16单片机中的寄存器的作用和使用方法有所了解,下面为16单片机串口通信使用到的几个寄存器:

  1. USART I/O 数据寄存器 - UDR (UDR寄存器用于数据在传输中的存储):
  2. USART控制和状态寄存器A - UCSRA


void uart_sendB(uchar data)        /*发送函数*/
{while(!(UCSRA&(BIT(UDRE))));   //等待发送缓冲器为空UDR=data;                      //将数据存入UDR寄存器
}
  1. USART控制和状态寄存器B - UCSRB



void uart_rx(void)              /*串口接收函数*/
{UCSRB&=~BIT(RXCIE);         //校验数据是否传输完成,关闭接收中断rdata=UDR;                  //将接收到的数据存入rdataflag=1;                     //标志位至1UCSRB|=BIT(RXCIE);          //接收完毕,开启中断
}
  1. USART控制和状态寄存器C - UCSRC



  2. USART波特率寄存器 - UBRRL和UBRRH

#define mclk 8000000baud=mclk/16/baud-1;    //程序片段UBRRL=baud;             //设置波特率,先写低位再写高位UBRRH=baud>>8;          //设置波特率,先写低位再写高位

程序代码

本段程序编译环境为ICCAVR7 for AVR。
#include<iom16v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
#define mclk 8000000
#pragma interrupt_handler uart_rx:12
uchar rdata,flag=0;
void uart_init(uint baud)        //串口初始化
{UCSRB=0x00;UCSRA=0x00;UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0);baud=mclk/16/baud-1;UBRRL=baud;UBRRH=baud>>8;UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);SREG=BIT(7);                    //开中断DDRD|=0x02;                     //设计发送口(TX)为输出,这很重要
}
void uart_rx(void)                  //串口接收函数
{UCSRB&=~BIT(RXCIE);         //校验数据是否传输完成,关闭接收中断rdata=UDR;                  //将接收到的数据存入rdataflag=1;                     //标志位至1UCSRB|=BIT(RXCIE);          //接收完毕,开启接收中断
}void uart_sendB(uchar data)   //发送函数
{while(!(UCSRA&(BIT(UDRE)))); //等待发送缓冲器为空UDR=data;                    //将数据存入UDRwhile(!(UCSRA&(BIT(TXC))));UCSRA|=BIT(TXC);
}void main(void)
{uchar i=4;uart_init(19200);while(1){if(flag){uart_sendB(i);flag=0;}}
}

Atmega16单片机串口通信相关推荐

  1. 基于PC与单片机串口通信的温度监控系统程序设计

    基于PC与单片机串口通信的温度监控系统程序设计 1.系统介绍 1)本系统主要讲解基于PC与单片机串口通信的温度监控系统程序设计(如图1),上位机采用常用的PC机,下位机使用的是STC89C52单片机, ...

  2. 51单片机-串口通信

    目录 1.什么是通信 1.1.通信的概念 1.2.传送方式 1.3.同步方式 1.4.传送方向 1.5.校验方式 2.单片机串口介绍 2.1.硬件电路 2.2.电平标准 2.3.常见接口 2.4.内部 ...

  3. 蓝桥杯单片机串口通信学习提升笔记

    今日得以继续蓝桥杯国赛备赛之旅: 有道是 "不知何事萦怀抱,醒也无聊,醉也无聊,梦也何曾到谢桥." 那我们该如何 让这位诗人纳兰 "再听乐府曲 ,畅解相思苦"呢 ...

  4. 51单片机串口通信模板_深入理解51单片机串口通信及通信实例

    串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...

  5. 普中单片机--串口通信(2)---通过串口助手发送数据点LED

    普中单片机–串口通信(2) 通过串口助手发送数据 点亮LED 软件部分 #include <reg52.h> #define jingzhen 12000000UL /*使用12.0M晶体 ...

  6. 51单片机串口通信原理、相关寄存器配置与简单串口收发程序代码

    目录 1. 串口通信原理 2. 51单片机串口通信 2.1 串口简要模式图 2.2 相关寄存器 (1)PCON.SCON.SBUF (2)IE.IPH.IP (3)配置T1定时器 2.3 波特率和系统 ...

  7. 51单片机串口通信模板_51单片机串口通信

    51 单片机串口通信 51 单片机串口通信(转载) 2009-03-03 18:22 一.串口通信原理 串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计 算机端,而且也能实现计算机对单 ...

  8. 51单片机~串口通信(讲解+代码)

    51单片机~串口通信 (一)计算机串行通信原理: 综上:所以在设置的时候,经常将SCON设置为0X50==0101 0000 ,使用方式1. (二)工作: 中断控制 led灯,每发送一条指令灯亮或灭( ...

  9. stc12串口收发计算机,半双工串口通信实例36:STC12单片机和STC12单片机串口通信...

    半双工串口通信实例36:STC12单片机和STC12单片机串口通信 一.串口通信实例目的: STC12单片机主站数字量输入DI01~DI08控制STC12单片机从站数字量输出DO01~DO08: ST ...

最新文章

  1. HDU-4738-Caocao's Bridges(tarjan)
  2. 鸿蒙系统正式版官方下载,华为鸿蒙os2.0系统app正式版
  3. WireShare抓包在ssl协议里面提示(Level: Fatal, Description: Protocol Version)
  4. C++ 一个程序获取另一个程序Edit控件的内容
  5. 最详细的SLAM综述
  6. 【送书福利】第一次送书活动(总共10本)
  7. ad采样信噪比与噪声_在AD转换中的过采样和噪声形成
  8. android studio 手把手叫你NDK开发环境搭建及基础使用
  9. 让 ASP.NET AJAX 支持浏览器的 History Navigation - Part 1
  10. 免费讲座:从草根到巨人——互联网时代的LAMP开源架构
  11. eclipse 主题
  12. 计算机二级题库access选择题_计算机二级access选择题题库
  13. librdkafka问题小记
  14. 支付宝芝麻信用分申请
  15. 基于stm32的自动调速风扇
  16. 解决电脑能连接WIFI但是无法正常上网问题
  17. 本地生活O2O行业已经逐渐渗透到日常生活中
  18. Redis高性能缓存数据库
  19. ModelSim入门FPGA仿真基础教程之一:软件介绍
  20. 【翻译】推荐给极客程序员的五个安卓代码编辑器

热门文章

  1. 狼滕图----狼的格言
  2. 注会 第六章 投资性房地产
  3. 网站备案流程_网站备案需要什么,Sofia简单点告诉你
  4. 02--Linux的sed使用
  5. 在阿里云进行磁盘扩容操作后,ECS实际使用磁盘并没有扩容?阿里云ECS磁盘扩容操作
  6. IOS 常用UI控件
  7. docker安装php扩展大全
  8. python 将.py文件打包成.exe文件,将.exe文件还原为.py文件
  9. matlab常见的图像增强技术(包括基于幂次变换,对图像进行均衡化处理,巴特沃斯低通,理想低通,梯形低通滤波, 均值滤波,中值滤波,最大,最小值滤波,修正后的阿尔法滤波器)
  10. 使用Python+yolov3实现对帧数不等长视频进行批处理