首页 > 微机单片机 > 单片机运行原理的一点点总结

单片机运行原理的一点点总结

来源:互联网发布者:宋元浩 关键词: 单片机 更新时间: 2023/01/04

单片机是将中央处理单元(CPU)、储存器、输写输出集成在一片芯片上,能够说单片机就是一台微型计算机,只是和我们平常运用的计算机相比它的功能有所不同,也没有我们用的计算机那样壮大。

计算机能够运行一个个应用,单片机能够依照工程师的编写可执行文件,达到林林种种的功能。那么,单片机是怎么知道要执行什么指令,做什么动作呢,我们的指令又是怎么被单片机识别呢?了解这个过程,能够加深对单片机的了解。

首先要从CPU的组成说起,CPU是由晶体管组成的,这些晶体管是一种半导体器件,假如二极管就是最为常见的半导体器件。电流只能从正极流向负极,反向则截止。

二极管

晶体管通过各种组合方式构成门电路:与门,或门,非门,异或门......。门电路又称为逻辑门,是数字电路的根底,常见门电路,及其真值表:

真值表

与门电路

7bb6e69e87a58b70a773d4c3ab5c5025.png与门电路能够想象为两个串联开关控制一个灯泡,独有同时闭合两个开关,灯泡才会被点亮。开关表示晶体管的导通与截止,灯泡的点亮与熄灭表示电路输出的高低电平。

其他门电路也是由各种晶体管构成,不同的输写,有不同的输出,构成各种功能。各种门电路通过复杂的组合就成了CPU了。其次用CPU完成各种复杂计算的。

加法器

有了CPU,我们用它来算一道小学生算术题1+1=2,看看它是怎么计算的,从一个简略加法器初始,加法器由半加器组成。

半加器:

半加器由一个与门和异或门构成。不考虑低位进位来的进位值,独有两个输写,两个输出。

半加器

1+1=2,2在二进制中表示为0010。在半加器中:异或门输写不同的电平(不是同时高或低),输出为高,也就是1+0或0+1,输出1,当两个都输写为1输出为0,与门则输出为1,也就是进位。能够把它抽象成一个黑盒子。

半加器

全加器:

用两个半加器可以组成一个全加器。

全加器

当多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数(B和进位CO),还有一个来自前面低位送来的进位数 (A)。这三个数相加,得出本位和数(全加和数)和进位数。同样能够把它抽象出来。

全加器

假如要计算多位数的相加,则须要多个全加器以及其他门电路,组合出更复杂的加法器。减法的运算能够用加法来分解:

减法:10 - 5 = 10 +(-5),须通过反码,补码等操作。

其他运算器也有有关的门电路来组成,相关知识这里不展开。

从加法器我们不难得出,CPU的运算是各种门电路的高低电平的输写和输出,高电平为1,低电平为0,把我们平常的十进制数字转成二进制数输写,输出二进制数。

寄存器

两个数字相加用全加器的组合来完成,假如是多个数字的相加呢?假如1+2+3+4+5+……+100,该怎么完成呢?

依照我们的计算过程来看这个问题,我们先把前两个数拿出来相加,得到的和再和第三个数相加,依次累加到100,转换到单片机来完成,那就要把所有的相加数放到一个存储器中,以便在每次的相加中取出,还要把每次相加的和数保存起来用到下一次的相加,这就用到了寄存器了。

寄存器-1保存1-100的数字,寄存器-2保存每次的相加结果。计算1-100的相加,寄存器-2的初始值为0,依次取出寄存器-1的数字和寄存器-2的结果相加:

1+0=1,

2+1=3,

3+3=6,

4+6=10……

锁存器:

但是寄存器是怎么帮我们保存数据的呢?这就要锁存器(Latch)来帮助了,两个或非门组成了一个最简略的锁存器。

保存数据

锁存器

简略的说,这个单元记住了之前S端的输写1,直到我们把R端设为1,输出端Q才变回0。

其次在这个简略锁存器加上控制端G和一个输写端D就变成了D锁存器:

D锁存器

它有两个输写端,分别是一个信号控制G,一个输写数据信号D,一个输出Q。它的功能就是在G有效的时候把D的值传给Q,也就是锁存的过程。

触发器:

把两个D锁存器联合到一起就成了D触发器(DATA flip-flop)。触发器也叫双稳态门,又称双稳态触发器,是一种能够在两种状态下运行的数字逻辑电路。触发器一直保持它们的状态,直到它们收到输写脉冲,又称为触发。常见的触发器包含:RS 触发器、D 触发器和 JK触发器等,其中D触发器最为常用。

触发器

当锁存器-1控制G为有效信号时,D的输写传到到锁存器-2的输写,但是此时锁存器-2的控制信号不是有效的,所以锁存器-2的输出Q没有变更;当锁存器-1的控制G变为没效,锁存器-2的控制信号变为有效,锁存器-2的输出Q就变更了,也就是触发器的D输写传到了Q,并且D没有输写就一直不变。

