51单片机串口通信模板_51单片机串口通讯UART
须由软件来清0,。
串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。复位时SCON所有位都清0.
2)PCON
电源控制位寄存器PCON中只有SMOD位与串口工作有关,如下图所示
SMOD:波特率倍增位。在方式1、2、3中,当SMOD = 1时,波特率提高一倍。
4、串行通信工作方式
根据实际需要,89c51串口可以设置四种工作方式,可有8位、10位或11位帧格式
方式0:8位同步移位寄存器,以8位数据为一帧,不设起始位和停止位,先发送或接收最低位(用于I/O口扩展)。
※RXD:数据输入/输出端
※TXD:同步脉冲输出端,每个脉冲对应一个数据位
基本很少用到方式0,一般都是用到方式0是通过串口扩展8位并行I/O输出口,如下图所示
方式1:10位异步通信模式
一帧10位:起始位+8位数据位+停止位
波特率:定时器1作为波特率发生器,公式为
方式2和方式3:11位异步通讯方式
一帧11位:起始位+9位数据位+停止位
第九位数据位在TB8/RB8中,常用作校验位或者多机通信地址标识位或者数据标识位
波特率分别为:
发送:先填写TB8,写入SBUF(启动发送),发送完TI = 1.
接收:REN = 1,RI = 0且第9位为1(或SM2 = 0),将接收数据装入SBUF,第9位装入RB8,使RI = 1,否则丢弃接收数据,不置位RI。
接下来我用串口通信来实现计算机与
#include
#define uint unsigned int
void UART_Init();
uint num ;
/*
******************************************
**函数名称:主函数
*******************************************
*/
int main()
{
UART_Init();
while(1);
}
/*
*****************************************
**函数功能:串口初始化函数
*****************************************
*/
void UART_Init()
{
TMOD = 0x20; //定时器0工作模式2,自动重装8位计数器
TH1 = 0xfd;
TL1 = 0xfd;//定时器溢出时,会自动将高8位中的值赋值给低8位.比特率9600
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
EA = 1;
ES = 1;
}
/*
********************************************
**函数名称:串口中断函数
********************************************
*/
void UART() interrupt 4
{
if(RI == 1) //如果接收到计算机发的数据
{
num = SBUF; //取出数据
num++;
RI = 0; //清除标志位
SBUF = num; //把数据加1后再发送给计算机
}
if(TI == 1) //如果发送完毕
{
TI = 0; //清除标志位
}
}
我用串口助手循环发送从1-8,单片机会返回2-9,实现现象如下:
[1] [2]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
51单片机串口通信模板_51单片机串口通讯UART相关推荐
- 51单片机串口通信模板_51单片机串口通信
51 单片机串口通信 51 单片机串口通信(转载) 2009-03-03 18:22 一.串口通信原理 串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计 算机端,而且也能实现计算机对单 ...
- 51单片机串口通信模板_51单片机串口通信(字符串接收和发送)(示例代码)
1 #include 2 3 //------------------串口通信协议-----------------//4 /* 5 客户端数据包格式解释(长度恒为15):6 例如:A01_fmq_0 ...
- 51单片机串口通信模板_51单片机串口通信实例
波特率计算:在了解了串行口相关的寄存器之后,我们可得出其通信波特率的一些结论: ① 方式0 和方式2 的波特率是固定的. 在方式0 中, 波特率为时钟频率的1/12, 即fOSC/12,固定不变. 在 ...
- 51单片机串口通信模板_深入理解51单片机串口通信及通信实例
串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...
- 串口通信-电脑控制单片机点亮LED
前言 此篇只对各函数功能做通俗易懂的解释,适合初学者理解串口通信的功能. 一.串口通信 1.什么是串口通信 我们使用的usb转串口是经典的串口通信之一,实现了电脑与单片机之间的联系,将程序通过串口从电 ...
- 串口通信操作STM32f4单片机LED 蜂鸣器(io)
串口通信操作STM32f4单片机LED 蜂鸣器(io) 首先将串口与PC通信 单片机中串口1需要连接p6 中的PA9连接rxd PA10连接txd并使能相应io,io模式为挽推复用,复用为串口USAR ...
- stm32串口通信(初学者对于串口通信的理解)
stm32串口通信(初学者对于串口通信的理解) 标签: stm32串口通信单片机 2015-01-24 10:12 987人阅读 评论(0) 收藏 举报 分类: stm32 版权声明:本文为博主原创 ...
- delphi 串口通信发送_关于串口通信232、485、422和常见问题,就没见过能讲这么清楚的...
先讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习,如果哪里讲的不到位,欢迎及时指出. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为更多的时候,都是产品做好了,比如触 ...
- stm32中断方式的串口通信——上位机控制串口收发
文章目录 前言 一.什么是串口通信 二.什么是中断--STM32 1.中断的概念 2.STM32下NVIC的介绍 3.中断优先级的介绍 4.外部中断的介绍 三.串口通信keil工程文件 1.新建工程模 ...
最新文章
- 用Python轻松搞定Excel中的20个常用操作
- wsl2 图形界面_WSL2配置xrdp一键启动至桌面环境
- 向fedora虚拟机中复制文件_Unraid虚拟机中Dockers下搭建WebDAV共享文件服务器
- win7 VS2013 新建工程 编译lua5.1 静态库
- Thread.getContextClassLoader与Thread.getClassLoader()区别
- mybatis sql不等于
- 英特尔:5G将释放云的潜力,为垂直行业带来巨大商机
- 微软Window硬件大会(WinHEC)
- while 循环的理解
- [Linux 高并发服务器] 信号
- 【华为云技术分享】LwM2M协议的学习与分享
- 矩阵的几个基本概念(一)
- 运筹学角度看动态规划(努力更新中...)
- Excel统一将小写的金额转为大写汉字金额的操作
- sqp方法 matlab程序,matlab-program 基于matlab编写了SQP法 - 下载 - 搜珍网
- 注解(annotations)列表
- 扑克迷如何在2019-03-28的市场中利用十字星进行跑赢大盘
- 天龙八部TLBB系列 - 网单服务端Public/Data目录文件说明
- 如何读取md文件(MarkdownPad2专业版已激活)
- MATLAB App Designer入门实战(三)