当前位置: 首页 > news >正文

第二章(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单元开始逐条取出指令,执行程序。

http://www.cnnetsun.cn/news/51845.html

相关文章:

  • 【大模型】-LangChain--stream流式同步异步
  • 兜兜英语每日短语:逃单篇
  • 计算机毕业设计springboot汽车智慧检修系统 基于SpringBoot的智能汽车故障预测与维修管理平台 融合IoT的SpringBoot车辆健康监测与维修决策系统
  • python3
  • 【3D图像技术分析与实现】Apple Vision Pro三维成像技术栈深度解析
  • 经典算法题详解之统计重复个数(三)
  • 移动应用开发实验室大一上考核
  • 云数据库服务(如AWS RDS)的优势和考虑因素?
  • 【设计模式|第四篇】适配器模式:让不兼容的接口协同工作
  • asgiref终极指南:高效解决Python异步通信难题
  • 医学影像深度学习知识点总结
  • 从零到一:自动化3D建模的免代码解决方案
  • Kali中生成被控端
  • 13、Linux 文本编辑与命令操作实用指南
  • 20、Linux 备份全攻略
  • 22、Debian系统管理与安全保障全解析
  • 32、Debian变体与基于Debian的其他操作系统
  • 50、无线传感器网络部署方案与加密算法研究
  • 51、无线传感器网络部署方案与LEACH协议优化研究
  • 54、垃圾邮件和即时通讯垃圾信息的分类与控制措施
  • 如何通过AutoGPT生成高质量技术博客为GPU算力引流
  • 多目标蜣螂优化算法NSDBO:微电网多目标优化调度的利器
  • 本研究基于分形纤维丛统一场论,构建了黑洞时空的几何模型,揭示了奇点消解、霍金辐射修正及信息守恒的新机制。该模型的优势在于将宏观时空的广义相对论效应与微观量子的分形特性实现了有机融合。
  • 好写作AI语言侦探:你的论文严谨性“隐形把关人”
  • 解放双手!钉钉智能打卡神器完全上手手册
  • DMXAPI全球模型API调用完全指南:从入门到精通
  • 告别“翻墙“烦恼:DMXAPI让Gemini-3-pro-thinking调用快如闪电
  • leetcode 744. Find Smallest Letter Greater Than Target 寻找比目标字母大的最小字母-耗时100%
  • Home Assistant通知系统:3步打造智能家居提醒中心
  • 学Simulink——机器人轨迹跟踪场景实例:基于Simulink的永磁同步电机笛卡尔空间圆弧轨迹跟踪仿真