历史上的今天
今天是:2025年05月31日(星期六)
2021年05月31日 | MSP430F14x的内部结构(2)
2021-05-31 来源:eefocus
简介:本章主要讲解MSP430F14x的内部结构,主要包括以下内容:
1、MSP430F14x的系统时钟
2、MSP430F14X内部结构概述
3、MSP430F14x的CPU
4、MSP430F14x的硬件乘法器
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来定义。
史海拾趣
|
觉得自己现在脑子越来越不好使,明显的症状就是老忘东西。工作这么多年,要变成脑残了。 具体说起来就是,明天要出差,今天收拾东西。在公司时就明显发现老忘东西,是凯哥主动提醒我装好录音笔,最后对着单子看时才发现一家重要的采访提纲忘了打印 ...… 查看全部问答> |
|
我是大学生我学过模拟电子但实际有很多电路图看不懂是怎么回事???初学者 在这一点上我可能比不上没知识的电工,请问有什么办法或有什么书推荐一下学习学习 [ 本帖最后由 boofeng2002 于 2012-3-31 11:18 编辑 ]… 查看全部问答> |
|
RAM大小是256bitys,起始地址是0X200,结束地址不应该是0X2FF吗?我用IAR把链接文件改到0x300到0x3ff,下了个led灯的运行正常,又改到0x400到0x4ff不能运行,是我计算有问题吗?… 查看全部问答> |
|
小弟刚开始用STM32F103VET6。现在要实现从AD采集模拟量,然后希望通过串口在visual scope上显示实时的波形! 请问:1,串口通讯用什么样的协议?USB转串口是用的 USB转UASRT转换器么? 2,AD采集的模拟量是通过DMA直接通过串口与电脑通讯还是怎样 ...… 查看全部问答> |
|
///////////////24MHZ时钟设置////////////////////////////////////////////////////////////// UCSCTL3 |=SELREF__REFOCLK; __bis_SR_register(SCG0); //disable the FLL control loop &nbs ...… 查看全部问答> |
|
TMS320C5402 DSP开发调试过程中的问题及解决方案 1、 关于开发工具CCS3.3向下载程序后,出现错误提示“Unable to determine default Pin/Port configuration.” 解决方案:该错误提示是由于CCS软件版本的兼容性问题造成的,可以不管,不会对程序下载造成影响。 2、 XDS5 ...… 查看全部问答> |




