51单片机内部有一个全双工的异步通信串行口,有四种工作方式波特率可由软件设置片内的定时器/计数器来控制。特殊功能寄存器SCON和PCON用来对串行口进行控制。下面先介绍这两个寄存器:
1、SCON
字节地址98H,可位寻址

SCON D7 D6 D5 D4 D3 D2 D1 D0
标志位 SM0 SM1 SM2 REN TB8 RB8 TI RI
位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H

(1)SM0、SM1:串行口四种工作方式选择位

SM0 SM1 方式及功能说明
00 方式0,同步移位寄存器方式(用于拓展I/O口)
01 方式1,8位异步收发,波特率可变(由定时器控制)
10 方式2,9位异步收发,波特率为f/64或f/32
11 方式3,9位异步收发,波特率可变(由定时器控制)

(2)SM2:多机通信控制位
方式0时,SM2必须为0;
方式1时,若SM2为1,则只有收到有效的停止位才会激活RI
方式2或3时,若SM1=1,则只有接受到的第9位数据(RB8)为“1”时,才将接收到的前8位数据送入SBUF,并置“1”RI,产生中断请求;当RB8为“0”时,则丢弃接收到的前8位。当SM2=0时,前8位数据将被无条件送入SBUF中,同时置“1”RI。
(3)REN:串行允许接收位,为“1”允许串行口接收数据,为“0”禁止。
(4)TB8:
工作在方式2/3时,TB8是要发送的第9位数据;双机通信时TB8作为奇偶校验位;多机通信中TB8表示主机发送的是地址帧还是数据帧:TB8=1表示地址帧,TB8=0表示数据帧。
(5)RB8:
工作在方式2/3时表示接收到的第9位数据,在方式1时若SM2=0,则RB8是接收到的停止位,方式0不用RB8。
(6)TI:发送中断标志位
方式0时发送完第8位数据时由硬件置“1”,其他工作方式发送停止位的开始时置“1”。TI=1表示一帧数据发送结束,必须由软件清零。
(7)RI:接收中断标志位
方式0是接收完第8位数据时由硬件置“1”,其他工作方式接收到停止位时置“1”,必须由软件清“0”。
2.PCON
字节地址为87H,不能位寻址

D7
SMOD

SMOD:波特率选择位
串行口的工作方式
重点考察:①方式1波特率公式的计算,根据波特率计算T1的溢出率等
方式1的波特率=(2^SMOD/32) * 定时器T1的溢出率
②方式2的发送/接收在双机通信中的应用、编程
多机通信
方式2/3时,置“1”SM2,表示多机通信方式。开始初始化从机允许串行口中断,设置串行口工作方式为2/3,置“1”SM2和REN;初始化完成后,判断若主机发送来的第九位数据RB8为“1”(表示主机发送的是地址),则从机响应中断,执行中断服务程序:判断主机送来的地址是否与本机地址符合,若符合,则该从机清“0”SM2,否则SM1依旧置“1”。接下来,若SM2=0,即该从机地址与主机要求相符,判断若RB8=0(即发送的是数据),则激活中断标志位RI,执行中断服务程序,执行主机的命令。其他从机由于不符合地址要求,SM=1,不能执行这里的中断服务程序。
可以简记为SM2=0表示是本机,SM2=1表示目前不是本机,只有当主机发送的是地址时,才有机会判断是否允许本机通信。
有关波特率
1、定义:串行口每秒钟发送(或接收)的位数。设发送一位所需要的时间为T,则波特率为1/T。
2、方式0:波特率固定为时钟频率 f 的1/12,不受SMOD的影响。若 f =12MHz,则波特率为1Mbit/s;
方式2:方式2波特率=(2^SMOD/64)* f ;
方式1或3:波特率=(2^SMOD/32)* 定时器T1的溢出率。
由于 定时器T1 的溢出率=计数速率/(256-X)=(f/12)/(256-X),其中X为定时器T1的计数初值,则:波特率=((2^SMOD)/32)*( f /12(256-X))。

