51单片机内核及其工作原理

您所在的位置:网站首页 地球的内核是什么样的 51单片机内核及其工作原理

51单片机内核及其工作原理

2024-07-14 01:55| 来源: 网络整理| 查看: 265

目录

前言

一、51单片机的基本框架

1、单片机的概念

2、简略结构

3、详细结构

1、微处理器(CPU)

①运算部件

②控制部件

2、存储结构

内部数据存储器(内部RAM)

特殊功能寄存器

外部数据存储器(外扩RAM)

程序存储器

3、I/O口

4、时钟电路和时序

时钟电路

机器周期、指令周期与指令时序

二、运行过程

完结

前言

51单片机(MCS—51)是一款比较适合新手入门的单片机,通过对51单片机的学习,打好基础,就可以轻松的过渡到其他比较复杂的单片机上去(如STM32,MSP430等),对于理解其他单片机甚至是更复杂微机的基本结构、工作原理都有很大的帮助。下面将从51单片机的内核、硬件结构、工作原理、内部运行过程等方面进行介绍,对其外设不作过多介绍。

在此之前,为了方便理解内容,最好具备一些微机基础知识,以及一些模数电知识等。可以先看看

①微机基础概念及其内容

②冯诺依曼结构和哈佛结构

③机器语言、汇编语言、高级语言

有助于理解下面内容。 

一、51单片机的基本框架 1、单片机的概念

将组成微型计算机的各个功能部件:中央处理器(CPU)、存储器(RAM、ROM等)、定时/计数器、串行口、I/O接口电路等集成在一块集成电路芯片中,从而构成完整的微型计算机,所以叫作单片微型计算机,简称单片机,也可以称作微控制器(MCU)或嵌入式微控制器(EMCU)。

51单片机最小系统电路图 2、简略结构

如下51单片机的简略结构框图:

CPU主要包括控制器、运算器(ALU)和寄存器。

RAM用作数据存储器,而ROM用作程序存储器(即指令存储器),由此可以看出,数据存储器和指令存储器是分开的,所以其存储结构为哈佛结构。

I/O接口主要是:①与数据总线相连的I/O数据缓冲寄存器,用作单片机与外设交换数据的缓冲器;②与地址总线相连的寄存器地址译码器,用来正确寻址与单片机进行数据交换的外设;③与控制总线相连的读写控制逻辑部件,用来提供单片机与外设交换数据时所需的控制逻辑和状态信号。所有的外设都需要通过I/O接口来驱动,即所谓的I/O操作是指对I/O接口中端口(寄存器)的操作,进而间接访问I/O设备,所以必须要有I/O接口。

各个部件通过总线的连接形成一个整体。特别是数据总线的宽度为8位(或者说数据总线的条数为8),即字长为8(字长的概念在 微机基础概念及其内容中有提到),所以51单片机是8位单片机。

3、详细结构

将其细化一下便有如下框图:

其中主要包括:UPU、数据存储器、程序存储器、I/O口、串行口、定时/计数器、中断系统以及特殊功能寄存器(SFR),其中SFR较为重要。

按功能大概可以分为八个功能部件,通过片内总线将其连接在一起。而单片机的控制方式就是:CUP通过对特殊功能寄存器的控制,进而对各个功能部件集中控制。简单地说,学习单片机的控制方式,实则就是学习如何操作特殊功能寄存器。

1、微处理器(CPU)

主要由运算器和控制器构成,如果将51单片机的硬件结构继续展开,便可以看到51单片机CUP的更详细的组成,如下:

①运算部件

运算部件以算数逻辑运算单元(ALU)为核心,同时包含累加器ACC(简称A)、B寄存器、暂存器以及标志寄存器(PSW)等。

累加器A:使用最频繁的寄存器,是ALU单元的输入之一,又是运算结果存放单元;数据传输大多通过累加器A;A的进位标志Cy同时是位处理机的累加器。

寄存器B:主要用于乘、除运算。寄存器B也可作为一般的寄存器用。

