2.1.2 80C51单片机的CPU
80C51单片机的核心部分是一个8位的高性能CPU。它的作用是读入并分析每条指令,根据各指令的功能控制单片机的各功能部件执行指定的运算或操作。它主要由运算器和控制器两部分构成。
1.运算器
运算器由算术/逻辑运算单元(ALU)、累加器A、寄存器B、暂存寄存器、程序状态字寄存器组成。它完成的任务是实现算术和逻辑运算、位变量处理和数据传送等操作。
(1)算术/逻辑运算单元:可实现8位数据的加、减、乘、除算术运算和与、或、异或、循环、求补等逻辑运算,同时还具有一般微处理器所不具备的位处理功能。
(2)累加器A:用于向ALU提供操作数和存放运算的结果。在运算时将一个操作数经暂存器送至ALU,与另一个来自暂存器的操作数在ALU中进行运算,运算后的结果又送回累加器A。与一般微机类似,80C51单片机在结构上是以累加器A为中心,大部分指令的执行都要通过累加器A进行。但为了提高实时性,80C51单片机的一些指令的操作可以不经过累加器A,如内部RAM单元到寄存器的传送和一些逻辑操作等。
(3)寄存器B:在乘、除运算时用来存放一个操作数,也用来存放运算后的一部分结果。在不进行乘、除运算时,它还可以作为通用的寄存器使用。
(4)暂存寄存器:用来暂时存放数据总线或其他寄存器送来的操作数。它作为算术逻辑单元ALU的数据输入源,向ALU提供操作数。
(5)程序状态字寄存器:是状态标志寄存器,它用来保存ALU运算结果的特征(如结果是否为0,是否有进位等)和处理器的状态。这些特征和状态可以作为控制程序转移的条件,以供程序判别和查询。PSW的各位定义如表2-2所示,其字节地址为D0H。
表2-2 PSW的各位定义
①CY——进位、借位标志,也可写为C。
在执行算术运算和逻辑运算指令时,用于记录最高位的进位或借位。有进位、借位时CY=1,否则CY=0。CY可以被硬件或软件置位或清0,在位处理器中,它是位累加器。
②AC——辅助进位、借位标志。
AC用于表示ACC.3是否向ACC.4进位、借位。当进行加法或减法操作而产生由低4位数(十进制的一个数字)向高4位数进位或借位时,AC将被硬件置位,否则被清0。AC用于十进制调整。
③RS1、RS0——当前工作寄存器组选择控制位。
RS1、RS0=00——0组(00H~07H)
RS1、RS0=01——1组(08H~0FH)
RS1、RS0=10——2组(10 H~17 H)
RS1、RS0=11——3组(18 H~1FH)
④OV——溢出标志。
OV表示ACC在有符号数算术运算中的溢出,即超出了带符号数的有效范围(—128~+127)。有溢出时OV=1,否则OV=0。
⑤F0、F1——用户标志位,由用户自己定义。
⑥P——奇偶标志。
P表示ACC中1的个数的奇偶性。若1的个数为奇数,则P置位,否则清0。
2.控制器
80C51单片机的控制器由程序计数器PC、指令寄存器IR、指令译码器ID、及控制逻辑电路组成。
指令寄存器IR保存当前正在执行的一条指令。执行一条指令时,先要把它从程序存储器取到指令寄存器IR中。指令内容包含操作码和地址码两部分,操作码送往指令译码器ID,并形成相应指令的微操作信号,而地址码送往操作数地址,形成电路,以便形成实际的操作数地址。
程序计数器PC是一个16位寄存器,它总是存放着下一条将要取出指令的16位地址。CPU读取指令时,程序计数器PC内容作为欲读取指令的地址发送给程序存储器,然后CPU读取程序存储器中该地址单元内的指令字节,并将该指令字节送入指令寄存器IR。每当取完一个指令字节后,程序计数器PC的内容自动加1,为取下一个指令字节做好准备。只有在执行转移、子程序调用指令和中断响应时例外,那时程序计数器PC的内容不再加1,而是由指令或中断响应过程自动给程序计数器PC置入新的地址。
单片机开机或复位时,程序计数器PC自动装入地址0000 H,这就保证了单片机开机或复位后,程序从0000H地址开始执行。由于程序计数器PC实质上是作为程序存储器的地址指针,所以也称其为程序指针。程序计数器PC没有地址,是不可寻址的,用户无法用指令直接访问程序计数器PC。
指令译码器ID与控制电路的任务是控制取指令、执行指令、存取操作数或运算结果等操作,向其他部件发出各种微操作控制信号,协调各部件的工作。