MSP430 CPU是指MSP430F1xx系列采用的16 位CPU,数据总线宽度16位,地址总线宽度16位,寄存器16位。寻址空间216=64KB。
MSP430X CPU(简称CPUX)是指MSP430F2xx/4xx/5xx/6xx系列采用的CPU,数据总线宽度16位,地址总线宽度20位,寄存器20位。寻址空间220=1MB。CPUX的算术逻辑单元(ALU)也可以完成20位的计算。
CPUX向下兼容MSP430 CPU。
MSP430的PC、SP、SR解释
PC:
取完指令后CPU根据该指令的字节数自动增量PC,因此20位的PC(R0)的值总是指向下一条要执行的指令。PC总是指向偶地址(bit0=0)。
SP:
20位的堆栈指针,始终指向偶地址
【作用】:保护现场和恢复现场。
先进后出
堆栈分两种:
(1)向上增长,栈底占用较低地址,栈顶占用较高地址:8051
(2)向下增长,栈底占用较高地址,栈顶占用较低地址:MSP430、AVR
(3)ARM支持两种增长方式的堆栈。
SR:
用作源或目标寄存器的16位状态寄存器(SR,也称为R2)只能用于通过字指令寻址的寄存器模式。 寻址模式的其余组合用于支持常数发生器。
SCG1:系统时钟发生器1该位可用于根据器件系列启用或禁用时钟系统中的功能; 例如,DCO偏置启用或禁用。
SCG0:系统时钟发生器0该位可用于根据器件系列启用或禁用时钟系统中的功能; 例如,FLL(频率锁定环)启用或禁用。
OSCOFF:关闭振荡器。 该位置1时,当LFXT1 CLK不用于MCLK或SMCLK时,它会关闭LFXT1晶体振荡器。
CPUOFF:CPU关闭。 该位置1时,将关闭CPU。
CPUOFF,OSCOFF,SCGO和SCG1位请求系统进入低功耗模式。
【例如】:关闭和打开锁频环(FLL)
__bis_SR_register(SCG0); // Disable the FLL control loop
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
UCSCTL1 = DCORSEL_3; // Set RSELx for DCO = 4.9 MHz
UCSCTL2 = FLLD_1 + 74; // Set DCO Multiplier for 2.45MHz
// (FLL_N + 1) * FLLRef = FdcoCLKDIV
// (74 + 1) * 32768 = 2.45MHz
// Set FLL Div = fDCOCLK/2
__bic_SR_register(SCG0); // Enable the FLL control loop
//其中__bis_SR_register()函数是将SR寄存器中的相应位置1
//__bic_SR_register()函数是将SR寄存器中的相应位置0