
1.2.2 MSP430G2553中央处理器
中央处理器(CPU)是单片机的核心,实现了运算器和控制器的功能,其性能直接决定着单片机的处理能力。MSP430G2553单片机的CPU结构与通用单片机基本相同,其CPU具有一个对应用高度透明的16位精简指令集(RISC)架构,主要包括1个16位的算术逻辑运算单元(ALU)、16个寄存器、1个指令单元。所有的操作(程序流指令除外)均作为寄存器操作与用于源操作数的7种寻址模式和用于目的操作数的4种寻址模式一起执行,这使得其运算能力很强,整体功耗却极低。图1-3是MSP430G2553单片机的CPU结构。
1.CPU的特性
MSP430G2553单片机的主要特性如下。
1)具有27条指令和7个寻址模式的RISC。
2)有可使用每个寻址模式的每条指令的正交架构。
3)包括程序计数器、状态寄存器和栈指针的完全寄存器访问。
4)可实现单周期寄存器运行。
5)大尺寸16位寄存器文件,减少了到存储器的取指令。
6)16位地址总线可实现直接访问整个存储器范围上的分支。
7)16位数据总线可实现对字宽自变量的操作。
8)常量发生器提供最多六个立即值并减少了代码尺寸。
9)无须中间寄存器保持的直接存储器到存储器传输。
10)字和字节寻址与指令格式。

图1-3 MSP430G2553单片机的CPU结构
2.寄存器
MSP430G2553单片机CPU集成了16个寄存器:R0~R15,其中R0~R3专门用作程序计数器(PC)、栈指针(SP)、状态寄存器(SR)和常数发生器(CG1和CG2),其余的寄存器R4~R15为通用寄存器。
(1)程序计数器
16位程序计数器指向将被执行的下一条指令。每个指令使用偶数数量的字节(2字节、4字节或6字节),并且PC相应递增。64KB地址空间内的指令访问在字边界上执行,并且PC与偶数地址对齐。可用所有指令和寻址模式对PC寻址。
(2)栈指针
栈指针被CPU用来存储子例程调用和中断的返回地址。它使用先递减、后递增的机制。此外,SP可由软件用所有指令和寻址模式来使用。SP由用户初始化入RAM,并且与偶数地址对齐,如图1-4所示。
例如:


图1-4 栈指针的使用
利用PUSH和POP指令将栈指针SP指向入栈和出栈数据的顺序,如图1-5所示。

图1-5 PUSH SP-POP SP序列
(3)状态寄存器
状态寄存器在程序设计中有着重要意义,它反映了程序执行时控制器的当前状态,用于指示ALU的运算结果状态以及时钟状态等。通过判断状态寄存器的标志位,用户可控制程序的执行流向。
MSP430单片机的状态寄存器有16位,一般常用其前9位,其说明如表1-2所示。
表1-2 状态寄存器位的说明

(4)常数发生器
常数发生器CG1和CG2生成的六个常用常数无须额外的16位代码字。用源寄存器寻址模式(AS)选择常数,硬件自动生成-1、0、1、2、4、8,如表1-3所示。
表1-3 常数发生器

常数发生器的优势在于:
1)无须特殊指令;
2)对于六个常数,无须代码字;
3)无须代码存储器访问来检索常数。
如果六个常数中的一个被用作立即源操作数,则汇编程序自动使用常数发生器。寄存器CG1和CG2在常数模式中使用,不能被显式寻址,它们运行时只能作为数据源寄存器。