购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 中央处理器结构

中央处理器(CPU)是一个单片机的核心部件,单片机的指令和中央处理器的结构密不可分。在中央处理器中,算术逻辑部件(ALU)、控制器、通用寄存器、专用寄存器和特殊功能寄存器通过总线连接而成为一个有机的结合体。中央处理器(CPU)在单片机运行中负责控制、指挥和调度所有组成单元之间的协调工作,完成核心运算及控制输入/输出功能等操作。

1.4.1 算术逻辑部件(ALU)

算术逻辑部件(ALU)直观上相当于一个功能强大的计算器,是单片机进行算术及逻辑运算的功能部件。8051单片机的算术逻辑部件可以完成如下一些运算:

●加、减、乘、除四则运算;

●与、或、非、异或等逻辑运算;

●执行数据传送、移位、判断和程序转移等功能。

8051单片机的算术逻辑部件由运算器、累加器A、寄存器B、暂存器TMP、程序状态寄存器PSW、堆栈指针SP、数据指针DPTR等组成。单片机的各种运算指令便通过这些寄存器和指针等完成运算。51系列单片机的ALU指令执行速度很快,大部分指令执行时间为1μs,个别指令为4μs,例如乘法指令等。

1.4.2 控制器

控制器扮演了一个管理者的角色,用来统一指挥和控制单片机参与工作的各个部件。8051单片机的控制器包括时钟发生器、定时控制逻辑、指令寄存器、指令译码器、程序计数器PC、程序地址寄存器、数据指针寄存器DPTR和堆栈指针SP等。

控制器最主要的功能是从单片机的程序存储器(ROM)中提取指令,送到指令寄存器,再送入指令译码器进行译码。控制器通过单片机内部的定时和控制电路协调工作,完成指令所规定的各种操作。

1.4.3 通用寄存器

寄存器是直接参与运算的部件。单片机的寄存器包括通用寄存器(即工作寄存器)、专用寄存器和特殊功能寄存器(SFR)。这些寄存器用来存放信息的单元,具有存取速度快、方便等优点。寄存器的数量在一定程度上决定了单片机运算处理能力的强弱,是衡量一个CPU处理能力的重要标志。

51系列单片机具有4组共32个通用寄存器R0~R7,在同一时刻只能有一组通用寄存器参与运算。4个通用寄存器区位于单片机片内RAM的00H~1FH(共32B)空间,每组共有8个8位的寄存器R0~R7。在程序中,可以通过PSW寄存器的RS1和RS2位进行设置。当选择任意一组通用寄存器时,其余三组被屏蔽。

使用通用寄存器可以避免进栈保护操作,减少堆栈深度,节省出入栈指令和时间。由于通用寄存器位于片内RAM区,因此不用的通用寄存器还可作为片内RAM访问,增加了灵活性。

1.4.4 专用寄存器

专用寄存器在运算时只用于特定的功能,是专门为某些功能部件而设计的。8051单片机的专用寄存器包括程序计数器PC、累加器A、寄存器B、程序状态寄存器PSW、堆栈指针SP、数据指针DPTR等。这些专用寄存器经常需要在程序中使用,因此下面将分别介绍这几种寄存器的功能。

1.程序计数器PC

程序计数器PC的作用就相当于一个搬运工,用来不断地将指令搬运过来执行。程序计数器PC由16个触发器构成,是一个16位二进制的程序地址寄存器。程序计数器PC的编码范围为0000H~FFFFH,其寻址范围为64KB。

程序计数器PC专门用来存放下一条需要执行指令的内存地址,能自动加1。在单片机的CPU执行指令时,按照如下的步骤来执行:

(1)根据程序计数器PC中的地址从存储器中取出当前执行的指令码。

(2)将指令码送给控制器分析执行。

(3)随后,程序计数器PC中的地址码自动加1,以便读取下一条指令码。

这样通过循环执行,程序指令将被一条条地执行。

2.累加器A

累加器A是直接参与运算的寄存器,使用得最为频繁,一般的信息传递和交换均需通过累加器A。累加器A是一个8位二进制寄存器,用于提供操作数和存放操作结果。因此,累加器A是运算过程中的暂存寄存器。

3.寄存器B

寄存器B也是一个8位二进制寄存器,由8个触发器组成。寄存器B通常与累加器A配合使用,一般用于乘除法操作指令。寄存器B中可以存放乘数或除数、乘积的高位字节和除法的余数。另外,寄存器B也可作为一般寄存器或中间结果暂存器使用。

4.程序状态寄存器PSW

程序状态寄存器PSW就相当于测量设备,其显示了CPU指令执行后的一些典型的状态。程序状态寄存器PSW是一个8位寄存器,PSW中的各状态位通常是在指令执行过程中自动形成的,用户可以根据需要改变PSW的状态。PSW中的各状态标志位,如图1-12所示。PSW寄存器是我们在程序中需要经常认真考虑的,下面我们由低到高逐位进行讲解:

图1-12 PSW中的状态标志位

●P(D0位):运算结果的奇偶校验标志位。逻辑运算后,如果运算结果中“1”的个数为奇数,则P位自动置“1”;如果运算结果中“1”的个数为偶数,则P位自动置“0”。奇偶校验标志位是在程序执行过程中自动形成的,无须用户干预。

●—(D1位):保留位,没有定义。

●OV(D2位):运算结果溢出标志位。当运算结果数值的绝对值超过允许的最大值时,就会产生溢出。当运算结果数的A7或A6其中的一位产生进位或借位时,OV位自动置“1”,否则置“0”。其逻辑表达式为OV=A 7 ⊕A 6 。溢出标志位是在程序执行过程中自动形成的,无须用户干预。

●RS 1 (D4位)和RS 0 (D3位):通用寄存器选择标志位。用于选择4组工作寄存器的某一组处于工作状态,每个寄存器组由8个8位寄存器(R0~R7)组成。程序中,用户可以通过改变RS 1 和RS 0 ,决定选用哪组通用寄存器。各组通用寄存器的定义及其实际物理地址如表1-2所示。

表1-2 RS 1 、RS 0 与寄存器R0~R7间的对应关系

●F 0 (D5位):用户标志位。用户标志位由用户根据需要通过传送指令设置,可用于决定用户程序的走向。用户标志位不是在指令执行过程中自动形成的。

●AC(D6位):辅助进位标志位。根据指令运算结果的低4位即D3有无向高4位D4进位或借位,来进行设置,因此称为“辅助”进位标志。如果有进位或借位,则置AC为“1”,如果没有进位或借位,则置AC为“0”。有时AC也常称之为半字节进位标志位,常用于BCD码调整。辅助进位标志位是在程序执行过程中自动形成的,无须用户干预。

●C y (D7位):高位进位标志位。如果指令运算结果高位产生进位或借位,则C y 被置为“1”,如果指令运算结果高位没有产生进位或借位,则C y 被置为“0”。它在位处理指令中作为累加器用,所以又称为“布尔累加器”。高位进位标志位是在程序执行过程中自动形成的,无须用户干预。

5.堆栈指针SP

堆栈相当于一个先入后出的存储器。而堆栈指针SP是在片内RAM中开辟的一个存储区域,专门存放堆栈栈顶的地址。堆栈指针SP采用8位增量的寄存器,堆栈深度为0~255个存储单元。当单片机复位之后,堆栈指针SP的初始值为07H,即栈底为08H单元。此时,堆栈指针SP便与工作寄存器区域重叠,必须重新定义SP,在片内RAM中开辟一个合适的堆栈区域。

当数据进栈时,SP自动增1,将数据压入SP所指向的堆栈单元;当数据出栈时,将SP所指向的堆栈单元内的数据推出栈,然后SP自动减1。

注意: 无论何时,SP总是指向栈顶。堆栈按照“先进后出、后进先出”的原则进行数据存取。

6.数据指针DPTR

数据指针DPTR用于数据存储器的操作。DPTR可以用来存放片内ROM的地址,也可以存放片外RAM和片外ROM的地址。

数据指针DPTR由8位寄存器DPH和DPL组合而成,是一个典型的16位寄存器。其中,DPH为数据指针DPTR的高8位,DPL为数据指针DPTR的低8位。数据指针DPTR既可以作为16位数据指针用,也可以分开以8位寄存器(DPH、DPL)单独使用。有些增强型的单片机则具有多个16位的数据指针。

1.4.5 特殊功能寄存器

特殊功能寄存器简言之就是有特殊用途的寄存器,一般来说,单片机的各种片上资源如串口、定时器/计数器等都依靠特殊功能寄存器来控制。其实,特殊功能寄存器的划分界限是模糊的,因为其位于片内RAM存储器寻址区,我们在这里进行介绍,在后面的存储器讲解中也会提到特殊功能寄存器。

标准的8051内部有21个特殊寄存器,某些新的单片机则提供了更多的特殊功能寄存器,因为它们往往提供了更多的片上资源。典型的特殊功能寄存器如表1-3所示。

表1-3 特殊功能寄存器(SFR)

从表1-3中可以看出,特殊功能寄存器往往和单片机的各种功能部件对应,这在后面的程序设计中会经常用到。 HZU+Mu8cS/4oZAg1s2w8Pqt9Vzagp0ul7n2I/DeTu9Oj5nHFJ4uzi2M3zGTCFMxA

点击中间区域
呼出菜单
上一章
目录
下一章
×