须由软件来清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相关推荐

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

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

  2. 51单片机串口通信模板_51单片机串口通信(字符串接收和发送)(示例代码)

    1 #include 2 3 //------------------串口通信协议-----------------//4 /* 5 客户端数据包格式解释(长度恒为15):6 例如:A01_fmq_0 ...

  3. 51单片机串口通信模板_51单片机串口通信实例

    波特率计算:在了解了串行口相关的寄存器之后,我们可得出其通信波特率的一些结论: ① 方式0 和方式2 的波特率是固定的. 在方式0 中, 波特率为时钟频率的1/12, 即fOSC/12,固定不变. 在 ...

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

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

  5. 串口通信-电脑控制单片机点亮LED

    前言 此篇只对各函数功能做通俗易懂的解释,适合初学者理解串口通信的功能. 一.串口通信 1.什么是串口通信 我们使用的usb转串口是经典的串口通信之一,实现了电脑与单片机之间的联系,将程序通过串口从电 ...

  6. 串口通信操作STM32f4单片机LED 蜂鸣器(io)

    串口通信操作STM32f4单片机LED 蜂鸣器(io) 首先将串口与PC通信 单片机中串口1需要连接p6 中的PA9连接rxd PA10连接txd并使能相应io,io模式为挽推复用,复用为串口USAR ...

  7. stm32串口通信(初学者对于串口通信的理解)

    stm32串口通信(初学者对于串口通信的理解) 标签: stm32串口通信单片机 2015-01-24 10:12 987人阅读 评论(0) 收藏 举报  分类: stm32 版权声明:本文为博主原创 ...

  8. delphi 串口通信发送_关于串口通信232、485、422和常见问题,就没见过能讲这么清楚的...

    先讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习,如果哪里讲的不到位,欢迎及时指出. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为更多的时候,都是产品做好了,比如触 ...

  9. stm32中断方式的串口通信——上位机控制串口收发

    文章目录 前言 一.什么是串口通信 二.什么是中断--STM32 1.中断的概念 2.STM32下NVIC的介绍 3.中断优先级的介绍 4.外部中断的介绍 三.串口通信keil工程文件 1.新建工程模 ...

最新文章

  1. 用Python轻松搞定Excel中的20个常用操作
  2. wsl2 图形界面_WSL2配置xrdp一键启动至桌面环境
  3. 向fedora虚拟机中复制文件_Unraid虚拟机中Dockers下搭建WebDAV共享文件服务器
  4. win7 VS2013 新建工程 编译lua5.1 静态库
  5. Thread.getContextClassLoader与Thread.getClassLoader()区别
  6. mybatis sql不等于
  7. 英特尔:5G将释放云的潜力,为垂直行业带来巨大商机
  8. 微软Window硬件大会(WinHEC)
  9. while 循环的理解
  10. [Linux 高并发服务器] 信号
  11. 【华为云技术分享】LwM2M协议的学习与分享
  12. 矩阵的几个基本概念(一)
  13. 运筹学角度看动态规划(努力更新中...)
  14. Excel统一将小写的金额转为大写汉字金额的操作
  15. sqp方法 matlab程序,matlab-program 基于matlab编写了SQP法 - 下载 - 搜珍网
  16. 注解(annotations)列表
  17. 扑克迷如何在2019-03-28的市场中利用十字星进行跑赢大盘
  18. 天龙八部TLBB系列 - 网单服务端Public/Data目录文件说明
  19. 如何读取md文件(MarkdownPad2专业版已激活)
  20. MATLAB App Designer入门实战(三)

热门文章

  1. 一文刨析C/C++全局常量的定义
  2. 安装时无法连接到mathworks的解决(详细)
  3. 如何高效使用SQLite .net (C#)
  4. 霍夫曼树、霍夫曼编码
  5. Ribbon和Nginx的区别
  6. storm详解与调优
  7. 深度理解运放增益带宽积
  8. 将所有的碎片信息放进去的结构 ,大大减轻大脑的负担,更容易地解决问题
  9. android 手机存储空间 进度条,Android 进度条
  10. 《京韵大鼓——红梅阁》(唱词文本)(骆玉笙音配像本)