1.2.2 单片机CPU的结构

MCS-51单片机内部有一个8位CPU(8位是CPU的字长,指CPU对数据的处理是按一个字节进行的),它像通常的微处理器一样,也是由算术逻辑运算单元ALU、 定时控制部件(即控制器)和各种专用寄存器等组成的。

MCS-51单片机的CPU专用寄存器组包括6个寄存器: 程序计数器PC、 累加器ACC、寄存器B、 程序状态标志寄存器PSW、 堆栈指针SP、 数据指针DPTR。除PC外,其余5个寄存器均为可编程可访问寄存器。在MCS-51单片机中,除PSW外,一般不直接使用这些寄存器,这里只介绍程序计数器PC和程序状态标志寄存器PSW。

1)程序计数器PC(Program Counter)

程序计数器PC是CPU的最基本部件。它是一个独立的计数器,用于存放下一条待执行指令的地址。PC的基本工作过程可以描述为: PC中的数作为指令地址输出给程序存储器,程序存储器按此地址输出指令字节,同时PC本身自动加1,指向下一条指令。PC是一个16位寄存器,其寻址范围是216字节,即64KB。

2)程序状态标志寄存器PSW(Program State Word)

程序状态标志寄存器PSW是一个8位可编程并可按位寻址的专用寄存器,用来存放当前指令执行结果的有关状态信息,其各位定义如图1-4所示。

图1-4 PSW各位信息

(1)Cy(PSW.7)——进位标志。累加器A的最高位有进位或借位时,硬件自动使该位置位(即Cy=1),否则该位清零。在布尔(位运算)处理机中,Cy是各种布尔操作指令的“位累加器”,作用相当于普通CPU中的累加器A,只是Cy为一个一位的累加器。进位标志Cy在程序设计中的助记符是C。

(2)AC(PSW.6)——辅助进位标志。当进行加法或减法操作时,若累加器的D3位向D4位有进位或借位,则硬件自动将其置位,否则该位清零。它主要用于BCD码数运算时的十进制调整。

(3)F0(PSW.5)——用户通用状态标志。用户可对该位置位或清零,也可用软件测试该位的状态以控制程序的流向。

(4)RS1(PSW.4)和RS0(PSW.3)——工作寄存器组选择控制位。MCS-51系列单片机片内RAM的00H~1FH为通用工作寄存器区,共含4组工作寄存器,每组编号均为R0~R7。CPU选择何组工作寄存器,取决于用户通过指令对RS1和RS0的状态设置。各组对应关系如表1-3所示。

表1-3 工作寄存器组的选择

(5)OV(PSW.2)——溢出标志。当带符号数的加法或减法运算结果超出(-128~+127)范围时,说明计算结果已经溢出,此时该位将由硬件自动置位(即OV=1),否则清零。

(6)PSW.1——保留位。也可作为用户自行定义的状态标志位,其用法与PSW.5相同。

(7)P(PSW.0)——奇偶标志位。每个指令周期由硬件按累加器A中置 “1” 位数的奇偶性自动置位或清零。若A中有奇数个 “1”,则P置位,否则清零。奇偶标志对串行通信中的数据传输有重要意义,常用奇偶校验法来检验数据传输的正确性。