中央处理器CPU是单片机的核心,从功能上看,CPU主要由运算部件和控制部件组成。CPU功能可概括为以下三条:
1)产生控制信号;
2)控制数据传送;
3)对输入数据进行算术逻辑运算及位操作。
1.运算部件
运算部件是用来对数据进行算术运算和逻辑操作的执行部件,包括算术逻辑单元ALU(Arithmetic Logic Unit)、累加器ACC(Accumulator)、暂存器、程序状态字寄存器PSW(Program Status Word)、通用寄存器和BCD码运算调整电路等。为了提高数据处理和位操作能力,片内增加了一个通用寄存器区和一些专用寄存器,而且还包含一个布尔处理器,可以执行置位、清零、求补、取反、测试、逻辑与、逻辑或等操作,为单片机的应用提供了极大的便利。
(1)算术逻辑单元ALU
ALU是用于对数据进行算术运算和逻辑操作的执行部件,由加法器和其他逻辑电路(移位电路和判断电路等)组成。在控制信号的作用下,它能完成“加、减、乘、除、比较”等算术运算和“与、或、异或”等逻辑运算以及循环移位操作、位操作等功能。此外,通过对运算结果的判断,还能影响程序状态标志寄存器的有关标志位。
(2)累加器ACC
累加器ACC是一个8位寄存器,指令助记符可简写为“A”,它是CPU工作中最繁忙、最活跃的一个寄存器。CPU的大多数指令,都要通过累加器ACC与其他部件交换信息。
(3)暂存器
暂存器用于暂存进入运算器之前的数据,它不能通过编程访问。设置暂存器的目的是暂时存放某些中间过程所产生的信息,以避免破坏通用寄存器的内容。
(4)布尔(位)处理器
除对字节(Byte)进行操作外,51单片机借用PSW中的CY(进位标志位)可以直接对位(Bit)进行操作,在进行位操作时,CY就类似进行字节操作的ACC用作数据源或存放结果。通过位操作指令可以实现置位、清零、取反以及位逻辑运算等操作。
运算部件中的程序状态字寄存器PSW地位特殊,下面单独介绍。其他专用寄存器则放在存储器结构中逐一介绍。
(5)程序状态字寄存器
程序状态字(PSW)寄存器是一个8位的寄存器,它包含了各种程序状态信息,相当于一个标志寄存器,以供程序查询和判别。PSW的标志见表1-3。
表1-3 PSW的标志
此寄存器各位的含义如下(其中PSW.1未用)。
CY(PSW.7):进位标志。在执行某些算术和逻辑指令时,它可以被硬件或软件置位或清零。CY在布尔处理机中被认为是位累加器,其重要性相当于一般中央处理器中的累加器A。
AC(PSW.6):辅助进位标志。当进行加法或减法操作而产生由低4位数向高4位数进位或借位时,AC将被硬件置位,否则就被清零。AC被用于BCD码调整,详见指令系统中的“DA A”指令。
F0(PSW.5):用户标志位。F0是用户定义的一个状态标记,用软件来使它置位或清零。该标志位状态一经设定,可用软件测试F0,以控制程序的流向。
RS1、RS0(PSW.4、PSW.3):寄存器区选择控制位。可以用软件来置位或清零以确定工作寄存器区。RS1、RS0与寄存器组的对应选择关系见表1-4。
表1-4 工作寄存器组选择
OV(PSW.2):溢出标志。带符号加减运算中,当超出了累加器A所能表示的符号数有效范围(-128~+127)时,即产生溢出,OV=1,表明运算结果错误。如果OV=0,表明运算结果正确。
P(PSW.0):奇偶标志。每个指令周期都由硬件来置位或清零,以表示累加器A中1的位数的奇偶数。若1的位数为奇数,P置1,否则P清零。P标志位对串行通信中的数据传输有重要的意义,在串行通信中常用奇偶校验的办法来检验数据传输的可靠性。在发送端可根据P的值对数据进行奇偶置位或清零。
PSW.1:程序状态字的第1位,该位的含义没有定义,若用户要使用这一位,可直接使用PSW.1的位地址。
PSW寄存器除具有字节地址外,还具有位地址,因此,可以对PSW中的任一位进行操作,这无疑大大提高了指令执行的效率。
2.控制部件
控制部件是用来统一指挥和控制计算机进行工作的部件。其功能是从存储器中逐条获取指令,进行指令译码,并通过定时和控制电路,在规定的时刻发出各种操作所需的全部内部控制信息及CPU外部所需的控制信号,使各部分按照一定的节拍协调工作,完成指令所规定的各种操作。它由指令部件、时序部件和操作控制部件组成。
(1)指令部件
指令部件是一种能对指令进行分析、处理并产生控制信号的逻辑部件,也是控制器的核心。通常,它由程序计数器PC(Program Counter)、指令寄存器IR(Instruction Register)和指令译码器等组成。这三个寄存器用户都不能直接访问。
程序计数器PC用于存放CPU要执行的下一条指令的地址。程序中的每条指令都有自己的存放地址(指令都存放在ROM区的某一单元),CPU要执行某条指令时,就把该条指令的地址码(即PC中的值)送到地址总线,从ROM中读取指令,当PC中的地址码被送上地址总线后,PC会自动指向CPU要执行的下一条指令的地址。执行指令时,CPU按PC的指示地址从ROM中读取指令,所读取指令码送入指令寄存器中,由指令译码器对指令进行译码,并发出相应的控制信号,从而完成指令所指定的操作。
指令寄存器IR是一个8位寄存器,用于暂时存放指令代码,等待译码。
指令译码器用于对送入指令译码器中的指令进行译码。所谓“译码”,就是把指令转变成执行此指令所需要的电信号。当指令送入译码器后,由译码器对该指令进行译码,根据译码器输出的信号,CPU控制电路定时产生执行该指令所需的各种控制信号,使单片机能够正确执行程序所需要的各种操作。
(2)时序部件
时序部件由时钟电路和脉冲分配器组成,用于产生操作控制部件所需的时序信号。产生时序信号的部件称为“脉冲发生器”或“时序系统”,它由一个振荡器和一组计数分频器组成。振荡器是一个脉冲源,输出频率稳定的脉冲,也称为“时钟脉冲”,为CPU提供时钟基准。时钟脉冲经过进一步的计数分频,产生所需的节拍信号或更长时间的机器周期信号。
(3)操作控制部件
操作控制部件可以为指令译码器的输出信号配上节拍电位和节拍脉冲,也可以和外来的控制信号组合,共同形成相应的微操作控制序列信号,以完成规定的操作。