PSW:称程序状态字寄存器,地址空间为其分配的地址为:D0H,而每一个地址都对应一个字节,即8位。如下:

Cy:进位标志位,反应ALU运算是否有进位。

AC:辅助进位标志,反应数据的低四位是否向高四位进位,也即十六进制是否有进位。

F0:标志位,留给用户自定义的一个状态标志位。

RS1、RS0:四组工作寄存器区控制位1和位0,即控制选择四个工作寄存器。

OV:溢出标志位,指示运算是否产生溢出。

PSW.1:保留位,未使用。

P:奇偶标志位,若为1,则表示A中“1”的个数位奇数,若为0,则表示A中“1”的个数位偶数。

运算部件功能:实现算运算、逻辑运算、位运算、数据传输等处理。

②控制部件

控制部件是单片机的控制中心,包括定时和控制电路、指令寄存器、指令译码器、程序计数器PC、堆栈指针SP、数据指针DPTR以及信息传送控制部件等。

指令寄存器(IR):存放所取出的指令;

指令译码器(ID):对指令进行译码;

定时和控制电路:根据指令发出时序控制信号。

程序计数器PC:是一个16位的计数器,存放下一条要执行的指令在程序存储器中的地址。由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。PC的寻址范围为64KB,即地址空间为0000~0FFFFH。其基本工作方式为:

(1)程序计数器自动加一,即当某一条指令被取出之后,程序计数器就会自动的加一,所以当执行某一条指令时,PC中方的就是下一条指令的地址。

(2)执行有条件或无条件转移指令时,程序计数器将被置入新的数值,即新的将要跳转目的地的入口地址,从而使程序的流向发生变化。

(3)执行子程序调用或中断调用时完成下列操作:

①PC的当前值保护;

②子程序入口地址或中断向量的地址送入PC。

堆栈指针SP:SP为8位寄存器,用于指示栈顶单元地址。堆栈是一种数据结构,只允许在其一端进行数据删除和数据插入操作的线性表。数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。进栈时,使SP的内容增1后作数据压入操作;出栈时,先把栈顶的数据弹出,然后使SP的内容减1。(先进后出原则)

数据指针DPTR:数据指针DPTR为16位寄存器,它是一个16位寄存器。DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64KB。编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。

控制部件基本功能及其运作过程:以振荡信号为基准产生CPU时序,从程序存储器中取出指令到指令寄存器中,然后在指令译码器中对指令进行译码,产生控制信号,指挥各个功能部件产生相应的操作,完成对应的功能。

2、存储结构

51单片机采用的是哈佛结构,所以数据和指令分开存放在数据存储器(RAM)和程序存储器(ROM,一般使用闪存)中。ROM主要用来存放程序、表格、常数;RAM主要用来存放变量、原始数据、中间数据、运算结果;

地址的简单理解:通过16条地址线,便可以产生2的16次方个地址,也即64K的地址空间。可以将地址比作教室门牌号,而数据可以比作教室里面的学生,每间教室8个座位,也即每个内存单元只能存储8位数据(一个字节),而数据存在什么地方,也就可以比作学生坐在哪间教室哪个座位,我们需要根据门牌号去找,如果告诉了座位号,则直接可以找到(即可以进行位寻址),如果没有座位号,则需要将八个学生一起叫出来,然后进行分辨(即只支持字节寻址)。而现在有64K(1K=1024)个门牌号可以给教室用,很明显最多只能给64K个教室用,不能再多了,没有门牌号的教室无意义。所以,地址的空间决定了存储器的大小。(举例不一定恰当)

数据总线的宽度为8位,决定了51单片机一次性能够并发处理的数据宽度为8位,即51单片机为8位单片机。而地址总线宽度为16位(有的为8位),决定了51单片机的寻址范围为64KB( 地址总线的概念在 微机基础概念及其内容中有提到),寻址空间的大小决定了存储器的空间大小,即不超过64K。而51单片机的存储器空间分为了5类:

程序存储器空间(最大64KB);

内部数据存储空间(地址8位,寻址范围256B);

特殊功能寄存器(128B);

位地址空间(16B);

外部数据寄存器空间(可以外扩64KB的RAM,地址总线宽度决定)。

基于哈佛结构,程序存储器和数据存储器独立编址,同时51单片机将特殊功能寄存器一起纳入内部数据存储器一起统一编址。以8051为例,内部RAM为128B,内部ROM为4KB。

MCS—51单片机存储器空间分配 外部数据存储器和内部数据存储器的区别: 片内数据存储器: 8位地址,可寻址256个字节存储单元;对片内RAM使用MOV指令访问; 片外数据存储器: 16位地址,最大可扩展至64K字节;对片外RAM使用MOVX指令访问;

三个问题:

①64KB的程序存储器和64KB的片外程序存储器地址空间地址都为0000H—FFFFH,地址空间有重叠的部分(0000H—0FFFH),他们如何区分?通过EA控制引脚便可区分,在后续的程序存储器部分有说明。

②片内数据存储器和片外数据存储器的低256字节的地址空间是重叠的,他们如何区分?采用不同的指令或寻址方式来访问。

③程序存储器和数据存储器地址空间存在重叠,他们如何区分?MCS-51的存储器采用哈佛结构,就是64KB程序存储器和64KB数据存储器是各自单独编址,各自独立的地址空间。 其地址编号是允许重叠的。原因是:从硬件连线上,访问外部程序存储器(读取)是控制线EA、PSEN有效,访问外部数据存储器是RD(读)、WR(写有效;从指令系统来说,采用不同的指令来访问,一般MOVC访问程序存储器,MOVX访问外部数据存储器。 在MCS-51中外部I/O接口地址是和外部数据存储器的地址在一起统一编址的,换句话说,就是I/O地址是外部数据存储器地址空间的一部分,因此I/O地址和外部数据存储器一样可以和外部程序存储器重叠。

内部数据存储器(内部RAM) 共128个字节, 字节地址为00H~7FH。

工作寄存器区:00H~1FH:32个单元,是4组通用工作寄存器区,在任一时刻,CPU只能使用其中一组通用寄存器,称为当前通用寄存器组,由程序状态寄存器PSW中RS1,RS0位的状态组合来确定。简单的说就是用来存放单片机运行的数据,R0,R1 支持寄存器寻址,可以当作高级语言中的指针用。R2-R7 一般用来存数据,相当于高级语言中的普通变量。因为51支持四组工作寄存器切换,所以R0-R7可以在不同子程序、中断程序中使用不同的组,避免当前工作参数被其它子程序或中断改变,有效的保护现场,相当于高级语言中的局部变。特别是在中断嵌套时,只要通过软件对程序状态字PSW中的RS0、RS1两位进行设置,切换工作寄存器组,就可以极其方便地实现对工作寄存器的现场保护。

可位寻址区:20H~2FH:16个单元,可进行128位的位寻址。16个字节共128位,每一位都分配一个8位地址,称为位地址,其范围是00H~7FH。位寻址区既可作为一般的RAM区进行字节操作;也可对单元的每一位进行位操作,具有位地址,因此称为位寻址区,是存储空间的一部分。虽然位地址和字节地址有重叠,但是他们的操作指令不同,可以区分。

用 户 RAM区:30H ~ 7FH : 只能进行字节寻址,用作数据缓冲区以及堆栈区。用户堆栈一般设在这个区间,当系统复位后,SP的内容默认为07H;

堆栈作用:堆栈的主要功能是保护断点和保护现场。因为计算机无论是执行中断程序还是子程序,最终要返回主程序,在转去执行中断或子程序时,要把主程序的断点保护起来,以便能正确的返回。同时,在执行中断或子程序时,可能要用到一些寄存器,需把这些寄存器的内容保护起来,即保护现场。

特殊功能寄存器 片内数据存储器的高128字节,分配给内部RAM区地址的高128单元是供给专用寄存器使用的,因此称之为专用寄存器区(也称为特殊功能寄存器区(SFR)区),单元地址为80H~0FFH。其实就是CPU对各种功能部件的控制采用特殊功能寄存器集中控制方式,共21个, 有的SFR可进行位寻址,其字节地址的末位是0H或8H。 特殊功能寄存器反映了MCS51 的状态,实际上是MCS51的状态字及控制字寄存器。 51单片机通过写SFR来控制相应功能部件(定时器、串口、中断等)的工作方式,同时SFR也综合的、实际的反映了整个单片机系统内部的工作状态 。例如,前面提到的PSW 程序状态字寄存器,就是一个特殊功能寄存器。 21个SFR的名称及分布:

可以看到,特殊共能寄存器 不是连续分布的,同时也剩余了一些地址空间,当单片机想增加更多的外设(如ADC等)时,就只需要在地址空间空闲的部分加入相应外设的功能寄存器就行。 外部数据存储器(外扩RAM) 最多可 外扩64K字节 的RAM或I/O,所以只能选择一个来进行扩展。 几点注意: (1) 地址的重叠性:程序存储器与数据存储器全部64K字节地址空间重叠,但程序存储器与数据存储器在使用上是严格区分的。 (3) 位地址空间共有两个区域。 (4) 片外与片内数据存储器由指令来区分,即不同地址区用不同指令来访问,哪怕地址重叠。 (5) 片外数据存储区中, RAM与I/O端口统一编址。 所有外围I/O端口的地址均占用RAM地址单元,使用与访问外部数据存储器相同的传送指令 由上面内容可知,内部数据存储器地址的高128字节被特殊功能寄存器给占用,如果内部RAM增加到256字节时,则RAM的低128字节单元地址与原来一样,但是高128字节单元的地址与特殊功能寄存器的地址重叠。如下:

如何解决重叠:采用不同的指令或寻址方式来访问。

程序存储器 存放应用程序和表格之类的固定常数。 分为片内和片外两部分,由EA*引脚上所接电平确定。

EA引脚为1: 同时使用片内外的ROM。若程序计数器PC的值在4KB(0000H~0FFFH)范围内,CPU访问片内ROM,执行片内ROM中的程序;若PC的值大于0FFFH(0FFFH~FFEFH),CPU将自动访问片外ROM。 EA引脚为0: 只使用片外ROM,丢弃片内ROM。CPU的所有取指令操作均访问片外ROM,这是片外ROM从0000H开始编址。 程序存储器中的 0000H 地址是系统程序的启动地址,即单片机启动时PC=0000H。 同时有5个具有特殊用途( 存放中断服务程序的入口地址): 5种中断源的中断入口地址

单片机复位后,程序计数器PC的内容为0000H,即系统从0000H单元开始执行程序。然而,由于0003H单元被保留,不能存放用户程序,其空间只有0000H到0002H三个字节大小,但是我们的程序大小不可能才三个字节,所以,一般在0000H~0002H单元,存放一条无条件转移指令(类似goto),从而程序可从转移后的地址开始存放。这样,CPU复位后,PC可以从0000H起始地址跳转到用户程序(如在串行口中断入口地址0023H之后)去执行。

同样,在预留的空间不够的时,中断服务程序也需要按照同样方式进行。

3、I/O口 共有4个8位双向I/O口,共32口线。 每位均有自己的锁存器(SFR),输出驱动器和输入缓冲器 。 P0~P3口都是并行I/O口,但P0口和P2口还可用来构建数据总线和地址总线,所以电路中有一个MUX,进行转换。而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无需转接开关MUX。 在接有片外存储器或I/O扩展时,P0口分时复用为低8位地址总线和双向数据总线。在接有片外存储器或I/O扩展且寻址范围超过256字节时,P2口用作高8位地址总线。 外部扩展总线示意图 只有P0口是一个真正的双向口,P1~P3口都是准双向口。 原因:P0口作数据总线使用时,为保证数据正确传送,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;否则应处于隔离状态。为此,P0口的输出缓冲器应为三态门。 P3口具有第二功能。因此在P3口电路增加了第二功能控制逻辑,每一条引脚可以独立定义为第一功能的输入输出或第二功能,这是P3口与其它各口的不同之处。 4、时钟电路和时序 时钟电路

时钟电路用于产生单片机工作所必需的时钟控制信号。时钟频率直接影响单片机的速度,电路的质量直接影响系统的稳定性。常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。

内部时钟方式:内部有一个用于构成振荡器的高增益反相放大器,其输入端:XTAL1,输出端:XTAL2。

外部时钟方式:常用于多片MCS-51 单片机同时工作,通过外部进行时钟输入。

机器周期、指令周期与指令时序

时钟周期:单片机的基本时间单位。若时钟的晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc。如fosc=6MHz,Tosc=166.7ns。

机器周期:CPU完成一个基本操作所需要的时间。执行一条指令分为几个机器周期。每个机器周期 完成一个基本操作。MCS-51单片机每12个时钟周期为一个机器周期,一个机器周期又分为6个状态:S1~S6。 每个状态又分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为: S1P1、S1P2、S2P1、S2P2、…、S6P2。

指令周期:执行一条指令时,可分为取指令阶段和指令执行阶段 。取指令阶段,PC中地址送到程序存储器,并从中取出需要执行指令的操作码和操作数。指令执行阶段,对指令操作码进行译码,以产生一系列控制信号完成指令的执行。

二、运行过程 复位:单片机的初始化操作,摆脱死锁状态。 引脚RST加上 大于2个机器周期(即24个时钟振荡周期)的高电平就可使MCS-51复位。 复位时,PC初始 化为0000H,使MCS-51单片机从0000H单元开始执行程 序。 除PC之外,复位操作还对其它一些寄存器有影 响,如下:

在复位有效期间,ALE脚和PSEN * 脚均为高电平, 内部RAM的状态不受复位的影响。

在上电时,或者在按下复位按键之后都可以使其复位。如下,基本复位电路:

在程序复位之后,PC=0000H,即从头开始执行程序,从内部或外部程序存储器的0000H单元依次开始执行指令(取指令、译码、执行指令)。

首先,PC=0000H,地址寄存器通过地址总线指向程序存储器的0000H存储单元,再通过控制总线输出读命令的控制信号,通过数据总线将程序存储器的0000H存储单元的数据(指令数据)读出并送到数据寄存器(缓冲)中,进而存入指令寄存器中,与此同时PC加一,变为PC=0001H,即指向下一条要执行的指令;读出的数据经过指令译码器后,翻译成相应的指令,然后给控制器进行执行。这里一般是一条跳转指令,使PC值变为用户程序的入口地址,即跳转到用户程序部分去依次执行。当然,期间可能有运算相关的指令,便需要结合累加器A和寄存器B,通过ALU进行运算,结果可以保存到存储器中等。

当遇到中断或调用子程序时,会先将当前的运行现场以及程序断点全部进行保存,通过堆栈指针SP,将这些数据压入栈区,特别是PC的值,因为它保存了程序的断点;然后将PC的值修改为子程序或者中断程序的入口地址,然后跳转到子程序或中断程序去执行。当执行完后,便需要使刚才压入的数据出栈,恢复到原来主程序运行的现场,并把PC值也一同恢复,程序便又可以跳转到断点处继续运行。

通过如上执行指令的方式,将数据写入到特殊给功能寄存器当中,对外设进行配置等,进而便可以驱动外设达到相应的功能,如定时器定时,计数器计数,串口发送数据等功能。

而这一切的操作,都需要根据时钟电路产生的时序,有序的进行,即时钟电路就相当于单片机的“心脏”。

完结

有误之处望指正



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3