1,MSP430F14x的CPU
MSP430系列单片机的CPU采用16位精简指令系统,集成有16位寄存器和常数发生器,能够发挥代码的最高效率。外围模块通过数据、地址和控制总线与CPU相连,CPU可以很方便的通过所有对存储器的指令对外围模块进行控制。
2,MSP430的主要特性:
※RISC指令集,27条内核指令和7种寻址模式;
※寄存器资源丰富;
※寄存器操作为单周期;
※16位地址总线;
※常数发生器;
※直接的存储器到存储器访问;
※位,字和字节操作方式。
3,MSP430单片机内部由一个16位的ALU(算数逻辑单元)、16个寄存器和一个指令控制单元构成。
16个寄存器中有4个为特殊用途,他们分别是:程序寄存器、堆栈指针、状态寄存器和常数发生器。
R4-R15作为通用寄存器,而且都是单周期读取的,操作非常快。它们可以进行算术逻辑运算,也可以作为临时的暂存单元;可以字操作,也可以字节操作。与80C51相比,MSP430没有累加器A,所以,在MSP430中R4-R15都可以作为累加器,也就是去掉了累加器这个单元。
然后ALU算数逻辑单元,首先位宽是16位的,比8位的就大了1倍。然后就是数据总线和地址总线是分开的,加快了指令的执行速度。所以,它的速度要比8051快很多。
其次呢,硅面积比8051小30%,可以使它的功耗更低。并且该款CPU在设计时,就考虑到C语言的问题,可以说是,专门为C语言开发的CPU。可以说,与51相比,做同样的事情,用MSP430可以写更少的代码,用更少的周期。
程序流程通过程序计数器控制,而程序执行的现场状态体现在程序状态字中。
4,程序计数器PC/R0
程序计数器是MSP430 CPU中最核心的寄存器,根据其操作数的多少,其指令长度分别为1、2或3字长。程序计数器指示出下一条即将执行的指令的地址。程序计数器PC的内容总是偶数,指向偶字节地址。程序计数器PC可以像其他寄存器一样用所有指令和所有寻址方式访问,但对程序寄存器的访问必须以字为单位,否则,会清除高位字节。程序计数器PC的变化轨迹决定程序的流程,程序计数器PC的宽度决定了存储器可以直接寻址的范围。MSP430的程序计数器是16位的计数器,最多直接寻址的存储空间高达64KB。
5,堆栈指针
系统堆栈在系统调用子程序或进入中断服务程序时,能够保护程序计数器PC,然后将子程序的入口地址或者中断矢量地址送程序计数器,执行子程序或中断服务程序。子程序或者中断服务程序执行完毕,遇到返回指令时,将堆栈的内容送到程序计数器中,程序流程又返回到原来的地方,继续执行。此外,堆栈可以在函数调用期间保存寄存器变量。局域变量和参数等。
堆栈指针SP总是指向堆栈的顶部。系统在将数据压入堆栈时,总是先将堆栈指针SP的值减2,然后再将数据送到SP所指的RAM单元。将数据从堆栈中弹出正好与压入过程相反,先将数据从SP所指示的内存单元取出,再将SP值加2。
6,状态寄存器SR/R2
状态寄存器记录记录程序执行过程的现场情况,在程序设计中有相当重要的地位。
MSP430的状态寄存器为16位,目前只用到前9位。
状态寄存器各位的含义,见状态寄存器说明表。
分别为:第0位,进位标志;第1位,零标志;第2位,负标志;第3位,中断控制位;第4位,置位CPUOFF;第5位,置位OscOFF;第6位,SCG0置位;第7位,SCG1置位;第8位,溢出标志。
7,常数发生器CG1,CG2/R2,R3
在16位寄存器中R2和R3为常数发生器,经常使用的常数可以用常数发生器产生,而不必占用一个16位字。利用CPU的27条内核指令配合常数发生器可以生成一些简洁高效的模拟指令,这样使CPU变的异常简单。我们来看这张表格,可以看到,常数发生器所用常数的数值由寻址位As来定义。