首页 理论教育 8051单片机中央处理器设计与实训

8051单片机中央处理器设计与实训

时间:2023-11-16 理论教育 版权反馈
【摘要】:1 单片机内部主要部件单片机内部电路比较复杂,MCS-51系列的8051型号单片机的内部电路根据功能可以分为CPU、RAM、ROM/EPROM、并行接口、串行接口、定时/计数器、中断系统及特殊功能寄存器等8个主要部件。图2-2 MCS-51系列单片机内部结构图2-3 MCS-51系列单片机的CPU基本结构框图2 中央处理器CPU是单片机的核心,它主要由运算器、时序控制逻辑电路(控制器)以及各种寄存器等部件组成。AT89S51单片机增加了一部分可以不经过累加器ACC的传送指令。

8051单片机中央处理器设计与实训

1 单片机内部主要部件

单片机内部电路比较复杂,MCS-51系列的8051型号单片机的内部电路根据功能可以分为CPU、RAM、ROM/EPROM、并行接口、串行接口、定时/计数器、中断系统及特殊功能寄存器(SFR)等8个主要部件。这些部件通过片内的单一总线相连,采用CPU加外围芯片的结构模式,各个功能单元都采用特殊功能寄存器集中控制的方式。其他公司的51系列单片机与8051结构类似,只是根据用户需要增加了特殊的部件,如A-D转换器等。在设计程序过程中,寄存器的使用非常频繁。时钟电路为单片机产生时钟脉冲序列。MCS-51系列单片机芯片的内部有时钟电路,但石英晶体和微调电容需外接,系统常用的晶振频率一般为6 MHz或12 MHz。

978-7-111-54295-7-Chapter02-2.jpg

图2-2 MCS-51系列单片机内部结构

978-7-111-54295-7-Chapter02-3.jpg

图2-3 MCS-51系列单片机的CPU基本结构框图

2 中央处理器(CPU)

CPU是单片机的核心,它主要由运算器、时序控制逻辑电路(控制器)以及各种寄存器等部件组成。主要功能是产生各种控制信号,根据程序中每一条指令的具体功能,控制寄存器和输入/输出端口的数据传送,进行数据的算术运算、逻辑运算以及位操作等处理。MCS-51系列单片机的CPU字长是8位,能处理8位二进制数或代码,也可处理一位二进制数据,具体如图2-3所示。

(1)运算器

运算器主要用来对操作数进行算术、逻辑和位操作运算。主要包括算术逻辑运算单元(ALU)、累加器(ACC)、程序状态字寄存器(PSW)、位处理逻辑电路、通用寄存器B及两个暂存器等。

1)算术逻辑运算单元(Arithmetic Logic Unit,ALU)。ALU由加法器和其他逻辑电路等组成,ALU的功能强,参加运算的两个操作数,一个由A通过暂存器2提供,另外一个由暂存器1提供,运算结果送回ACC,状态送PSW。

2)累加器(Accumulator,ACC/A)。累加器(ACC)是一个8位特殊功能寄存器,简称A,通过暂存器与ALU传送信息,用来存放一个操作数或存放运算的中间结果。书写指令时,ACC通常记作A(特例除外)。累加器是CPU中使用最频繁的一个8位寄存器。AT89S51单片机增加了一部分可以不经过累加器ACC的传送指令。累加器ACC的进位位Cy(位于程序状态字特殊功能寄存器PSW中)是特殊的,因为它同时又是位处理器的位累加器。51系列单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器。累加器有自己的地址,因而可以进行地址操作。

3)程序状态字寄存器(Program Status Word,PSW)。单片机的程序状态字寄存器PSW也是一个8位的特殊功能寄存器,用于存储程序运行过程中的各种状态信息。PSW用来存放指令执行后的有关状态,如计算结果有无进位/借位、溢出等,是一个标志寄存器,其中的各个状态位通常是在指令执行过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。其中有些位的状态是由程序执行结果决定,硬件自动设置的,而有些位的状态则使用软件方法设定。PSW的位状态可以用专门的指令进行测试,也可以用程序读出。一些条件转移程序可以根据PSW特定位的状态,进行程序转移。

