白话微机:5.解释串行接口以及一些考研面试问题
一. 前言(回顾世界观)
很久很久以前,有这样一个世界,这个世界有着现实世界一样的元素:那里的人又有一个别的名字叫做“数据”,人有0有1;人们也有住房,这些住房在这个世界叫做“存储器”;地上有路,这些路叫做“数据总线”(相比于第一篇进行修正);这里也有行政部门,比如公安局之类的,又有个名字叫“寄存器”;有中央政府,政府又叫做“中央处理器”,这里也会发生的一些自然灾害(内部中断)和人为活动(外部中断), I/O接口是城市(单片机)的城门和检查站,这篇文章我们来详细讲述一下串行接口。
二. 串行接口(小路)
串行接口是城市和农村之间的小路,连接城市(单片机)和小村庄(外部设备,如打印机、键盘或者另一块单片机)。这条小路(串行接口)很窄,不像宽阔的大街(数据总线),它并不允许多个人(数据位)并排同时行走,而是让人们(数据)一个接一个地排队行进。这样的路径虽然看起来效率不高,却有一个优势——它占地非常少,所以即便是在空间非常有限的情况下,也能从城市(单片机)伸展出去,和外面的世界(外部设备)建立联系。
在这条小路上,有一个城市信使(串行数据传输控制器),负责确保每个人(数据位)能够按照正确的顺序,安全地从城市(单片机)出发,到达小村庄(外部设备),或者反过来,从小村庄到城市。信使会按照一定的速度(波特率)运送人们,确保每个人离开城市和进入城市的速度是恒定的,这样在城市和小村庄之间的通信就可以协调一致,不会出现混乱。
总的来说,串行接口就是一个允许数据按序列单个一位地传输的小径,虽然比数据总线传输慢,但在连接远距离的设备或者在引脚数量受限的情况下非常有用。它确保了城市与外界小村庄之间能够进行稳定而有序的沟通。至此,普通城市(单片机)已经搭建完了,整体构成如下图所示。

