Central Processing Unit 中央处理器
    AT89S52单片机的CPU由运算器控制器构成。\
    任务:控制指令的读入、译码和执行。控制单片机各功能部件,保证各部分自动协调工作。

    运算器对操作数进行算数、逻辑和位操作运算。主要包括算术逻辑运算单元ALU、累加器A、位处理器、程序状态寄存器PSW及两个暂存器等。
    算术逻辑运算单元ALU
    Arithmetic&Logic Unit, 可对8位变量进行逻辑与、或、异或以及循环、求补和清0等操作,还可以进行加、减、乘、除等基本运算。ALU还有位操作功能,可对位(bit)变量进行位处理,如置1、清0、求补、测试转移及逻辑与、或等操作。
    累加器A
    Acc, Accumulator, CPU中使用最频繁的一位8位寄存器,是AT89S52单片机的32个特殊功能寄存器之一,位于片内特殊功能寄存器区。作用如下:
    (1)是ALU单元的输入数据源之一,同时又是ALU运算结果的存放单元。
    (2)CPU中的数据传送大多都通过累加器A,故累加器A相当于数据的中转站。为解决累加器结构带来的“瓶颈堵塞”问题,AT89S52单片机有增加了一部分可以不经过累加器A的数据传送指令。
    累加器A的进位位Cy(位于程序状态字寄存器PSW中)是特殊的,因为它同时是位处理器的位累加器。
    程序状态字寄存器PSW
    Program Status Word, 位于片内的特殊功能寄存器区,字节地址为D0H。PSW的各个位包含了程序运行状态的不同信息,其中4位保存当前指令执行后的状态,以供程序查询和判断。
    CPU(ALU、A、PSW、PC) - 图1
    PSW中各个位的功能如下:
    (1)Cy(PSW.7)Carry, 进位标志位,也可以写作C。在执行算术运算和逻辑运算指令时,若最高位有进位或错位,则Cy=1;否则,Cy=0。在位处理器中,它又是位累加器。
    (2)Ac(PSW.6)Auxiliary carry, 辅助进位标志位, Ac标志位用于BCD码运算时进行十进位调整,即在运算时,当D3位向D4位进位或借位时,Ac=1;否则,Ac=0。
    (3)F0(PSW.5)用户使用标志位,可用可用程序使其置1或者清0,用指令来测试该标志位,根据测试结果控制程序的流向。
    (4)PS1、PS0(PSW.4、PSW.3)4组工作寄存器区选择控制位1和位0这两位用来选择片内PAM区中的4组工作寄存器区中的某一组作为当前工作寄存器区,对应关系如下:


    RS1 RS0 所选的4组寄存器
    0 0 0区(片内RAM地址 00H~07H)
    0 1 1区(片内RAM地址 08H~0FH)
    1 0 2区(片内RAM地址 10H~17H)
    1 1 3区(片内RAM地址 18H~1FH)


    (5)OV(PSW.2)溢出标志位,当执行算术指令时,OV用来指示运算结果是否产生溢出。如果产生溢出,OV=1;否则,OV=0。
    (6)(PSW.1) 保留位
    (7)P(PSW.0)奇偶标志位,该标志位表示执行指令后,累加器A中1的个数是奇数还是偶数。P=1表示A中1的个数是奇数。该标志位对串行通信口中数据传输有重要意义,常用奇偶检验法来检验数据串行传输的可靠性。
    控制器
    控制器的主要任务是识别指令,并根据指令的性质控制单片机内各部件,从而保证单片机各部分能自动协调地工作。控制器主要包括程序计数器指令寄存器指令译码器定时控制电路等。其功能是控制指令的读入、译码和执行,从而对单片机的各功能部件进行定时和逻辑控制。
    程序计数器PC
    Program Counter,控制器中最基本的寄存器,是程序存储器的地址指针。PC是一个独立的16位计数器,用户不能直接使用指令对PC进行访问(读/写)。当单片机复位时,PC的内容变为0000H,即CPU从程序存储器0000H单元读取指令,开始执行程序。
    PC的基本过程是:CPU读取指令时,PC内容作为欲读取指令的地址发送给程序存储器,然后CPU读取程序存储器该地址单元内的单元字节,同时PC自动加1,这也是PC被称为程序计数器的原因。PC实际上是程序寄存器的地址指针,称其为程序指针。
    PC内容的变化轨迹决定了程序的流程。由于用户不可以用指令直接访问PC,当顺序执行程序时PC自动加1;执行转移程序或子程序调用或中断子程序调用时,由运行的指令自动将PC中的内容更改成所要转移的目的的地址。
    程序计数器的计数宽度决定了访问程序存储器的地址范围。AT89S52单片机的PC位数为16位,故可对64KB(=216B)的程序存储器进行寻址。