单片机内部最核心的部分是CPU,它是单片机的大脑和心脏。CPU的主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传送、数据的算术运算、逻辑运算以及位操作处理等。
CPU从功能上可分为控制器和运算器两部分,下面将分别介绍这两部分组成及功能。
1)控制器
如图2.2所示,控制器由程序计数器PC、指令寄存器、指令译码器、定时控制与条件转移逻辑电路等组成。它的功能是对来自存储器中的指令进行译码,通过定时控制电路,在规定的时刻发出各种操作所需的全部内部和外部的控制信号,使各部分协调工作,完成指令所规定的功能。
图2.2 8051单片机内部结构图
(1)程序计数器
程序计数器(Program Counter PC)是一个16位的专用寄存器,用来存放下一条指令的地址。它具有自动加1的功能。当CPU要取指令时,PC的内容传送至地址总线上,从存储器中取出指令后,PC内容便自动加1,指向下一条指令,以保证程序按顺序执行。
(2)指令寄存器
指令寄存器是一个8位的寄存器,用于暂存待执行的指令,等待译码。
(3)指令译码器
指令译码器用来对指令寄存器中的指令进行译码,将指令转变为执行此指令所需要的电信号,根据译码器输出的信号,再经定时控制电路定时产生执行该指令所需要的各种控制信号。
(4)数据指针DPTR
DPTR是一个16位的专用地址指针寄存器,它主要用来存放16位地址,作间接寻址寄存器使用。因为MCS-51单片机可以外接64 KB的数据存储器和I/O端口,对它们的寻址就可使用DPTR来间接寻址。它也可以拆成两个独立的8位寄存器,即DPH(高8位)和DPL(低8位)。
(5)振荡器及定时电路
8051单片机内有振荡电路,只需外接石英晶体和频率微调电容(1个30 PF左右),其频率范围为1.2~12 MHz,该脉冲信号作为8051工作的最基本节拍,即时间的最小单位。8051同其他计算机一样,在基本节拍的控制下协调工作,就像乐队按着指挥的节拍演奏音乐一样。
2)运算器
运算器由算术逻辑运算部件ALU、累加器ACC、暂存器、程序状态寄存器PSW、BCD码运算调整电路等组成。为了提高数据处理和位操作功能,片内增加了一个通用寄存器B和一些专用寄存器以及位处理逻辑电路。
ALU的功能十分强,它不仅可对8位变量进行逻辑“与”、“或”、“异或”、循环、求补和清0等基本操作,还可进行加、减、乘、除等基本运算。ALU具有一般的微机ALU所不具备的功能,即位处理操作功能,它可对位(bit)变量布尔处理,如置位、清0、求补、测试转移及逻辑“与”“或”等操作。由此可见,ALU在算术逻辑运算及控制处理方面的能力是很强的。
累加器ACC是一个8位累加器(简称A),它通过暂存器与ALU相连。它是CPU工作中使用最频繁的寄存器,用来存一个操作数或结果。
寄存器B是为执行乘法和除法操作而设置的,与ACC构成寄存器对AB。而一般情况下可把它当作一个暂存器使用。(www.xing528.com)
程序状态寄存器PSW是一个8个位寄存器,用于存程序运行中的各种状态信息,PSW各位的定义如图2.3所示。
图2.3 PSW各位定义
CY(PSW.7) 进位标志位。在进行加或减运算时,如果操作结果最高位有进位或借位时,CY由硬件置“1”,否则清“0”。在进行位操作时,CY又可以被认为是位累加器,它的作用相当于CPU中的累加器A。
AC(PSW.6) 半进位标志位,也称辅助进行标位。在进行加或减运算时,低四位向高四位产生进位或借位,将由硬件置“1”,否则清“0”。AC位可用于BCD码调整时的判断位。
F0(PSW.5) 用户标志。由用户置位或复位。它可作为用户自定义的一个状态标记。
OV(PSW.2) 溢出标志位。当进行算术运算时,如果产生溢出,则由硬件将OV置“1”,否则清“0”。
当执行有符号数的加法或减法时,D6位有向D7位的进位或借位,即C6Y=1时,而D7位没有向CY位的进位或借位,即C7Y=0时,则OV=1;或C6Y=0,C7Y=1,则OV=1。所以,溢出的逻辑表达式为:
OV=C6Y⊕C7Y
因此,溢出标志位在硬件上可以通过一个“异或”获得。溢出即结果超一个字长所能表示的数据范围。例如有符号数字长为8位,最高位(D7)用于表示正负号,数据有效位为7位,能表示-128~+127的数,若超出此范围即产生溢出。
在MCS-51中,无符号数乘除法运算的结果也会影响标志位。
F1(PSW.1) 用户标志位,同F0。
P(PSW.0) 奇偶标志位。该位始终跟踪累加器A内容的奇偶性。如果有奇数“1”,则P置“1”,否则清“0”。凡是改变累加器A中内容的指令均会影响P标志位。
此标志位对串行通信中的数据传输有重要的意义,在串行通信中常采用奇偶校验的方法来校验数据传输的可靠性。
RS1RS0(PSW.4 PSW.3) 工作寄存器组指针。用于选择CPU当前工作的寄存器组。可由用户用软件来改变RS1RS0的组合,以切换当前选用寄存器组。RS1RS0与寄存器组对应关系见表2.2。
表2.2 工作寄存器地址表
单片机上电或复位后,RS1RS0=00,CPU选中的是第0组的8个单元为当前工作寄存器。根据需要,用户可以利用传送指令或位操作指令来改变其状态,便于程序中保护现场。
以上所述主要介绍8051CPU硬件结构,存储器、定时器、I/O端口、中断结构、串行口的相关内容将在后文中分别介绍。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。