news 2026/8/22 3:49:16

第二章(2.3):微控制器8051的硬件结构---内部总线与微控制器工作原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第二章(2.3):微控制器8051的硬件结构---内部总线与微控制器工作原理

内部总线(bus)

MCU内部总线或称片内总线,是微控制器CPU与各功能模块之间传输信息的公共通道,包括数据总线DB(data bus)、地址总线AB(address bus)和控制总线CB(control bus)三类,分别用来传输数据、地址和控制信号。

  • 数据总线:数据总线DB是双向的,用于传送数据,实现CPU与存储器、I/O接口、各功能模块之间的信息交互,其方向取决于是读操作还是写操作。数据总线的位数就是CPU的字长,是微控制器的重要指标。对于8位、16位、32位和64位的CPU,它们的数据线是8条、16条、32条和64条,其计算性能随着数据总线位数的增加而增强。
  • 地址总线:地址总线AB是单向的,由CPU发出地址信息,用来访问存储器和I/O接口。地址总线的位数决定了CPU可直接寻址的存贮空间的大小,若地址总线为16位,则其最大可寻址空间为2^{16}=64K字节=64K byte=64KB;若地址总线为20位,则其可寻址空间为2^{20}=1M byte=1MB;若地址总线为n位,则其寻址空间为2^n字节。
  • 控制总线:控制总线CB用来传送控制信号或时序信号。控制总线是单向的,有的是CPU输出,如读/写信号、时钟信号等;有的是外设传送给CPU的,如中断请求信号、复位信号等。每个信号都有自己的功能,控制着微控制器有序工作。

以CPU访问存储器为例,CPU通过地址总线、数据总线和控制总线的配合, 与存储器之间传输信息,如从存储器读取指令、数据;或将运算结果输出,写入存储器保存。(存储器由存储矩阵、地址译码器、读写控制(三态双向缓冲器)等部分组成),

微控制器工作原理

对于微控制器使用者来说不需要详细了解其内部结构的具体线路,但需要清楚理解微控制器的工作原理和过程。微型计算机和微控制器的工作过程就是执行程序的过程,执行不同的程序就完成不同的任务、实现不同的功能。用户编写的程序预先存放在ROM中,微控制器的工作过程就是从ROM中逐条取出指令并执行的过程。

在介绍工作原理之前,先了解程序与指令的概念:程序是为实现某个功能而编写的一系列指令的有序集合。而指令是微控制器指挥各功能部件工作的指示和命令。微控制器使用者熟悉的指令用助记符进行表示,而微控制器能识别的是指令的机器码,是一组二进制数。对于微控制器的指令类别、数量、助记符、机器代码等,因其使用的内核不同而不同,是由内核设计者规定的。采用8051内核的MCU,其指令系统都是相同的。
一条指令包括两部分内容:
1.操作码,指明指令的功能(即做什么操作)
2.操作数,指明指令执行的数据或数据存放的地址(即操作对象)
以以下指令为例:

第一条指令的操作码是24H,操作数是68H。指令执行的操作是将累加器A的内容与立即数68相加,并把结果放回A中,即(A) <- (A)+68。
第二条指令的操作码是74H,操作数是15H。指令执行的操作是将立即数15H赋给累加器A,执行后A中的内容为15H,即(A) <- 15H。
第三条指令的操作码是D2H,操作数是90H。指令执行的操作是将P1口的D0位即P1.0置为1,执行后P1.0引脚变为高电平,即P1.0 <- 1。

之前在CPU一节中说到过CPU由运算器(ALU)控制器组成,控制器又由指令部件、时序部件操作控制部件三部分组成,指令部件由程序计数器PC(Program Counter) 、指令寄存器IR(Instruction Register)指令译码器ID(Instruction Decode)组成,其中程序计数器 PC是16位的ROM指针(16位特殊功能寄存器),用于存放下一条取指指令的地址,寻址范围为64K;指令寄存器IR为8位寄存器,存放当前指令的操作码,等待译码;指令译码器ID对当前指令操作码进行译码,并通过控制电路产生执行该指令需要的控制信号,完成指令规定的操作。

