一、串口通信电路

电路图

说明:当RXD TXD为低电平时,对应的led灯会亮起


二、串口通信控制寄存器

下图为80C51串行口的结构:


SCON(serial Control Register):串行口控制寄存器

bit 7 6 5 4 3 2 1 0
字节地址:98H SM0 SM1 SM2 REN TB8 RB8 T1 R1

SM0 SM1:工作方式选择位

SM2:多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI。
REN:允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
TB8:在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。
RB8:在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。
T1:发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。
R1:接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。

PCON(Power Control Register):其中的SMOD(PCON[7])与串行工作有关——对方式1,2,3,当SMOD为1时,波特率提高一倍。


三、工作方式

方式1:方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。

过程:用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。


四、串口的使用

串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:

  • 确定T1的工作方式(编程TMOD寄存器)
  • 计算T1的初值,装载TH1、TL1
  • 启动T1(编程TCON中的TR1位)
  • 确定串行口控制(编程SCON寄存器)

注:串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)


完结 cheers! ??

单片机学习笔记 —— 串口通信原理相关推荐

  1. STM8学习笔记---串口通信中如何自己定义通信协议

    在单片机刚开始学习的时候,串口通信是经常要用到的,但是实际产品中串口通信是需要通信协议的.好多人不明白为什么要用通信协议,如何定义通信协议,带通信协议的程序要怎么写.今天就来说一下如何串口通信协议是如 ...

  2. 51单片机学习笔记-6串口通信

    6 串口通信 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓库 ...

  3. [单片机学习笔记](35):串级PID算法应用剖析、通过串口控制电机、MPU6050获取平衡车姿态、自制平衡车PID算法程序设计

    串级PID算法应用剖析 这是经过给队友讲解串级PID的程序的之后的进一步的理解总结. 内环的实际值,取决于你能测出什么值给内环.而内环的输入就是内环误差 内环的输出值,是内环误差(内环目标值-内环实际 ...

  4. STC51单片机学习笔记8——stc12c56 串口显示AD(多路ad)

    stc12c56 串口显示AD(多路ad). AD中断设置 AUXR: ADC_CONTR: //#define ADC_POWER 0x80后面不能加分号,不然就会错.其他定义必须加分号!!! // ...

  5. STC51单片机学习笔记4——stc12c56 串口

    stc12c56 串口(没有用独立波特率发生器,用T1不分频.中断式接受与发送) //烧写程序时,一定要选用外部晶振(烧写软件默认为内部晶振(5M~6M)) //烧写时,有时候写不进去,尝试断开地线, ...

  6. STC51单片机学习笔记9——stc12c52 串口显示AD(单路ad+led指示灯)

    stc12le5204ad 为8位AD //烧写程序时,一定要选用外部晶振(烧写软件默认为内部晶振(5M~6M)),不然还会影响ADC //烧写时,有时候写不进去,尝试断开地线,然后接上上电 #inc ...

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

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

  8. stm32正常运行流程图_STM32单片机学习笔记(超详细整理143个问题,学习必看)...

    原标题:STM32单片机学习笔记(超详细整理143个问题,学习必看) 1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2.Stm32f ...

  9. NXP(I.MX6uLL) UART串口通信原理————这个未复习

    参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...

最新文章

  1. 个人知识管理的10个误区
  2. 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.7 小结
  3. not optimal php,php环境配置 配置
  4. linux fedora14 u盘运行,用U盘安装Fedora的详细步骤
  5. codelite 教程
  6. 【JavaWeb】前端框架之Bootstrap
  7. HDU 4190 Distributing Ballot Boxes【二分答案】
  8. ThreadLocal实现线程范围内的共享变量
  9. 元宇宙会是一场噩梦吗?
  10. pandas打印某一列_Pandas数据分析教程
  11. 使人无条件相信你的5个策略
  12. Win10应用商店无法连接解决方案
  13. 数据绑定如何在AngularJS中运行?
  14. 重启报错_AFAB折旧计提报错:科目xxxxx要求一个成本会计分配 及重启问题
  15. 单元测试自动生成测试用例
  16. python回归分析
  17. 计算机主机英语怎么说,电脑里的 属性 英语怎么说
  18. MATLAB中实现图像的空间域滤波和频率域滤波
  19. 收藏这几个软件,让你轻松从视频里提取音频
  20. 基于学术研究于NASA官网GPM卫星数据下载详细教程

热门文章

  1. echarts 折线图之面积图
  2. Esp8266 mqtt无线控制空调
  3. chrome扩展写法
  4. 企业认证ISO27001的必要性
  5. simulink蓝色库SC和黑色库ST
  6. java locale 印尼_java – 有没有办法在Locale上按国家/地区默认语言?
  7. python生成txt文件
  8. Omniverse Replicator的Camera示例
  9. 人生,择善而处,择君子而交
  10. 【洛谷】P1498 南蛮图腾(分治)题解