51系列单片机开发宝典
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 中央处理器

中央处理器(CPU)是整个单片机的核心部件。51系列单片机是8位数据宽度的处理器,能处理8位二进制数据或代码。CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入/输出功能等操作。AT89S52的CPU与8051的CPU完全兼容。

中央处理器是由运算器、定时控制部件和寄存器通过总线连接而成的一个整体。

2.3.1 算术逻辑运算部件

AT89S52单片机的算术逻辑运算部件(ALU)包括运算器、累加器A、寄存器B、暂存器TMP、程序状态寄存器PSW、堆栈指针SP、数据指针DPTR等。

算术逻辑运算部件可以进行加、减、乘、除四则运算,也可以进行与、或、非、异或等逻辑运算,还可以执行数据传送、移位、判断和程序转移等功能。

51系列单片机的ALU提供了丰富的指令系统和极快的指令执行速度,大部分指令执行时间为1μs,乘法指令为4μs。AT89S52的ALU与8051的ALU完全兼容,其位处理功能非常强,这对“面向控制”特别有用,指令功能极为丰富,8位并行处理能力极强。

2.3.2 控制器

控制器包括时钟发生器、定时控制逻辑、指令寄存器、指令译码器、程序计数器PC、程序地址寄存器、数据指针寄存器DPTR和堆栈指针SP等。

控制器是用来统一指挥和控制计算机进行工作的部件。它的功能是从程序存储器中提取指令,送到指令寄存器,再送入指令译码器进行译码,并通过定时和控制电路,在规定的时刻发出各种操作所需要的全部内部控制信息及CPU外部所需要的控制信号,如ALE、、RD和WR等,使各部分协调工作,完成指令所规定的各种操作。

2.3.3 通用寄存器

寄存器是用来存放信息的单元,其优点是存取速度快、方便,寄存器的数量是衡量一台计算机处理能力的重要标志。

51系列单片机的寄存器可分为工作寄存器(即通用寄存器)、专用寄存器和特殊功能寄存器(SFR)。特殊功能寄存器专为对应功能服务,在“数据存储器”一节将详细介绍。本节主要介绍通用工作寄存器R0~R7。

片内RAM的00H~1FH(共32B)空间,开辟了4个工作寄存器区,每组共有8个8位的寄存器R0~R7,通过对PSW的RS1和RS2进行设置,选择任意一组使用,其余3组被屏蔽。其优点是,避免进栈保护,减少堆栈深度,节省出入栈指令和时间。不用的工作寄存器可作为片内RAM访问。

2.3.4 专用寄存器

专用寄存器包括程序计数器(PC)、累加器A、寄存器B、程序状态寄存器(PSW)、堆栈指针(SP)、数据指针(DPTR)等,下面分别介绍这几种寄存器的功能。

1.程序计数器(PC)

程序计数器(PC)是一个16位二进制的程序地址寄存器,专门用来存放下一条需要执行指令的内存地址,能自动加1。

CPU执行指令时,根据程序计数器(PC)中的地址从存储器中取出当前执行的指令码,将其送给控制器分析执行,随后程序计数器(PC)中的地址码自动加1,以便取下一条指令码。这样一次次加1,指令就被一条条执行。

8051的程序计数器(PC)是由16个触发器构成的,其编码范围为0000H~FFFFH,其寻址范围为64KB。

2.累加器A

累加器A(或者ACC)是运算过程中的暂存寄存器,是一个8位二进制寄存器,用于提供操作数和存放操作结果。累加器A通过内部总线直接与ALU相连,一般的信息传递和交换均需通过累加器A。

3.寄存器B

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

4.程序状态寄存器(PSW)

程序状态寄存器(PSW)是一个8位寄存器,用于存放指令执行后的有关状态,为后面的指令执行提供状态条件。PSW中的各状态位通常是在指令执行过程中自动形成的,用户可以根据需要改变PSW的状态。PSW中的各状态标志位如图2.4所示。

图2.4 PSW中的状态标志位

PSW中的各状态标志位说明如下。

◆ Cy:高位进位标志位。如果指令运算结果高位产生进位或借位,则Cy被置为“1”,否则为“0”。它在位处理指令中作为累加器用,所以又称为“布尔累加器”。

◆ AC:辅助进位标志位。根据指令运算结果的低4位即D3有无向高4位D4进位或借位,来进行置位。如果有进位或借位,则置AC为“1”,否则为“0”。AC也常被称为半字节进位标志位,常用于BCD码调整。

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

◆ RS1 和RS0:工作寄存器选择标志位。用于选择内部RAM的4组工作寄存器的某组置于前台,每个寄存器由8个8位寄存器(R0~R7)组成。通过改变RS1和RS0,可以决定通用寄存器的实际物理地址。这两者之间的关系如表2.1所示。

表2.1 RS1、RS0与寄存器R0~R7间对应关系

◆ OV:溢出标志位。当运算结果数值的绝对值超过允许的最大值时,就会产生溢出。由机器在程序执行过程中自动形成,当运算结果数的A7或A6其中的一位产生进位或借位时,OV位自动置“1”,否则置“0”。其逻辑表达式为OV=A7⊕A6

◆ —:保留位,无定义,用户不能使用。

◆ P :奇偶校验标志位。逻辑运算后,运算结果中的1的个数为奇数,则P位自动置“1”,否则置“0”。

5.堆栈指针(SP)

堆栈是一组编有地址码的特殊存储单元。堆栈指针(SP)是在片内RAM中开辟一个存储区域,专门存放堆栈栈顶的地址。堆栈指针SP是一个8位增量寄存器,堆栈深度为0~255个存储单元。

数据进栈时,SP自动增1,将数据压入SP所指向的堆栈单元;弹出时,将SP所指向的堆栈单元内的数据推出栈,然后SP自动减1。SP总是指向栈顶,按照“先进后出、后进先出”的原则进行数据存取。

在系统复位后,栈指针SP的初始值为07H,即栈底为08H单元。这样就与工作寄存器区域重叠,必须重新定义SP,在片内RAM中开辟一个合适的堆栈区域。

6.数据指针(DPTR)

数据指针(DPTR)是一个16位寄存器,由8位寄存器DPH和DPL组合而成。其中DPH为DPTR的高8位,DPL为DPTR的低8位。它既可以作为16位数据指针使用,也可以分开以8位寄存器(DPH、DPL)单独使用。DPTR可以用来存放片内ROM的地址,也可以存放片外RAM和片外ROM的地址。

AT89S52设有2个DPTR,分别为DP0(DP0H、DP0L)和DP1(DP1H、DP1L),通过对特殊功能寄存器AUXR1的DPS位进行设置来选择不同的DPTR。当DPS=0,选择DP0;当DPS=1,选择DP1。