指令执行过程:每条指令的执行可分为三个步骤,即读取指令(取指)、分析指令(译码)和执行指令(执行)。

  1. 读取指令(取指):根据程序计数器PC中的值,从ROM中读出当前指令的操作码,送到指令寄存器IR
  2. 分析指令(译码):将指令寄存器IR中的操作码送入指令译码器进行译码,分析该指令要求进行什么操作、操作数在那里。
  3. 执行指令(执行):根据译码结果取出操作数,由控制逻辑电路发出完成这条指令需要的一系列时序和控制信号,完成指令规定的操作。

以指令“MOV A,#15H” (机器码为74H,15H,分别存放到ROM单元的0000H 和0001H)为例详细说明微控制器的工作过程:

  1. 取指令:程序开始执行时,CPU内部的程序计数器(PC)当前值为0000H。第一步PC将地址0000H送入地址寄存器,第二步CPU发出读信号,从ROM的0000H单元取出操作码74H,第三步取出的操作码74H经数据总线(DB)送入指令寄存器;第四步,PC值自动加1,指向下一个要读取的单元(0001H)。

  2. 分析指令:由指令译码器对现行指令进行译码,分析该指令要求 实现什么操作,如执行数据传送,还是加、减等运算等。第一步指令寄存器中的操作码74H送入译码器;第二步译码器分析74H,确认为“MOV A, #data”指令,并识别到需要从下一个存储单元获取立即数。

  3. 执行指令:取出操作数,由控制逻辑电路发出相应的控制信号, 完成操作码规定的操作。第一步CPU根据PC当前值(0001H)取出操作数15H;第二步将取出的立即数15H经由内部数据总线送入累加器A;第三步PC值再次自动加1,指向下一条指令的地址(0002H)。

微控制器在工作前,必须要把程序(完成一定功能的指令序列)存放在ROM中。微控制器上电后,即从ROM的0000H单元开始逐条取出指令,执行程序。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 21:41:58

25、GNOME 2 开发中的界面组件使用指南

GNOME 2 开发中的界面组件使用指南 在 GNOME 2 开发中,界面组件的使用对于构建功能丰富、用户体验良好的应用程序至关重要。下面将详细介绍几种常见界面组件的使用方法和特性。 1. 状态栏(Status Bar) 在 GTK+ 中,状态栏的小部件类是 GtkStatusbar ( GTK_TYPE_STATU…

作者头像 李华
网站建设 2026/8/21 9:15:18

AI:深度学习中反向传播中的链式法则和梯度

反向传播中链式法则的核心作用是将复杂网络的梯度计算分解为逐层的简单计算&#xff0c;使我们能高效地从输出层误差反推出各层参数的更新方向。 一、核心概念解析 1. 梯度的本质 梯度是损失函数对参数的偏导数&#xff0c;表示误差随参数变化的敏感度。在神经网络中&#xff0…

作者头像 李华
网站建设 2026/8/22 1:42:56

深入解析 Apollo:微服务时代的配置管理利器

在微服务架构大行其道的今天&#xff0c;服务数量的爆炸式增长带来了许多治理上的挑战。其中&#xff0c;配置管理&#xff08;Configuration Management&#xff09;往往是最容易被忽视&#xff0c;却又最痛的一个点。 想象一下&#xff0c;你的系统有几十个微服务&#xff0…

作者头像 李华
网站建设 2026/8/21 4:43:11

【大模型】-LangChain自定义工具调用

文章目录10.1 tool 装饰器10.2 StructuredTool10.3 处理工具错误10.4 调用内置工具包和拓展工具10.5 自定义默认工具10.6 如何使用内置工具包方案&#xff1a; 普通函数 Tool对象&#xff08;最简单&#xff09;from langchain.tools import Tool# 1. 定义普通函数 def weathe…

作者头像 李华
网站建设 2026/8/22 0:11:24

延吉本地人去的烤肉哪家无广

延吉本地人私藏无广烤肉——延炭乳酸菌烤肉在延吉&#xff0c;烤肉是美食文化中浓墨重彩的一笔。对于延吉本地人来说&#xff0c;一家地道且无广的好烤肉店&#xff0c;是味蕾的眷恋。延炭乳酸菌烤肉就是这样一家宝藏店铺&#xff0c;深受本地人的喜爱。健康理念&#xff0c;独…

作者头像 李华