单片机运行原理的一点点总结
来源:互联网发布者:宋元浩 关键词: 单片机 更新时间: 2023/01/04
单片机是将中央处理单元(CPU)、储存器、输写输出集成在一片芯片上,能够说单片机就是一台微型计算机,只是和我们平常运用的计算机相比它的功能有所不同,也没有我们用的计算机那样壮大。
计算机能够运行一个个应用,单片机能够依照工程师的编写可执行文件,达到林林种种的功能。那么,单片机是怎么知道要执行什么指令,做什么动作呢,我们的指令又是怎么被单片机识别呢?了解这个过程,能够加深对单片机的了解。
首先要从CPU的组成说起,CPU是由晶体管组成的,这些晶体管是一种半导体器件,假如二极管就是最为常见的半导体器件。电流只能从正极流向负极,反向则截止。
晶体管通过各种组合方式构成门电路:与门,或门,非门,异或门......。门电路又称为逻辑门,是数字电路的根底,常见门电路,及其真值表:
与门电路
与门电路能够想象为两个串联开关控制一个灯泡,独有同时闭合两个开关,灯泡才会被点亮。开关表示晶体管的导通与截止,灯泡的点亮与熄灭表示电路输出的高低电平。
其他门电路也是由各种晶体管构成,不同的输写,有不同的输出,构成各种功能。各种门电路通过复杂的组合就成了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锁存器:
它有两个输写端,分别是一个信号控制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)就有了第一个指令地址,在时序电路作用下,送到指令寄存器,分析指令,执行指令,输出功能,如此循环。单片机就这样自动进入执行程序过程。
当然单片机运行的过程是很复杂的,这里只是个人简略的了解,总结。
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- 电子工程师自学速成 提高篇
来源:下载中心
- AD官方元件封装库:Integrated Device Technology
来源:下载中心
- 模拟电子技术基础
来源:大学堂
- 电工基础
来源:大学堂
- PCB板基础知识讲解
来源:电路图
- 常用的13种半导体功率器件介绍
来源:电路图
推荐帖子 最新更新时间: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/无线
- 【ADI•世健工业嘉年华】3、让风机转起来
- 新人求解
- AVR-JTAG 仿真器制作
- 强电对测量结果的影响和解决办法?
- 在一个Flash上 是否可以分三个区 分别存放XIP,HIVE注册表,FATFS扩展分区
- 关于EVC的...
- 焊接材料的选配
- Altium Desinger怎么走蛇形线
- 提个建议----为什么不能转帖啊?
- 关于stm32和spc3连接的问题
- 关于热能控制的元器件
- IGBT超声波自动频率跟踪电路
- ST加速计使用基础篇【ST工程师干货文章分享】
- 求:MFC编程之CAN通信---同步,超时处理方法
- 原理决定特点!图解等离子面板篇
- 【看视频,答题有奖】了解keysight汽车电子解决方案,答题赢好礼(已颁奖)
- 准备好好学习430
- 12V开关电源求推荐
- 铁电存储IC擦写次数
- arm与单片机的区别
- AM6TW-4824DH35Z ±24V 6 瓦单输出 DC/DC 转换器的典型应用
- 调制解调器的FSK调制解调器应用电路
- STM32F051R8 MCU的探索套件
- NCP699SN28T1G 150mA、2.8 输出电压 CMOS 低 Iq LDO 的典型应用,在 TSOP-5 中启用
- L6566A 多模控制器的典型应用,用于带 PFC 前端的 SMPS
- 同步降压MPPT太阳能控制器
- 使用 Infineon Technologies AG 的 OMR9600SF 的参考设计
- Si4736-EVB,Si4736 高性能、76 至 108 MHz 数字无线电调谐器评估板
- AC243008,基于 SST25VF020B 的串行 SuperFlash 套件 2
- 基于AVRBC100两个电池/电池组的充电和放电、备用电池参考设计