news 2026/5/6 17:58:56

第二章(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/5/3 21:08:51

22、文本缓冲区操作全解析

文本缓冲区操作全解析 1. 文本缓冲区基础 1.1 基本特性 文本缓冲区采用 UTF - 8 编码,这使得字节计数(索引)和字符计数(偏移量)有所不同。一个文本缓冲区至少包含一行(可能为空),除最后一行外,每行以行分隔符结尾,行分隔符被视为一个字符,它可以是 Unix 换行符、…

作者头像 李华
网站建设 2026/5/5 11:16:03

打卡信奥刷题(2536)用C++实现信奥 P2044 [NOI2012] 随机数生成器

P2044 [NOI2012] 随机数生成器 题目描述 栋栋最近迷上了随机算法&#xff0c;而随机数是生成随机算法的基础。栋栋准备使用线性同余法&#xff08;Linear Congruential Method&#xff09;来生成一个随机数列&#xff0c;这种方法需要设置四个非负整数参数 m,a,c,X0m,a,c,X_0…

作者头像 李华
网站建设 2026/5/4 19:45:25

基于VFNet的安全装备检测系统Python实现(含代码+模型解析)

本数据集名为"apd detection"&#xff0c;版本为v2&#xff0c;于2024年2月16日创建&#xff0c;由qunshankj平台用户提供&#xff0c;遵循CC BY 4.0许可协议。该数据集专门用于个人防护装备&#xff08;APD&#xff09;的检测与识别任务&#xff0c;包含1346张图像&…

作者头像 李华
网站建设 2026/5/5 0:19:52

基于springboot和vue的校园志愿者服务平台_33938pud(java毕业设计项目源码)

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/5/4 9:27:47

WHERE和HAVING子句的使用场景有何不同?

本报告旨在深入、全面地剖析结构化查询语言&#xff08;SQL&#xff09;中两个核心过滤子句——WHERE和HAVING——在使用场景、功能机制、执行顺序及性能影响上的本质区别。尽管两者都承担着数据筛选的功能 但它们的运作逻辑和适用领域截然不同&#xff0c;正确区分并使用它们是…

作者头像 李华