Atmega16单片机串口通信
Atmega16单片机串口通信
- Atmega16单片机串口通信
- 串口通信需要使用到的内部寄存器
- 程序代码
Atmega16单片机串口通信
本篇文章参考自叶大鹏老师于2008年4月5日完成的UART通信PPT制作而成。
串口通信需要使用到的内部寄存器
在进行程序编写前需要对16单片机中的寄存器的作用和使用方法有所了解,下面为16单片机串口通信使用到的几个寄存器:
- USART I/O 数据寄存器 - UDR (UDR寄存器用于数据在传输中的存储):
- USART控制和状态寄存器A - UCSRA :
void uart_sendB(uchar data) /*发送函数*/
{while(!(UCSRA&(BIT(UDRE)))); //等待发送缓冲器为空UDR=data; //将数据存入UDR寄存器
}
- USART控制和状态寄存器B - UCSRB :
void uart_rx(void) /*串口接收函数*/
{UCSRB&=~BIT(RXCIE); //校验数据是否传输完成,关闭接收中断rdata=UDR; //将接收到的数据存入rdataflag=1; //标志位至1UCSRB|=BIT(RXCIE); //接收完毕,开启中断
}
- USART控制和状态寄存器C - UCSRC :
- 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单片机串口通信相关推荐
- 基于PC与单片机串口通信的温度监控系统程序设计
基于PC与单片机串口通信的温度监控系统程序设计 1.系统介绍 1)本系统主要讲解基于PC与单片机串口通信的温度监控系统程序设计(如图1),上位机采用常用的PC机,下位机使用的是STC89C52单片机, ...
- 51单片机-串口通信
目录 1.什么是通信 1.1.通信的概念 1.2.传送方式 1.3.同步方式 1.4.传送方向 1.5.校验方式 2.单片机串口介绍 2.1.硬件电路 2.2.电平标准 2.3.常见接口 2.4.内部 ...
- 蓝桥杯单片机串口通信学习提升笔记
今日得以继续蓝桥杯国赛备赛之旅: 有道是 "不知何事萦怀抱,醒也无聊,醉也无聊,梦也何曾到谢桥." 那我们该如何 让这位诗人纳兰 "再听乐府曲 ,畅解相思苦"呢 ...
- 51单片机串口通信模板_深入理解51单片机串口通信及通信实例
串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...
- 普中单片机--串口通信(2)---通过串口助手发送数据点LED
普中单片机–串口通信(2) 通过串口助手发送数据 点亮LED 软件部分 #include <reg52.h> #define jingzhen 12000000UL /*使用12.0M晶体 ...
- 51单片机串口通信原理、相关寄存器配置与简单串口收发程序代码
目录 1. 串口通信原理 2. 51单片机串口通信 2.1 串口简要模式图 2.2 相关寄存器 (1)PCON.SCON.SBUF (2)IE.IPH.IP (3)配置T1定时器 2.3 波特率和系统 ...
- 51单片机串口通信模板_51单片机串口通信
51 单片机串口通信 51 单片机串口通信(转载) 2009-03-03 18:22 一.串口通信原理 串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计 算机端,而且也能实现计算机对单 ...
- 51单片机~串口通信(讲解+代码)
51单片机~串口通信 (一)计算机串行通信原理: 综上:所以在设置的时候,经常将SCON设置为0X50==0101 0000 ,使用方式1. (二)工作: 中断控制 led灯,每发送一条指令灯亮或灭( ...
- stc12串口收发计算机,半双工串口通信实例36:STC12单片机和STC12单片机串口通信...
半双工串口通信实例36:STC12单片机和STC12单片机串口通信 一.串口通信实例目的: STC12单片机主站数字量输入DI01~DI08控制STC12单片机从站数字量输出DO01~DO08: ST ...
最新文章
- HDU-4738-Caocao's Bridges(tarjan)
- 鸿蒙系统正式版官方下载,华为鸿蒙os2.0系统app正式版
- WireShare抓包在ssl协议里面提示(Level: Fatal, Description: Protocol Version)
- C++ 一个程序获取另一个程序Edit控件的内容
- 最详细的SLAM综述
- 【送书福利】第一次送书活动(总共10本)
- ad采样信噪比与噪声_在AD转换中的过采样和噪声形成
- android studio 手把手叫你NDK开发环境搭建及基础使用
- 让 ASP.NET AJAX 支持浏览器的 History Navigation - Part 1
- 免费讲座:从草根到巨人——互联网时代的LAMP开源架构
- eclipse 主题
- 计算机二级题库access选择题_计算机二级access选择题题库
- librdkafka问题小记
- 支付宝芝麻信用分申请
- 基于stm32的自动调速风扇
- 解决电脑能连接WIFI但是无法正常上网问题
- 本地生活O2O行业已经逐渐渗透到日常生活中
- Redis高性能缓存数据库
- ModelSim入门FPGA仿真基础教程之一:软件介绍
- 【翻译】推荐给极客程序员的五个安卓代码编辑器
热门文章
- 狼滕图----狼的格言
- 注会 第六章 投资性房地产
- 网站备案流程_网站备案需要什么,Sofia简单点告诉你
- 02--Linux的sed使用
- 在阿里云进行磁盘扩容操作后,ECS实际使用磁盘并没有扩容?阿里云ECS磁盘扩容操作
- IOS 常用UI控件
- docker安装php扩展大全
- python 将.py文件打包成.exe文件,将.exe文件还原为.py文件
- matlab常见的图像增强技术(包括基于幂次变换,对图像进行均衡化处理,巴特沃斯低通,理想低通,梯形低通滤波, 均值滤波,中值滤波,最大,最小值滤波,修正后的阿尔法滤波器)
- 使用Python+yolov3实现对帧数不等长视频进行批处理