打印
[MCU]

MSP430

[复制链接]
3344|50
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaoke231|  楼主 | 2019-11-30 22:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
MSP430 系列采用的是“冯-诺依曼”结构,ROM、RAM 在同一地址空间,使用一组地址数据总线。中央处理单元采用了精简的、高透明的、高效率的正交设计,它包括一个 16 位的ALU(算术逻辑运算单元),16 个寄存器,一个指令控制单元,16 个寄存器中有 4 个为特殊用途,扮演重要角色,分别是:程序计数器、堆栈指针、状态寄存器、常数发生器。程序流程通过程序计数器控制,而程序执行的现场状态体现在程序状态字中。

使用特权

评论回复

相关帖子

沙发
gaoke231|  楼主 | 2019-11-30 22:32 | 只看该作者
MSP430 CPU 中的 16 个寄存器

使用特权

评论回复
板凳
gaoke231|  楼主 | 2019-11-30 22:32 | 只看该作者
程序计数器 PC
MSP430 的指令根据其操作数的多少,其指令长度分别为 1、2 或 3 字长。程序计数器指
示出下一条即将执行的指令的地址。因此程序计数器 PC 的内容总是偶数,指向偶字节地址。
其内容在调试程序时,可以通过寄存器窗口查看。

使用特权

评论回复
地板
gaoke231|  楼主 | 2019-11-30 22:33 | 只看该作者
系统堆栈指针 SP
系统堆栈是在系统调用子程序或进入中断服务程序时,保护程序计数器 PC。而堆栈指针
SP 总是指向堆栈的顶部。系统在进行将数据压入堆栈操作时,总是先将堆栈指针 SP 的值减
2,然后再将数据送到 SP 所指的 RAM 单元。将数据从堆栈中弹出正好相反:先将数据从 SP 所
指示的内存单元取出,再将 SP 的值加 2。堆栈的操作有两种情况:隐式与显示。系统对堆栈
的操作为隐式,主要为自动保存 PC 的数值。在用户程序中也可对 SP 操作。

使用特权

评论回复
5
gaoke231|  楼主 | 2019-11-30 22:37 | 只看该作者
图 2.1(a)表示进行堆栈操作之前的 RAM 情况;图 2.1(b)表示执行 PUSH #8H 操作之后的情况;图 2.1(c)表示执行 POP R15 之后的情况。

使用特权

评论回复
6
gaoke231|  楼主 | 2019-11-30 22:37 | 只看该作者
状态寄存器 SR
状态寄存器记录程序执行过程中的现场情况,在程序设计中有相当重要的地位。MSP430,的状态寄存器为 16 位,目前只用到前 9 位,其结构如下:

使用特权

评论回复
7
gaoke231|  楼主 | 2019-11-30 22:38 | 只看该作者
Bit0 C 进位标志 当运算结果产生进位时置位,否则复位。
Bit1 Z 零标志 当运算结果为 0 时置位,否则复位。
Bit2 N 负标志 当运算结果为负时置位,否则复位。
Bit3 GIE 中断控制位 置位允许中断,复位禁止所有的中断。该位由中断复位,RETI
指令置位,也可以用指令改变。
Bit4 CPUOff CPU 控制位 置位使 CPU 进入关闭模式,此时除了 RAM 内容、端口、寄存器
保持外,CPU 处于停止状态,可用所有允许的中断将 CPU 从此
状态唤醒。
Bit5 OSCOff 晶振控制位 置位使晶体振荡器处于停止状态, CPU 从此状态唤醒只有在 GIE
置位的情况下由外部中断或 NMI 唤醒, 要设置 OSCOff=1 必须同
时设置 CPUOff=1。
Bit6 SCG0 此位与位 7 一起控制系统时钟发生器的 4 种活动状态。
Bit7 SCG1 此位与位 6 一起控制系统时钟发生器的 4 种活动状态。

Bit8 V 当算术运算结果超出有符号数范围时置位。

使用特权

评论回复
8
gaoke231|  楼主 | 2019-11-30 22:40 | 只看该作者
常数发生器 CG1 与 CG2
在 16 个寄存器中 R2 与 R3 为常数发生器, 利用 CPU 的 27 条内核指令配合常数发生器可
以生成一些简洁高效的模拟指令。表 2.2 给出了 CG1、CG2 可以产生的常数。

使用特权

评论回复
9
gaoke231|  楼主 | 2019-11-30 22:41 | 只看该作者
通过下面的例子,看看模拟指令怎样利用常数发生器的。
CLR DST ;将 DST 单元清零这不是内核指令,是一条模拟指令,汇编器将 As=00,R3=0,用MOV R3,DST来模拟。

使用特权

评论回复
10
gaoke231|  楼主 | 2019-11-30 22:41 | 只看该作者
通用寄存器
R4-R15 为通用工作寄存器。MSP430 的通用寄存器是 430 活动的大部分场所,可以执行
算术逻辑运算,也可以作为临时的暂存单元。可以字操作,也可以字节操作。比如:
MOV #1234H,R15 执行后 R15 内容为 1234H
MOV.B #23H, R15 执行后 R15 内容为 0023H
ADD.B #34H, R15 执行后 R15 内容为 0057H
MSP430 指令的寻址方式包括立即寻址、索引寻址、符号寻址和绝对寻址。这四种寻址方
式均可用于源操作数,而索引、符号和绝对寻址方式只可用于目的操作数。源操作数和目的
操作数的指令集需占用代码存储器中的1到3个字。

使用特权

评论回复
11
gaoke231|  楼主 | 2019-11-30 22:42 | 只看该作者
MSP430 的存储器组织
MSP430 系列的存储空间采用“冯-诺依曼”结构,ROM、RAM 在同一地址空间,使用一组
地址数据总线。而存储空间的组织又分大模式与小模式,在小模式时,总的寻址空间为 64K;
大模式时, 总的寻址空间为 1MB。小模式时采用线形寻址空间; 大模式时代码可访问 16 个 64KB
的代码段,数据可访问的地址空间为 16 个 64KB 的页,即为分段分页方式。图 2.2 为总的存
储空间示意图。

使用特权

评论回复
12
gaoke231|  楼主 | 2019-11-30 22:43 | 只看该作者
当存储器组织为 64KB 或更少时采用小模式,地址空间为最低的 64KB,而目前的器件都
设计成小模式,最大的存储空间组织为 60KB。在小模式中,所有的程序存储器、数据存储器、
I/O 口、其它外围模块的控制器等等都安排在 64KB 空间中。现在我们只讨论 64K 存储空间的
使用情况。
由于采用“冯-诺依曼”结构,ROM、RAM 在同一地址空间,从 0000H 到 0FFFFH 这一段范围
内从低到高分别是:特殊功能寄存器、外围模块、数据存储器、程序存储器、中断向量表。根
据具体的不同型号其存储器的具体组织不一样。

使用特权

评论回复
13
gaoke231|  楼主 | 2019-11-30 22:43 | 只看该作者
数据存储器 RAM
MSP430 的数据存储器位于存储器地址空间的 0200H 以上,这些存储器一般用做数据的保
存与堆栈的使用,同时也是数据运算的场所,在特殊场合还可以用做程序存储器使用。可以字
操作、也可以字节操作,通过指令后缀加以区别。但用做程序存储器时只能字操作。字与字节
操作情况参见图

使用特权

评论回复
14
gaoke231|  楼主 | 2019-11-30 22:44 | 只看该作者
在字节操作时,每 8 位为一个操作单位;在字操作时,每两个字节为一个操作对象,而且
对准偶地址操作。比如:
MOV.B #20H,&221H 执行后地址 221H 内容为 20H
MOV.B #324H,&221H 执行后地址 221H 内容为 24H
MOV.W #3234H,&222H 执行后字节地址 222H 内容为 34H,地址 223H 内容为 32H
MOV.W #324H,&221H 执行后地址 221H 内容为 03H,地址 220H 内容为 24H
RAM 空间还可以进行运算,比如:
MOV.B #33H,&220H 执行后地址 220H 内容为 33H
ADD.B #22H,&220H 执行后地址 220H 内容为 55H
MOV.B #11H,&221H 执行后地址 221H 内容为 11H
ADD #1234H,&220H 执行后地址 220H 内容为 89H,执行后地址 221H 内容为 23H
RLA &220H 执行后地址 220H 内容为 12H, 执行后地址 221H 内容为 47H
FLASH 型的器件还有信息存储区,也可以用来做数据 RAM 使用,同时它是 FLASH 型,数据
掉电后不丢失,可以保存重要参数。

使用特权

评论回复
15
gaoke231|  楼主 | 2019-11-30 22:44 | 只看该作者
程序存储器 ROM
程序 ROM 区为 0FFFFH 以下一定数量存储空间,可存放指令代码,可存放数据表格,程序
代码必须偶地址寻址。而程序代码又可分三种情况:中断向量区、用户程序代码、系统引导程
序(个别器件才有,比如 FLASH 型)。
中断向量区用来说明相应中断的中断服务程序首地址。比如某应用程序的中断向量区如图

使用特权

评论回复
16
gaoke231|  楼主 | 2019-11-30 22:46 | 只看该作者
寻址模式
MSP430 有 7 种寻址方式,其中源操作数可用全部的 7 种方式寻址,而目的操作数只有 4
种方式寻址。但都可访问整个地址空间,由 As 与 Ad 模式位的内容确定,祥见表 2.10。对于
任何有效的源与目的操作数的组合都可能构成一条合法的 MSP430 汇编语句。 下面将详细讨论
这 7 种寻址模式。

使用特权

评论回复
17
gaoke231|  楼主 | 2019-11-30 22:46 | 只看该作者
寄存器寻址模式
汇编源程序
MOV Rn , Rm
这种寻址模式的操作数在寄存器中,可以是源操作数、可以是目的操作数、也可以既是
源操作数又是目的操作数。下面的语句都属于寄存器寻址:
MOV R10,R11 ;源与目的操作数均寄存器寻址
MOV #345H,R10 ;目的操作数寄存器寻址
ADD #2298H,R10 ;目的操作数寄存器寻址
MOV R10,&220H ;源操作数寄存器寻址

使用特权

评论回复
18
gaoke231|  楼主 | 2019-11-30 22:47 | 只看该作者
变址寻址模式
汇编源程序
MOV[.B] X ( Rn ) , Y ( Rm )
这种寻址模式的操作数的地址为寄存器内容加上寄存器前的偏移量, 此地址中的数据即
为所寻址的操作数。可以是源操作数、可以是目的操作数、也可以既是源操作数又是目的操
作数。下面的语句都属于变址寻址:
MOV 2 (R10), R11 ;源操作数变址寻址
MOV R11, 4 (R10) ;目的操作数变址寻址
MOV 2 (R10), 3 (R12) ;源与目的操作数都变址寻址
ADD R12, 4 (R12) ;目的操作数变址寻址
ADD @R10, 4 (R12) ;目的操作数变址寻址

使用特权

评论回复
19
gaoke231|  楼主 | 2019-11-30 22:47 | 只看该作者
符号模式
汇编源程序
MOV EDE , TONI
这种寻址模式的操作数的地址为 EDE、TONI。在指令代码中,紧跟操作码的数据为所寻
地址与当前 PC(程序计数器)的差。这种寻址模式可用于源操作数、也可用于目的操作数、
也可以既是源操作数又是目的操作数。下面的语句都属于符号寻址模式:
MOV . B R6, LOOP0 ;目的操作数符号寻址
MOV TAB, R5 ;源操作数符号寻址
ADD TAB, &220H ;源操作数符号寻址
SUB.B TAB, &230H ;源操作数符号寻址

使用特权

评论回复
20
gaoke231|  楼主 | 2019-11-30 22:48 | 只看该作者
绝对寻址模式
汇编源程序
MOV &EDE , &TONI
这种寻址模式中的 EDE、TONI 即为操作数的地址。在指令代码中,紧跟操作码的一个或
两个字就是操作数的地址。这种寻址模式可用于源操作数、也可用于目的操作数、也可以既
是源操作数又是目的操作数。下面的语句都属于绝对寻址模式:
MOV #2345H, &RESETT ;目的操作数绝对寻址
MOV &RES , R15 ; 源操作数绝对寻址
MOV &220H , R15 ; 源操作数绝对寻址
MOV.B R5, &200H ;目的操作数绝对寻址

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

1310

帖子

5

粉丝