单片机学习笔记(四)——串行口相关推荐

  1. 51单片机串行口程序c语言编程,单片机C语言编程串行口通讯.ppt

    单片机C语言编程串行口通讯 第7章 MCS-51单片机串行口 第7章 MCS-51单片机串行口 目 录 7.1 串行通信基本知识 7.2 串行口结构及控制 7.3 串行口工作方式 7.4 串行口应用举 ...

  2. 51单片机学习 串行口通信实验

    文章目录 一.实验目的 二.原理 三.实验内容 一.实验目的 掌握串行口工作方式的程序设计,掌握单片机通信程序设计方法. 二.原理 发送指令:MOV SBUF,A 接收指令:MOV A,SBUF 1. ...

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

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

  4. 快速复习51单片机的外部中断、计数/定时器中断和串行口中断,加代码实现

    目录 1.中断系统的概念 1.1中断的概念 1.2中断系统的概念 1.3中断系统的优点 1.4我们要说的三种中断源 2.外部中断 2.1 外部中断0 代码示范 2.2 外部中断 分析 3.计数/定时器 ...

  5. 单片机实验汇编案例---单片机串行口与PC机通讯实验

    一.实验要求 利用8031单片机串行口,实现与PC机通讯. 本实验实现以下功能,将从实验机键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到实验机的数码管上. 二.实验 ...

  6. C51单片机-串行口2-蓝牙模块-应用例程

    一.例程简介 本例程51单片机与蓝牙模块连接,可通过蓝牙模块接收和发送字符串,从而控制测试灯的亮灭.其中使用51单片机的串行口2的工作方式1,即8位UART,波特率可变.波特率设为9600.缺省UAR ...

  7. 单片机 串行口实验解数据流怎么到发光二极管来显示的

    [斯鹭]徐良军利用8031单片机串行口,实现与PC机通讯.本实验实现以下功能,将从实验机键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到实验机的数码管上.二.实验目的 ...

  8. 51单片机—详细(存储器RAM/ROM、引脚、中断系统、定时/计数器、串行口通信)

    目录 一.数据存储器RAM 1.拓展RAM 2.片内256字节 1.高128位(80H~FFH) 2.低128位(00H~7FH) 二.程序存储器ROM 三.引脚 1.4组8位并行I/O口 2.其他引 ...

  9. (九)单片机串行口 内部结构的讲解 01

    1. 基本概念 常用于数据通信的传输方式有单工.半双工.全双工和多工方式. 单工方式:数据仅按一个固定方向传送.因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集. 半双工方 ...

最新文章

  1. -bash: /bin/rm: Argument list too long的解决办法
  2. [恢]hdu 2014
  3. Android 之 Fagment 完全解析
  4. FreeMarker简介及其语法
  5. backgroundworker 导致程序无法退出_macOS技巧—六种方法强制退出无响应的程序
  6. marquee文字起始位置_PS修图改字无痕扫描件复印件截图文字英文日期修改:制作漂亮红色丝绸文字图片的PS教程...
  7. 367. 有效的完全平方数
  8. [css] 说出至少十条你理解的css规范
  9. php框架 wc if_PHP if else语句
  10. php打开文件读写函数,php中常用文件操作读写函数介绍
  11. 最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控
  12. 终于有人把微服务讲明白了
  13. Postman的新手教学,一学就会!
  14. java this 代替_关于JAVA中this的使用方法小结
  15. debian webmin 安装
  16. 生活随笔:师弟,加油
  17. 去除datatable列中重复的值
  18. eclipse各版本对应JDK版本要求
  19. 运维笔记-lnmp一键安装问题
  20. 赤裸裸的逆袭:小学生都用大数据分析苏轼了!

热门文章

  1. 一个整理桌面的python小例子
  2. 华为eNSP:OSPF DR和DBR选举实验
  3. 云计算ACP云服务器ECS实例题库(三)
  4. 如何快速将算量软件中的工程量提取到计价软件?
  5. 使用JAVA CompletableFuture实现流水线化的并行处理,深度实践总结
  6. (c语言数据结构)用顺序队列的方式实现输入12345,输出12345操作——期末数据结构程序设计
  7. linux 监控文件夹
  8. 7-6 读数字 (15 分)
  9. 2020周阳SpringCloud完整版笔记--一
  10. PNG文件格式-笔记