MCS-51系列单片机的内部结构框图如图2-1所示。
MCS-51单片机组成结构中包含有:运算器(图2-2中的ALU)、控制器(图中的指令寄存器、定时及控制)、片内存储器(图中的RAM、ROM/EPROM/E2 PROM)、并行I/O口(图中的P0、P1、P2、P3)、串行I/O口、定时/计数器(图中P3的第2功能)、中断系统、振荡器等功能部件,注意8031、80C31、8032和80C232内部没有集成任何类型的ROM。这些部件通过内部总线紧密地联系在一起。它的总体结构仍是通用CPU加上外围芯片的总线结构。只是在功能部件的控制上,单片机与一般微机的通用寄存器加接口寄存器控制不同,单片机的CPU与外设的控制不再分开,采用了特殊功能寄存器SFR集中控制,这样使用更加方便。将图2-1中的CPU突出表示出来,可用图2-2来描述。
图2-1 MCS-51单片机的内部结构框图
图2-2 MCS-51单片机CPU部分的结构
由图2-2可看到,MCS-51系列单片机中的CPU由运算器ALU、控制器CU和寄存器(注意:内部RAM还有通用工作寄存器R0~R7)等功能部件组成。其中,运算器以算术逻辑单元ALU为核心,含累加器A(或称ACC)、暂存器TMP、B寄存器、堆栈指针寄存器SP、程序计数器PC、程序状态字寄存器PSW、数据指针寄存器DPTR等部件;控制器含指令寄存器IR、指令译码器ID、定时及控制电路PLA等部件,能根据不同的指令产生相应的操作时序和控制信号。为了更好地分析问题,还可以将MCS-51单片机的结构用图2-3所示的逻辑图表示。
图2-3 MCS-51单片机的逻辑图
1.中央处理器
中央处理器(CPU)是由运算器(ALU)和控制器(CU)构成,是单片机最核心的部分。它的主要功能是读入并分析每条指令,根据指令的功能,控制单片机的各功能部件执行指定的操作。
(1)运算器及相关寄存器。运算器以算术逻辑单元(ALU)为核心,包括累加器(A)、寄存器(B)、暂存器1(TMP1)、暂存器2(TMP2)、程序状态字寄存器(PSW)等部件。它的功能是完成算术和逻辑运算、位变量处理和数据传送等操作。
1)算术/逻辑运算单元(ALU)。由加法器和其他逻辑电路如移位电路、控制门电路等组成。它主要用来完成数据的算术和逻辑运算,算术运算包括8位二进制数的加、减、乘、除、加1、减1及BCD加法的十进制调整等,逻辑运算包括8位变量进行逻辑“与”、“或”、“异或”、循环移位、求补、清零等。它还具有数据传送、程序转移以及位处理(布尔操作)等功能。
ALU有2个输入端和2个输出端,其中一端接至累加器A,接收由累加器A送来的一个操作数;另一端接收暂存器TMP中的第二个操作数。参加运算的操作数在ALU中进行规定的操作运算。运算结束后,将结果送至累加器A,同时将操作结果的特征状态送标志寄存器PSW。
2)累加器ACC。累加器(ACC,简称A)是一个特殊的8位寄存器,它的字长和微处理器的字长相同,累加器具有输入/输出和移位功能,由于所有运算的数据都要通过累加器,故累加器是CPU中使用最频繁的寄存器。通过暂存器2与ALU相连,向ALU提供操作数并存放运算结果。微处理器采用累加器结构可以简化某些算术逻辑运算。
3)寄存器B。寄存器B是为ALU进行乘、除法运算而设置的。在乘、除法运算时用来存放一个操作数,也用来存放运算后的一部分结果。若不作乘、除法运算时,还可作为一般的通用寄存器使用。
4)暂存寄存器。暂存寄存器(TMP)是暂时存储数据总线或其他寄存器送来的操作数,作为ALU的数据源,向ALU提供操作数。
5)程序状态字寄存器PSW。程序状态字寄存器(PSW)是一个8位的特殊寄存器,它保存ALU运算结果的特征和处理状态,以供程序查询和判别。PSW中各位状态信息通常是指令执行过程中自动形成的,但也可以由用户根据需要加以改变。PSW中各位的定义如表2-2所示,其中D1位未定义,用×表示。PSW各位的功能如表2-3所示。
表2-2 PSW各位含 义
表2-3 PSW各位功能
①进位标志位CY(也称Cy或C)。如果运算结果的最高位D7有进位(加法时)或有借位(减法时),则CY=1,否则CY=0。
②辅助进位标志位AC。如果运算结果的低4位向高4位有进位(加法时)或有借位(减法时),则AC=1,否则AC=0。
③溢出标志位OV。溢出标志位用做补码运算,主要用在有符号数运算时,运算结果超出范围时,OV=1;否则,OV=0。也就是,若运算结果超过了8位补码所能表示的范围-128~+127,则OV=1。计算机在数据处理过程中,OV置位和清零的依据是:OV=CY⊕CY-1(双高进位法)。
④奇偶标志位P。每执行一条指令,单片机都能根据累加器A中1的个数的奇偶自动将P置1或置0。若1的个数为奇数,则P为1;若1的个数为偶数,则P为0。因此,单片机采用偶校验。
⑤工作寄存器组选择位RS1、RS0。指示当前使用的工作寄存器组。本章后面将详细介绍它们的作用。
⑥用户标志位F0是用户定义的一个状态标志。由用户置位、复位,作为软件标志。
下面通过两个例子来说明两个8位数据加、减运算对AC、CY、OV、P这4个标志位的影响。
【例2-1】 两个8位二进制数相加。
(AC)=1,(CY)=1,(OV)=0,(P)=1。
若把两加数认为是无符号二进制数,则分别表示十进制数201、76,相加后,用CY作进位位,CY=1,结果为1 0001 0101B,对应十进制数277。
若把两加数认为是有符号二进制数,则分别表示十进制数-55、76,相加后,用OV作溢出位,OV=0无溢出,结果正确,结果为0001 0101B,对应十进制数21。
可见,单片机在做加法时,它并不管两加数是有符号数还是无符号数,但它都会按无符号数和有符号数的规则分别产生两个标志CY、OV,那么,程序员就必须清楚,到底是把数作为有符号数还是作为无符号数,然后分别用溢出OV、进位CY两个不同的标志位来处理最终结果。
减法时要注意,单片机会自动利用补码减法变加法的性质来处理,同样,不管是无符号数还是有符号数,计算机都会按规则影响CY、OV,而程序员要根据数的性质来决定是用CY,还是OV。
【例2-2】 两个8位二进制数相减。(www.xing528.com)
(AC)=1,(CY)=0,(OV)=1,(P)=0。
若把两减数认为是无符号二进制数,则分别表示十进制数201、76,相减后,用CY作借位位,CY=0,结果为0 0111 1101B,对应十进制数125。
若把两减数认为是有符号二进制数,则分别表示十进制数-55、76,相减后,用OV作溢出位,OV=1发生溢出,表明结果错误。若要得到正确的结果,必须要通过扩大两个数的位数来解决(如把8位数扩展为16位数)。
(2)控制器及相关寄存器。控制器(CU)是单片机的神经中枢,它是由指令寄存器IR、指令译码器ID、定时及控制逻辑电路PLA以及程序计数器PC、堆栈指针SP、数据指针DPTR等相关寄存器组成。它先以主振频率为基准发出CPU的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来协调单片机内部各功能部件之间的数据传送、数据运算等操作。控制器各功能部件简述如下:
1)指令寄存器(IR)。指令寄存器用于存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码送入指令寄存器,经译码器译码后再由定时与控制电路发出相应的控制信号,完成指令所指定的操作。指令的内容由操作码和地址码两部分构成。其中:操作码送到指令译码器,经其译码后便确定了要执行的操作;指令的地址码送到操作数地址形成电路,以便形成实际的操作数地址。
2)指令译码器(ID)。指令译码器用于分析指令功能,根据操作码产生相应操作的控制信号。例如,8位操作码经指令译码器译码后,可以转换为256种操作控制信号,其中每一种控制信号对应一种特定的操作功能。
3)定时与控制逻辑(PLA)。定时与控制逻辑由时序部件和微操作控制部件构成。用于控制取指令、执行指令、存取操作数或运算结果等操作,向其他部件发出各种微操作控制信号,协调各部件的工作。
4)时序部件。时序部件由时钟系统和脉冲分配器构成。用于产生计算机各部件所需要的定时信号。其中,时钟系统用来产生具有一定频率和宽度的脉冲信号(主脉冲),控制主脉冲信号的启、停;脉冲分配器用来产生计算机各部件所需要的能按一定顺序逐个出现的节拍脉冲的定时信号,以控制和协调计算机各部件有节奏地动作。
5)微操作控制部件。计算机在执行一条指令时,总是把一条指令分成若干基本操作,称为微操作。微操作控制部件根据指令产生计算机各部件所需要的控制信号。这些控制信号是由指令译码器的输出信号、脉冲分配器产生的节拍脉冲以及外部的状态信号等进行组合产生。它按一定的时间顺序发出一系列微操作控制信号,以完成指令所规定的全部操作。
6)程序计数器(PC)。程序计数器PC用于存放CPU下一条要执行的指令地址,是一个16位的专用寄存器,可寻址范围是0000H~FFFFH,共64KB。程序中的每条指令存放在ROM区的某些单元,都有自己的存放地址。CPU要执行哪条指令时,就把该条指令所在单元的地址送到地址总线。在顺序执行程序中,当PC的内容被送到地址总线后,会自动加1,即(PC)←(PC)+1,又指向CPU下一条要执行的指令地址。改变PC的内容,就可以改变程序的流向。CPU总是把PC中的内容作为地址,按该地址从内存中取出指令码或取出含在指令中的操作数。每取完一个字节后,PC的内容自动加1,为取下一个字节做好准备。若遇到转移、子程序调用或中断响应时,PC的内容由指令或中断响应过程自动置入一个新的地址。
7)数据指针(DPTR)。数据指针DPTR是一个16位的专用寄存器,其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。它既可作为一个16位寄存器DPTR来处理,也可作为两个独立的8位寄存器DPH和DPL来处理。DPTR主要用来存放16位地址,作为访问ROM、外部RAM和外部I/O口的地址指针。当对64KB外部数据存储器空间寻址时,作为间址寄存器用。在访问程序存储器时,用作基址寄存器。
8)堆栈指针(SP)。堆栈指针SP是一个8位的专用寄存器,用来存放堆栈栈顶的地址。本章后面将详细介绍堆栈及堆栈指针的概念。
(3)布尔处理机。由于MCS-51单片机主要用于工业测控,它经常需对外部1根线、1个引脚及内部1个位(bit)进行处理。因此,MCS-51单片机不仅是一种8位机,其芯片内部也集成了1位机,也就是说MCS-51单片机也是一种1位机(也称位处理机或布尔处理机)。
布尔处理机(即位处理机)的硬件主要有MCS-51单片机硬件结构中ALU所具有的1位运算功能、内部存储器中的位地址空间以及借用程序状态标志寄存器PSW中的进位标志CY作为位操作“累加器”等;布尔处理机(即位处理机)的软件结构就是MCS-51单片机指令系统中的布尔指令集(17条位操作指令)。这样硬件结构和软件指令就构成了单片机内部完整的布尔处理机。
2.片内存储器
存储器编程结构可分为两种。一种是普林斯顿结构,ROM和RAM安排在同一空间的不同范围(统一编址)。另一种是哈佛结构,ROM和RAM分别在两个独立的空间(分开编址)。MCS-51单片机采用的是哈佛结构,而MCS-96单片机、8086/8088微机采用的是普林斯顿结构,如图2-4所示。
1)ROM的寻址范围:0000 H~FFFFH,片内、片外统一编址。
2)片内RAM的寻址范围:51子系列128B(00 H~7FH)、52子系列256B(00 H~FFH)。片外RAM的寻址范围:0000 H~FFFFH。
图2-4 普林斯顿结构与哈佛结构的示意图
此外,MCS-51系统单片机芯片的内、外RAM分别与单片机芯片的内、外I/O接口统一编址。
3.特殊功能寄存器SFR
51/52子系列单片机内部有21/26个特殊功能寄存器SFR,它们与内部RAM统一编址,离散地分布在80H~FFH的地址单元中。本章后面将详细介绍SFR。
4.并行I/O口
MCS-51系列单片机有4个8位的并行口(P0、P1、P2、P3),每个并行口各有8根I/O口线,可单独操作每个口线。本章后面将详细介绍并行I/O口。
5.串行I/O口
MCS-51单片机提供全双工串行I/O口,可对外与外设进行串行通信,也可用于扩展并行I/O口。本书后面章节将详细介绍串行I/O口。
6.定时/计数器
51/52子系列单片机有2/3个16位的、可编程的定时/计数器T0和T1,用于精确定时或对外部事件进行计数。本书后面章节将详细介绍定时/计数器。
7.中断系统
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。