时序电路:

我们再来看看1—100的累加过程,假如寄存器-1和寄存器-2的存储速度不一样,或者运算单元取数不协调,也就是寄存器-2没来得及存储,或者寄存器-1还没取出下一个参与运算的数字,则此次的运算就会就会出错,又会影响到下一次的运算,这个影响会没限放大到之后的结果,并且单片机还有很多外设须要同步运行,这时就须要一个统一指挥来同步各个局部的行动,什么时候该做什么,做到哪一步了。

时序电路

这个指挥就是时钟。时钟电路产生脉冲信号给电路,能够认为给一次脉冲信号,单片机各个部位就动一下,电路就刷新一下,这就做到了行动统一。前面的D锁存器,D触发器G输写端就是时钟脉冲信号输写,控制G输写信号,进而控制Q的输出,或者记住Q值。这是内存最初的样子。

到此,我们知道了寄存器就是一种时序逻辑电路,但这种时序逻辑电路只包括存储电路。寄存器的存储电路是由锁存器或触发器构成的,拿来暂时寄存参与运算的数据和运算结果。

一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器能够构成N位寄存器,一般有8位寄存器、16位寄存器等。它被广泛的用于各类数字系统和计算机中。

运行程序

有了前面的铺垫,我们来尝试分析一下,代码从是怎么被单片机识别的,并转换成功能输出的。

首先工程师把代码逻辑写好,再编译成单片机的可执行程序,这个可执行程序现实中上就是变成由0,1组成的按一定规律排列好的二进制数,再用烧录器写进单片机。

单片机内部就是由我们前面学的门电路的各种组合,门电路也由半导体器件构成,这些半导体PN结是一种特殊的熔丝。空白的单片机内部是矩阵排列的熔丝,在烧录过程,程序中0的地方就熔断,1的地方就导通。烧录好之后,单片机就有了逻辑功能。

执行程序过程:从程序存储区读取程序指令——分析指令——执行指令。

读取指令:就是依据程序计算器(PC)的地址取出相应的指令,送到指令寄存器。

分析指令:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令是我们之前的加法运算中的取加数,则寻找加数的地址。

执行指令:没非是把一条二进制代码,转换成数字信号(高低电平),操作逻辑门电路,就像我们的加法器一样输写输出。把经过逻辑门运算的结果输出,把单片机的有关引脚电平输出高或低。

也就是单片机上电开机,单片机处于初始状态,能够认为初始状态中程序计算器(PC)就有了第一个指令地址,在时序电路作用下,送到指令寄存器,分析指令,执行指令,输出功能,如此循环。单片机就这样自动进入执行程序过程。

当然单片机运行的过程是很复杂的,这里只是个人简略的了解,总结。


提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

推荐帖子 最新更新时间:2024-11-13 08:53

在已有的镜像文件中加入流驱动程序Ov511.dll?
我自己应经有一个pb5.0编译的内核,想要加入一个Ov511.dll的流驱动程序,应该如何实施具体操作? 我在网上找了一些资料说不用全部重新编译,只要make image,会重新生成新的NK.bin文件,是不是这样啊? 请教哪位大侠具体说明一下操作步骤。感激不尽! 在已有的镜像文
 beijilang5嵌入式系统
IAR 430 debug live watch 不可以选择
IAR 430 debug live watch 不可以选择,仿真器用的fet430uif ,jtag 大家知道什么原因吗? IAR 430 debug live watch 不可以选择 自己顶一下 看看你的优化等级 一是要把程序的优化级别设为none。 但是我看了一下,好
 Tinaqwe微控制器 MCU
ARM嵌入式软件编程经验谈
A R M 系列处理器是R I S C(R e d u c d e d I n s t r u c t i o n S e t Computing)处理器。很多基于ARM的高效代码的程序设计策略都源于RIS C处理器。和很多R I S C处理器一样,A R M系列处理器的内存访问
 呱呱ARM技术
用stm32f103做红外遥控程序
32键NEC编码的遥控器, 想改成LD3320语音识别控制, 用STM32F103RCT6做红外遥控解码, 具体应该怎么做: 用什么软件(方法)读出遥控器编码? LD3320语音识别模块关键词例表巳建立 怎样加载指令? STM32F103RCT6做红外遥控编码的程序? 求高手帮助
 cchuyunstm32/stm8
串口下载之检测方法
建议你按以下步骤尝试: 1:串口线2-3短接,用串口助手自发自收,如果有数据那串口线是好的。 2:拔下单片机,上电,RXDTXD短接,用串口助手自发自收,应该有数据,此步可确定max232部分正常 3:串口助手波特率调到最大,手触txd脚,助手上一般会有乱数据受到,此步确保
 huo_hu51单片机
ZigBee协议栈占内存问题
我想问一下ZigBee协议栈占多少内存,我用的是cc2530芯片,协议栈用的是ZigBee2007/pro ZigBee协议栈占内存问题
 mgf_xuexiRF/无线

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved