深度解析,单片机运行原理,你知道吗?

单片机是将中央处理单元(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)就有了第一个指令地址,在时序电路作用下,送到指令寄存器,分析指令,执行指令,输出功能,如此循环。单片机就这样自动进入执行程序过程。

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

分享有用的干货,解决新手面临的所有问题

想要学习单片机的朋友 ,做毕业设计的同学,关注我们,回复陈老师,与导师一起学习成长,共同进步,还有更多资料领取。

说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~

-END-

*本文系网络转载,版权归原作者所有,如有侵权请联系删除

陈老师深度为你解析,单片机的运行原理相关推荐

  1. 深入解析SpringBoot核心运行原理和运作原理源码

    SpringBoot核心运行原理 Spring Boot 最核心的功能就是自动配置,第 1 章中我们已经提到,功能的实现都是基于"约定优于配置"的原则.那么 Spring Boot ...

  2. python socket读取数据不能解析_通过实例解析return运行原理,除了quot;生孩子quot;python真是无所不能啊...

    文章内容主要介绍了通过实例解析Python return运行原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下!!! return 语句就是讲结果返 ...

  3. 陈老师一次把单片机说清楚,还不懂的看过来。

    单片机专题(水平有限,有错请指出呀) 1.什么是单片机? 单片机又称为单片微控制器,它不像什么数字芯片一样是完成一种特定的功能,而是我们能够通过在上面编程而达到一些自己想要的功能.它现实中上就是一台小 ...

  4. 51单片机过时了?为什么还有人学51呢?陈老师为你解答

    在一些技术交流群,很多人会咨询如题目中的问题:为什么大多数的单片机课仍然还学习51单片机而不是更复杂/实用的STM32单片机? 其中点赞较多的居然是"学校教师不懂STM32",&q ...

  5. pmw原理c语言,详细解析单片机 PMW 控制基本原理

    详细解析单片机 PMW 控制基本原理 PWM是Pulse Width Modulation的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其 ...

  6. 陈老师给你介绍半导体功率器件知识大汇总

    常用的半导体功率器件知识大汇总 电力电子器件(Power Electronic Device),又称为功率半导体器件,用于电能变换和电能控制电路中的大功率(通常指电流为数十至数千安,电压为数百伏以上) ...

  7. 共模电压你了解多少?陈老师带你搞清楚

    共模电压原来是这么回事! 大家好,我是单片机陈老师,相信很多工程师在日常的调试工作中,或多或少会碰到共模电压的问题,尤其在两线制电流变送器接到模拟量输写通道时,更容易产生误解和歧义.因此,很有必要跟大 ...

  8. 作为硬件开发,你一定要知道开发板是个什么东西?陈老师带你了解

    作为智能硬件开发,你一定要知道开发板是个什么东西? 如果您有和智能硬件开发人员打交道,或者贵公司正好有智能硬件的开发需求,又或者你正在学习关于智能硬件方面的知识,那么你一定听过『开发板』这个词语. / ...

  9. 什么是can总线程,它的应用有哪些?陈老师带你了解

    CAN总线是数字信号,还是模拟信号? CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是由以研发和出产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际规范 ...

最新文章

  1. centos7中使用yum安装tomcat以及它的启动、停止、重启
  2. oracle 查虚拟路径,Oracle11gR2创建虚拟专用恢复目录
  3. SecureWatch和人工智能为疫情期间更安全有效地监控房地产开发提供助力
  4. hdu-5703 Desert(水题)
  5. spacy 英文模型下载_spaCy2.1中文模型包
  6. 【Linux查看tomcat版本】
  7. 【提问】iOS UIAtumator 是怎么判断元素isVisible的?
  8. CLR基础---生成、打包、部署和管理应用程序及类型(二)
  9. U盘快捷方式病毒修复
  10. RAM Type——Register file(寄存器堆)
  11. 以WGR614v9与WG602v4为例,说明WDS功能的配置过程
  12. 2016腾讯实习生招聘在线笔试总结(移动开发)
  13. 关键词抽取——结巴分词
  14. 用python生成个性二维码生成器_Python 生成个性二维码
  15. 审阅模式中word保存不了
  16. python字典中删除键值对的del语句与pop方法
  17. matlab while 嵌套,MATLAB嵌套循环
  18. 每天学习一个设计模式(九):创建型之建造者模式
  19. C++到底还能做什么?
  20. BLE 发射功率 发射功率概念介绍

热门文章

  1. 常见web安全隐患及解决方案
  2. 2021年危险化学品经营单位安全管理人员考试题库及危险化学品经营单位安全管理人员模拟考试题
  3. bootstrap实际应用之阿里百秀的制作
  4. Java集合框架及基本接口
  5. PX4模块设计之四:MAVLink简介
  6. 最小表示串 学习【最小表示串 学习(粗)】
  7. 淮南师范学院计算机是几本,淮南师范学院是几本 是一本还是二本
  8. rock64 linux,挑战树莓派:PINE64 发布 Rock64 Media Board Computer 开发者主板
  9. mmap函数的用法详解及实例分析
  10. 解决如何删除打印机端口及驱动