PSW位于单片机片内的特殊功能寄存器区,字节地址为D0H。PSW的不同位包含了程序运行状态的不同信息,其中4位保存当前指令执行后的状态,以供程序查询和判断。PSW格式见表2-1。

表2-1 PSW各位标识符定义格式

978-7-111-54295-7-Chapter02-4.jpg

PSW中各个位的功能如下:

①Cy(PSW.7)进/借位标志位(Carry):也可写为C。在执行算术运算和逻辑运算指令时,若有进位/借位,由硬件置1,则Cy=1;否则,Cy=0。在位处理器中,对位操作指令它是位累加器。

②AC(PSW.6)辅助进位标志位:AC(Auxiliary Carry)标志位用于在BCD码运算时进行十进位调整。在进行加减运算中,当低4位向高4位进位或借位时,AC由硬件置1,否则AC位被清0。即在运算时,当D3位向D4位产生进位或借位时,AC=1;否则,AC=0。

③F0(PSW.5)用户使用的标志位:F0(Flag 0)是一个供用户定义的标志位,可用指令来使它置1或清0,也可用指令来测试该标志位,根据测试结果控制程序的流向。

④RS1、RS0(PSW.4、PSW.3)4组工作寄存器区选择控制位1和位0:RS1/RS0这两位用来选择片内RAM区中的4组工作寄存器区中的某一组为当前工作寄存区,RS1、RS0与所选择的4组工作寄存器区的对应关系见表2-2。

表2-2 RS1、RS0(Register Selection)与4组工作寄存器区的对应关系

978-7-111-54295-7-Chapter02-5.jpg(www.xing528.com)

RS1、RS0这两个选择位的状态是由程序设置的,被选中的寄存器组即为当前寄存器组。单片机上电或复位后,RS1/RS0=00,即默认的工作寄存器组是第0组。

⑤OV(PSW.2)溢出标志位:当执行算术指令时,OV(Overflow)用来指示运算结果是否产生溢出。如果结果产生溢出,OV=1;否则,OV=0。

在带符号数的加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128~+127),即产生了溢出,表示A中的数据只是运算结果的一部分;在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中;否则,OV=0,表示乘积只在A中。在除法运算中,OV=1表示除数为0,除法不能进行;否则,OV=0,除数不为0,除法可正常进行。

⑥F1(PSW.1)用户标志位:保留位,未用,与F0类似。

⑦P(PSW.0)奇偶标志位:P(Parity)标志位表示指令执行完时,累加器ACC中“1”的个数是奇数还是偶数。P=1,表示ACC中“1”的个数为奇数;P=0,则表示ACC中“1”的个数为偶数。该标志位对串行接口通信中的数据传输有重要的意义。在串行通信中,常用奇偶检验的方法来检验数据串行传输的可靠性

注意:标志位P并非用于表示累加器A中数的奇偶性。凡是改变累加器A中内容的指令均会影响P标志位。

4)位处理器。单片机能处理布尔操作数,能对位地址空间中的位直接寻址,进行清0、取反等操作,这种功能提供了把逻辑式(随机组合逻辑)直接变为软件的简单明了的方法,不需要过多的数据传送、字节屏蔽和测试分支,就能实现复杂的组合逻辑功能。位处理器硬件上有自己的“累加器”和自己的位寻址RAM、I/O接口空间。

5)其他部件。B寄存器是一个8位寄存器,主要用于乘除运算。用于乘法和除法时,B寄存器提供一个操作数,对于其他指令,B寄存器只用作暂存器使用。在不进行乘、除运算时,可以作为通用的寄存器使用。