三. 考研复试常问问题
1]MCS-51串行接口有几种工作方式?
MCS-51单片机城市的串行接口是一个多功能的小径,根据不同的需要可以改变其使用方式。以下是这个城市中串行接口的四种主要工作模式:
-
方式0 (8位同步移位寄存器):
这种方式就像是一个古老的信号塔。当城市的中央政府(CPU)需要与外面的世界(外部设备)同步传递信息时,它使用一种特定的节奏和速度,通过信号塔,一次性传递完整的8位信息(数据字节)。这种方式很快速,但是需要外部设备在相同的节奏和速度上进行配合。 -
方式1 (10位异步收发):
将这种方式想象成一条普通的通信道路,每次信使(串行传输控制器)不仅仅是发送基本的信息(8位数据字节),还会在这个信息前后添加额外的信息,比如一个起始信号(起始位)和一个结束信号(停止位)。这样,即使通信开始和结束的时刻不是严格同步的,接收方也能理解信息的开始和结束,确保信息的完整传递。 -
方式2 (11位异步收发):
在这个模式下,城市(单片机)的通信方式更加复杂。信使(串行传输控制器)除了发送起始信号和结束信号之外,还会附加一个特别的身份标识(地址位或称为第9位)。这可以被想象成在信件上加盖的一个特殊印章,使得接收方(外部设备)能够识别这些信息是专为它们准备的,而不是给城市中其他地方的。这在多个设备需要监听同一通道时非常有用,因为它允许单片机指定信息是发给哪个设备的。 -
方式3 (11位异步收发):
方式3与方式2相似,但它更加灵活,允许城市(单片机)在发送和接收信息时,能够更灵活地控制信使(串行传输控制器)的行为。这是一种更为高级的通信方式,可以在不同情况下调整其行动,例如在紧急情况下优先处理某些信息,或者在通信线路非常繁忙时暂时不发送信息。
2]串行数据传输的特点?
-
按顺序进行:
就像人们在狭窄的小径上行走,必须一个接一个地前进。因为小径狭窄(串行接口的带宽限制),人们不能并排走,所以只能排成一队,顺序通过。同样,串行传输中的数据位必须一个接一个地传送。 -
传送速度慢:
由于所有的人(数据位)都要通过同一条小径(串行通道),只能逐个通过,就像单行道一样,这限制了人流量(数据传输速度)。相比之下,如果是宽广的大道(并行传输),许多人可以同时并排通过,增加了整体的流量和速度。 -
传输线少:
设想一条狭窄的小径只需要很少的维护资源,与之相对的是,宽阔的大道(并行传输需要多条线)需要更多的材料和空间来建设。因此,串行接口仅需很少的线路(通常只有一对线用于发送和接收),这降低了它的物理复杂性和制造成本。 -
成本低:
建设和维护这样的小径(串行接口)比起宽阔的多车道大道(并行接口)要便宜得多。因为它只需要较少的物理材料(引脚数量少),并且由于其简单性,在设计和实现时也更加经济。 -
传输距离远:
小径可以蜿蜒曲折地延伸到远方的村庄(远距离设备),而不会像宽阔的大道那样需要大量的材料和维护。在电子学的角度,串行传输可以使用差分信号技术减少噪声干扰,这样信号可以在较远的距离上保持较高的完整性。相对于并行传输,串行传输对电磁干扰的抵抗能力更强,所以可以传输更远的距离而不会丢失数据。
3]单片机的最小系统?内部的主要结构?
最小系统:电源(城市电力供应)、晶振(为系统提供基本的时钟信号)、复位电路(快速重建措施)
内部结构:ROM/RAM(住房)、计时器(时钟)、中断(紧急事件)、I/O接口(城门)、串行接口(城乡小路)、总线扩展控制(交通规划部门)。
相关文章:
白话微机:5.解释串行接口以及一些考研面试问题
一. 前言(回顾世界观) 很久很久以前,有这样一个世界,这个世界有着现实世界一样的元素:那里的人又有一个别的名字叫做“数据”,人有0有1;人们也有住房,这些住房在这个世界叫做“存储器…...
版本控制(Git)
Fork 本课程网站的仓库 将版本历史可视化并进行探索是谁最后修改了 README.md文件?(提示:使用 git log 命令并添加合适的参数)最后一次修改_config.yml 文件中 collections: 行时的提交信息是什么?(提示&am…...
USB-C音频转接器:实现边充电边听歌的新选择 | LDR6020P
随着科技浪潮的推进,Type-C接口已逐渐成为电子设备的主流选择,以其正反随意插、高速传输和强大功能等独特优势,在日常生活中占据越来越重要的地位。而Type-C音频转接器,作为连接Type-C接口与音频设备的桥梁,正引领着音…...
C/C++ 怎么把多个静态库给整合成一个静态库?
来源:https://www.wikitechy.com/tutorials/linux/how-to-merge-two-ar-static-libraries-into-one 使用 libtool (这也是可移植性最强的方式)(但这通常要求两个子库也是 libtool 制作的) libtool --modelink cc -static -o libaz.la libab…...
OBD部署OceanBase集群-配置文件方式
前一篇文章介绍了OBD白屏可视化方式部署OceanBase集群 ,其原理是把可视化设置生成为一个配置文件,然后使用OBD命令部署集群 本篇想使用命令行加配置文件方式,只部署OceanBase和ODProxy两个组件 服务器参数配置和 oceanbase-all-in-one-*.ta…...
Flink介绍
Flink 介绍 文章目录 Flink 介绍1. 简介1.1 背景1.2 用途 2. 核心概念2.1 流(Stream)2.2 转换(Transformation)2.3 窗口(Window)2.4 状态(State) 3. 编程模型3.1 编程模型介绍3.2 程…...
vscode突然连不上服务器了,以前都可以的,并且ssh等其它方式是可以连接到服务器的
过完年回来准备开工干活,突然发现vscode连不上服务器了,奇了怪了,年前都可以的,看了一下报错,如下, 以为是服务器挂了,结果执行ssh xxxxxx 发现是可以远程连接的,看来服务器没有问题…...
【shell】Shell学习后篇
Linux 常用 Shell 文章目录 Linux 常用 ShellBanner设置字体颜色设置提示操作系统操作系统版本号系统处理器架构关闭防火墙和SELinux系统操作防火墙相关获取当前目录判断文件是否存在判断目录是否存在后台挂起静默执行判断之前的命令是否成功 Banner 设置字体颜色 RED\033[31…...
协同程序原理
一、协程的本质 //协程可以分为两个部分 //1.协程函数本体 //2.协程调度器 //协程本体就是一个能够中间暂停返回的函数 //协程调度器是Unity内部实现的,会在对应的时机帮我们继续执行协程函数 //Unity只实现了协程调度器部分 //协程的本体本质上就是 C#的一个迭代…...
怎样保证数据库和redis里的数据一致性
使用缓存更新策略:在更新数据库时,同时更新Redis中相应的数据。这可以通过编写代码来实现,在数据库更新操作完成后,同步更新Redis中对应的数据。这可以通过在代码中使用事务来保证更新的原子性,确保数据库和Redis中的数…...
探索设计模式的魅力:创建型设计模式的比较与决策
设计模式专栏:http://t.csdnimg.cn/U54zu 目录 一、设计模式概览 1.1 创建型模式 二、比较创建型设计模式 1.1 适用场景典型用例 1.2 关键要素与差异对比 1.3 结构图 三、模式选择指南 3.1 场景分析 3.2 决策流程图 四、结语 4.1 优势 4.2 考量因素 一、…...
Linux之Shell
第 1 章 Shell 概述 1)Linux 提供的 Shell 解析器有 [zhaohadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh2)bash 和 sh 的关系 [zhaohadoop101 bin]$ ll | grep bash -rwxr-xr-x. 1 root root 941880…...
nginx upstream server主动健康检测模块添加https检测功能[完整版]
目录 1 缘起1.1 功能定义2. 实现后的效果2.1 配置文件2.2 运行效果3. 代码实现3.1 配置指令3.1.1 配置指令定义:3.1.2 配置指令结构体:3.1.3 配置指令源码定义:3.2 模块的初始化3.3 添加新的健康检测类型的定义3.4 握手完成后的处理3. 5 发送http请求3.6 接收http响应3.7 连…...
django中admin页面汉化
在Django中,将admin界面汉化为中文需要进行一些配置和翻译文件的添加。下面是一个基本的步骤指南,帮助你实现Django admin的汉化: 一:安装并配置Django: 如果你还没有安装Django,首先通过pip安装它: pip…...
prometheus基于consul的服务发现
文章目录 一、基础二、安装consul下载地址启动consul访问consul 三、编写服务发现文件nodes.json四、prometheus配置consul发现修改prometheus.yml重启Prometheus 参考 一、基础 二、安装consul 下载地址 https://developer.hashicorp.com/consul/install 启动consul mkdi…...
深度学习之pytorch实现线性回归
度学习之pytorch实现线性回归 pytorch用到的函数torch.nn.Linearn()函数torch.nn.MSELoss()函数torch.optim.SGD() 代码实现结果分析 pytorch用到的函数 torch.nn.Linearn()函数 torch.nn.Linear(in_features, # 输入的神经元个数out_features, # 输出神经元个数biasTrue # 是…...
Vue3快速上手(八) toRefs和toRef的用法
顾名思义,toRef 就是将其转换为ref的一种实现。详细请看: 一、toRef 1.1 示例 <script langts setup name"toRefsAndtoRef"> // 引入reactive,toRef import { reactive, toRef } from vue // reactive包裹的数据即为响应式对象 let p…...
《数学建模》专栏导读
文章分类 相关概念入门快速建模相关混合整数线性规划(MILP)加速技巧数值问题探讨相关问题解决技巧 相关概念入门 文章相关概念离散优化模型的松弛模型线性松弛问题混合整数线性规划MILP问题中增添约束的影响约束的影响 快速建模相关 文章求解器涉及步…...
App启动优化笔记 1
app大致的启动流程。有Launcher进程,system_server进程,zygote进程,APP进程。 Launcher进程:启动activity来启动应用 system_server进程:(ams是其中的一个binder):发送一个socket消息给Zygote。 zygote进程:收到消息后,fork新的进程,---》app进程启动 APP进程:…...
Spring Boot 笔记 027 添加文章分类
1.1.1 添加分类 <!-- 添加分类弹窗 --> <el-dialog v-model"dialogVisible" title"添加弹层" width"30%"><el-form :model"categoryModel" :rules"rules" label-width"100px" style"padding…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
