MSP430内部存储器的类型有:程序存储器FLASH、数据存储器RAM、外围模块寄存器、特殊功能寄存器。典型微型计算机的存储器都是采用冯•诺依曼结构,也称普林斯顿结构,即存放程序指令的存储器——程序存储器和存放数据的存储器——数据存储器采取统一的地址编码结构。程序存储器与数据存储器分开的地址编码结构称为哈佛结构,如MCS-51系列微处理器。MSP430采用冯•诺依曼结构。其安排如图1-1所示,全部寻址空间为64K字节。需要注意的是,虽然MSP430是16位的微处理器,但其寻址空间还是按照字节来计算的。
从0至0xF为特殊功能寄存器。共16个字节,包含中断标志寄存器1(IFG1)、中断标志寄存器2(IFG2)、中断允许寄存器1(IE1)、中断允许寄存器2(IE2)、模块允许寄存器1(ME1)、模块允许寄存器2(ME2)。
从0x10至0x1FF为外围模块寄存器。包含被定时器、AD转换器、对外端口等模块用到的寄存器。
从0x200开始为数据存储器RAM。不同型号中数据存储器的大小不同,但都是从0x200地址开始向高端地址扩展。如MSP430F149的数据存储器容量为2KB,其地址范围即为0x200~0x9FF。
从0x0C00到0x0FFF为BOOT ROOM。其中存储的内容是生产芯片时掩模在芯片内的一段代码,此段代码用来完成
BSL(bootstrap)功能。使芯片的保密熔丝熔断以后,仍然可以通过BSL方式修改芯片内的代码。
从0x1000到0x107F是128个字节的FLASH存储器,称为信息存储器B。此段存储器与高端地址存储代码的FLASH存储器本质上没有任何不同,同样也可以存储代码并执行,只是这一段存储器的长度较小,只有128个字节。主要用来存储一些掉电后仍需保存的数据。由于它是FLASH存储器,因此可以按照字或者字节写入,但必须整段擦除。
从0x1080到0x10FF为信息存储器A。功能与信息存储段B相同。
程序存储器从0xFFFF开始向低端地址扩展,不同型号中程序存储器的容量不同,但都是从0xFFFF开始向下扩展。如MSP430F133的程序存储器容量为8KB,其地址范围即为0xE000~0xFFFF;MSP430F149的容量为60KB,其地址范围为0x1100~0xFFFF。
需要注意的是,在程序存储器容量为60KB的芯片中,程序存储器与信息存储器A、B发生了重合,从地址0xFFFF向低端地址扩展60KB,其地址范围为0x1000~0xFFFF,而信息存储器A和B的地址范围为0x1000~0x10FF。程序存储器是flash存储器,分为若干段进行管理,可以按照字或者字节写入,擦除时无法按照字或者字节擦除,每次至少擦除一段,每段长度为512字节。
0xFFE0~0xFFFF是程序存储器的一部分,共32个字节。MSP430规定用这一段存储器来存储各种中断的中断向量。
由于程序存储器、信息存储器、数据存储器都是统一寻址的,所以,程序在这3种存储器中均可执行。不同的是,程序放在数据存储器中,掉电后就会丢失,并且很容易在执行中被改写,故一般情况不会将程序放在数据存储器中执行。修改程序存储器中的内容必须经过解锁操作才能进行,否则会引起系统复位MSP430的存储结构使得使用C语言编程所得到的代码仍然有很高的执行效率,因此,除非对程序的大小和执行时间有很高的要求,否则都应该选用C语言编写程序。