暂存器用来存放中间结果,TMP1、TMP2用于暂时存放从数据总线或ACC送来的操作数。

堆栈指针(Stack Pointer,SP)是一个特殊的存储区,用来暂存系统的数据或地址,SP总是指向最新的栈顶位置。由于MCS-51系列单片机的堆栈设在片内RAM中,SP是一个8位寄存器。系统复位后,SP的初值为07H,但堆栈实际上是从08H单元开始的。由于08H~1FH单元分别属于工作寄存器1~3区,20H~2FH是位寻址区,如果程序要用到这些单元,最好把SP值改为2FH或更大的值。一般在片内RAM的30H~7FH单元中设置堆栈。堆栈是为子程序调用和中断操作而设,主要用来保护断点地址和现场状态。

(2)控制器

控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动协调地工作。控制器由程序计数器(PC)、指令寄存器(IR)、指令译码器(ID)、定时控制与条件转移逻辑电路等组成。

各部分功能部件简述如下:

1)程序计数器(Program Counter,PC)。程序计数器是控制器中一个16位的专用寄存器,程序计数器作为最基本的寄存器,它是一个独立的16位计数器,它总是存放着下一个将要执行的指令码所在的地址。用户不能直接使用指令对PC进行读写。当单片机复位时,PC中的内容为0000H,即CPU从程序存储器0000H单元取指令,开始执行程序。程序计数器的计数宽度决定了访问程序存储器的地址范围。由于51系列单片机中的PC位数为16位,寻址范围为64KB(216),所以PC中数据的编码范围为0000H~FFFFH,故可对64KB的程序存储器进行寻址。单片机上电或复位时,PC自动清0,即装入地址0000H,这就保证了程序从0000H地址开始执行。

PC的基本工作过程是:CPU读取指令时,PC内容作为欲读取指令的地址发送给程序存储器,然后程序存储器按此地址输出指令字节,同时PC自动加1,这也是为什么PC被称为程序计数器的原因。由于PC实质上是作为程序寄存器的地址指针,所以也称其为程序指针。PC内容的变化轨迹决定了程序的流程,执行转移程序或子程序或中断子程序调用时,由运行的指令自动将其内容更改成所要转移的目的地址。

2)指令寄存器(Instruction Register,IR):指令寄存器实际上是一个8位寄存器用于暂存待执行的指令,等待译码。

3)暂存器TMP:用于暂存进入运算器之前的数据。

4)指令译码器(Instruction Decoder,ID):指令译码器是对指令寄存器中的指令进行译码,将指令变为执行此指令所需要的电信号。根据译码器的输出信号,再经定时电路定时产生执行该指令所需要的各种控制信号。

5)数据指针(Data Pointer,DPTR):数据指针是一个16位的专用地址指针寄存器,主要用来存放16位地址,用作间址寄存器,访问片外64KB的数据存储器和I/O接口及程序存储器。在系统扩展中,DPTR作为程序存储器和片外数据存储器的地址指针,用来指示要访问的ROM和片外RAM的单元地址。编程时,DPTR既可以按16位寄存器使用,也可以按两个独立的特殊功能寄存器组成,分别为DPH(高8位)和DPL(低8位),占据83H和82H两个地址。

DPTR与PC不同,DPTR有自己的地址,可以进行读写操作,而PC没有地址,不能对它进行读写操作,但可以通过转移、调用、返回编程操作改变其内容,从而实现程序的转移。

6)定时与控制部件:定时与控制部件的功能是根据指令译码器的译码结果,产生实现指令功能所需的各种微操作控制信号,控制、协调各部件的工作,以完成相应指令的执行。

7)其他部件。程序地址寄存器用于存放当前指令的地址,具体数据由程序计数器送入。内部总线包括地址总线、数据总线和控制总线,分别用于传递与它们的名称相对应的信号,内部总线是各部件间进行信息传递的公共通道,信号传递过程由CPU全盘控制,分时操作,不会发生冲突。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