首页 > > > MSP430经典讲解.pdf

MSP430经典讲解.pdf

MSP430经典讲解.pdf

上传者: llittle 2014-03-27 评分1 评论0 下载0 收藏10 阅读量640 暂无简介 简介 举报

简介:本文档为《MSP430经典讲解pdf》,可适用于电子通讯领域,主题内容包含作者魏小龙南航MSP选修课试用教材第页前言为什么要做这方面的讲解呢微处理器的使用非常广泛平均全球每人拥有颗微处理器(或单片机)!种类也很多有MSC系符等。

作者 魏小龙 南航 MSP430 选修课 试用教材 第 1 页 前 言 为什么要做这方面的讲解呢,微处理器的使用非常广泛,平均全球每人拥有 5 颗微处理 器(或单片机)!种类也很多,有 MSC51 系列、 MSP430 系列、PIC 系列单片机、intel MCS51、 MOTOROLA、ZOLIG、intel MCS96、EPSON 的、三星的、ARM 系列,MIPS 系列、POWERPC 系列等等。微控制器技术已经渗透到人类生活的方方面面。 TI 公司 MSP430 系列是一个 16 位的功能强大的超低功耗类型微控制器,特别适合于电池 应用的场合;而且该系列将大量的外围模块整合到片内,也特别适合于设计单片系统;同时 MSP430 有丰富的不同类型器件可供选择,给设计者带来很大的灵活性。 本书以实验的模式讲述 MSP430 单片机的各种具体应用。 在每一个具体的内容基础之上,都安排有该部分内容详细的讲解以及实验项目。通过读 者自己亲自动手,来实现对相关知识的掌握。 同时本书布置有很多课外实践内容,通过这些实践环节,可以更加深入理解本书的内容。后 面还安排有综合实践环节。 关于电子设计,希望读者通过 http://jnxq.nuaa.edu.cn 或 HTTP://WWW.OPEN-LAB.NET 进 行广泛的交流。 作者个人网站:www.mcu-china.com 作者 魏小龙 南航 MSP430 选修课 试用教材 第 2 页 第一章 MSP430 单片机(微控制器)基础 2.1 MSP430 程序设计基础。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。4 2.1.1 MSP430 的 16 位 CPU。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5 2.1.2 寻址模式。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。13 2.1.3 指令格式。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。22 2.1.4 汇编语言程序设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。30 2.1.5 C 语言程序设计基础。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。38 2.2 开发环境(实验 1)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。49 2.3.2 头文件 msp430x44x.h 内容。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。60 2.3 存储器组织结构 2.4 中断 2.5 第二章 MSP430 单片机基本实践 2.1 端口原理以及系列实验 2.1.1 端口的认识与体会。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。58 2.1.2 端口初步认识实验(实验 2)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。59 2.1.3 端口相关寄存器以及端口相关知识。。。。。。。。。。。。。。。。。。。。。。。90 2.1.4 端口输出实验 1――跑马灯(实验 3)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。93 2.1.5 端口输出实验 2――继电器(实验 4)。。。。。。。。。。。。。。。。。。。。。。。。。。。94 2.1.6 端口输入实验(实验 3)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。93 2.1.7 端口输入输出实验(实验 3)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。93 2.1.8 端口中断与输出实验(实验 4)。。。。。。。。。。。。。。。。。。。。。。。。。。。94 2.1.9 端口趣味实验――音频输出(实验 5)。。。。。。。。。。。。。。。。。。。。。。。。。95 2.1.10 2.2 液晶显示原理与应用。。。。。。。。。。。。。。。。。。。。。 2.2.1 段码液晶显示器的测试 作者 魏小龙 南航 MSP430 选修课 试用教材 第 3 页 2.2.2 段码液晶显示码表的由来 2.2.3 段码液晶显示器数字的显示实验 2.2.4 段码液晶显示器 ASCII 英文字母的显示实验 2.2.5 在段码液晶显示器上显示英文单词实验 2.3 定时器原理以及系列实验 2.3.1 定时器 TA 控制 LED 灯闪烁实验 2.3.2 定时器 TA、TB 原理 2.3.3 基本定时器 BT 原理 2.3.4 看门狗定时器 WDT 原理 2.3.5 由定时器 TA 设计跑马灯 2.4 12 位模数转换器 ADC12 原理以及系列实验 2.4.1 光强度测量实验 2.4.2 ADC12 原理 2.4.3 电压测量实验 2.5 串口通讯原理与实验 2.5.1 PC 机接收 MSP430 串口发送数据实验 2.5.2 MSP430串口USART原理 2.5.3 PC 机与 MSP430 串口数据对发 键盘原理与应用实践。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。97 2.6 列扫描式式键盘原理与应用(实验 7)。。。。。。。。。。。。。。。。。。。。。。。。。101 2.7 2.7.1 MSP430 液晶显示原理。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。108 2.7.2 液晶简介。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。110 2.7.3 硬件连接。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。111 2.7.4 程序举例(实验 8)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。113 2.8 数码管显示设计与应用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。114 2.8.1 数码管的原理。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。114 2.8.2 使用 74HC373 扩展数码管显示(实验 9)。。。。。。。。。。。。。。。。。。。。。114 作者 魏小龙 南航 MSP430 选修课 试用教材 第 4 页 2.8.3 使用 74HC164 与 74HC138 扩展数码管显示(实验 10)。。。。。。。。。118 2.9 在数码管上显示键值(实验 8)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。120 2.10 在液晶上显示键值(实验 11)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。120 2.11 MSP430 定时器的使用(实验 12)。。。。。。。。。。。。。。。。。。。。。。。。。。。121 2.12 ADC12 原理与应用(实验 13)。。。。。。。。。。。。。。。。。。。。。。。。。。。130 2.13 MSP430 串行异步通讯原理与实现(实验 14)。。。。。。。。。。。。。。。。。。134 步进电机实验 跑马灯实验 语音实验 继电器实验 88LED 显示器实验 第三章 MSP430 单片机外围接口实验 3.1 数码管显示器实验(实验 15)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。140 3.1.1 使用 74HC373 扩展数码管显示(实验 9)。。。。。。。。。。。。。。。。。。。。。114 3.1.2 使用 74HC164 与 74HC138 扩展数码管显示(实验 10)。。。。。。。。。118 3.2 44 扫描键盘实验(实验 16)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。141 3.3 电子琴实验(实验 17)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。142 3.4 语音实验(实验 18)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。143 3.5 88LED 显示器实验(实验 19)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 3.6 红外数字通讯实验(实验 20)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 3.3 直流电动机实验(实验 17)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。142 3.4 直流电动机转速测量实验(实验 18)。。。。。。。。。。。。。。。。。。。。。。。。143 3.4 步进电动机实验(实验 18)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。143 3.5 PWM 类型数模转换实验(实验 19)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 3.6 图形液晶 12864 显示实验(实验 20)。。。。。。。。。。。。。。。。。。144 第四 章 MSP430 微处理器综合实践设计 4.1 语音温度计设计(实验 15)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。140 4.2 简单温度控制设计(实验 16)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。141 4.3 简单计算器的设计(实验 17)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。142 4.4 电子称设计(实验 23)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 4.5 简单数字电压表设计(实验 18)。。。。。。。。。。。。。。。。。。。。。。。。。。143 作者 魏小龙 南航 MSP430 选修课 试用教材 第 5 页 4.6 语音数字电压表设计(实验 18)。。。。。。。。。。。。。。。。。。。。。。。。。。143 4.7 量程自动切换数字电压表设计(实验 18)。。。。。。。。。。。。。。。。。。。。。。143 4.8 电脑密码锁(实验 19)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 4.9 可编程波形发生器设计(实验 20)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 4.10 直流电动机恒速控制(实验 21)。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 4.11 时间控制器的设计(实验 25)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。151 4.12 出租车计价器设计(直流电动机代替车轮)(实验 27)。。。。。。。。。。。。。。162 4.13 电子水表设计(实验 28)。。。。。。。。。。。。。。。。。。。。。。。162 4.14 IIC 总线实践(实验 30)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。162 4.15 基于蓝牙的温度数据采集实践(实验 31)。。。。。。。。。。。。。。。。。。。。。。。。。。。162 4.16 LED 点阵汉字屏显示设计(实验 33)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。162 4.17 多维机械手臂控制设计(实验 22)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 4.18 超声波距离测量实验(实验 24)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 4.19 红外遥控器设计(实验 24)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 4.20 固体数码录音机(实验 24)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。144 4.21 图形液晶菜单设计(实验 32)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。162 4.22 LED 点阵显示抢答器设计(实验 24)。。。。。。。。。。。。。。。。。。。。。144 4.23 复杂多相位交通灯设计(实验 29)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。162 4.24 简易存储示波器的设计(实验 26)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。156 作者 魏小龙 南航 MSP430 选修课 试用教材 第 6 页 第二章 MSP430 单片机基本实践 2.1 MSP430 程序设计基础 MSP430 单片机的程序设计可以使用汇编语言,也可以使用 C 语言,这一部分将讲述这 些内容。如果使用汇编语言,需要了解汇编机器指令;如果使用 C 语言,需要了解 C 语言的 相关知识。无论汇编还是 C 语言,都需要掌握 MSP430 微处理器的结构、原理、接口等才可 以进行软件与硬件的设计。设计的基本过程可以用图 2.1.1 所示的流图来说明。在这一部分不 讲解接口方面的知识。 图 2.1.1 项目设计开发简要流图 MSP430 的内核 CPU 结构是按照精简指令集和高透明的宗旨来设计的,使用的指令有硬件 编写源代码 修改程序 硬件准备 结束 仿真调试 满意? 修改硬件 软件不满意 硬件不满意 满意 作者 魏小龙 南航 MSP430 选修课 试用教材 第 7 页 执行的内核指令(只有 27 条)和基于现有硬件结构的高效率的仿真指令.仿真指令使用内核 指令及芯片内额外配置的常数发生器 CG1、CG2。在讲解指令系统之前首先分析 MSP430 与指令 系统相关的 CPU 结构与存储器系统。 2.1.1 MSP430 的 16 位 CPU MSP430 系列采用的是“冯-诺依曼”结构,ROM、RAM 在同一地址空间,使用一组地址数 据总线。中央处理单元采用了精简的、高透明的、高效率的正交设计,它包括一个 16 位的 ALU(算术逻辑运算单元),16 个寄存器,一个指令控制单元,16 个寄存器中有 4 个为特殊用 途,扮演重要角色,分别是:程序计数器、堆栈指针、状态寄存器、常数发生器。程序流程 通过程序计数器控制,而程序执行的现场状态体现在程序状态字中。在表 2.1 中对 16 个寄存 器作了简要说明。 表 2.1 MSP430 CPU 中的 16 个寄存器 简写 功能 R0 程序计数器 PC,指示下一条将要执行的指令的地址 R1 堆栈指针 SP,指向堆栈的栈顶 R2 状态寄存器 SR/常数发生器 CG1 R3 常数发生器 CG2 R4 工作寄存器 R4 …… …… R15 工作寄存器 R15 1 程序计数器 PC MSP430 的指令根据其操作数的多少,其指令长度分别为 1、2 或 3 字长。程序计数器指 示出下一条即将执行的指令的地址。因此程序计数器 PC 的内容总是偶数,指向偶字节地址。 其内容在调试程序时,可以通过寄存器窗口查看。 2.1.2 系统堆栈指针 SP 系统堆栈是在系统调用子程序或进入中断服务程序时,保护程序计数器 PC。而堆栈指针 SP 总是指向堆栈的顶部。系统在进行将数据压入堆栈操作时,总是先将堆栈指针 SP 的值减 2,然后再将数据送到 SP 所指的 RAM 单元。将数据从堆栈中弹出正好相反:先将数据从 SP 所 指示的内存单元取出,再将 SP 的值加 2。堆栈的操作有两种情况:隐式与显示。系统对堆栈 的操作为隐式,主要为自动保存 PC 的数值。在用户程序中也可对 SP 操作。下面举例说明。 图 2.1(a)表示进行堆栈操作之前的 RAM 情况;图 2.1(b)表示执行 PUSH #8H 操作之后的 情况;图 2.1(c)表示执行 POP R15 之后的情况。在后面将会详细讲解。 地址 操作之前 RAM 内容 PUSH #08H POP R15 300H 211H SP 300H 0008H 300H 008H SP 2FEH 322H 2FEH 322H SP 2FEH 322H 2FCH 433H 2FCH 433H 2FCH 433H (a) (b) (c ) 图 2.1 对堆栈的操作 2 状态寄存器 SR 状态寄存器记录程序执行过程中的现场情况,在程序设计中有相当重要的地位。MSP430 作者 魏小龙 南航 MSP430 选修课 试用教材 第 8 页 的状态寄存器为 16 位,目前只用到前 9 位,其结构如下: 15…9 8 7 6 5 4 3 2 1 0 保留 V SCG1 SCG0 OSCOff CPUOff GIE N Z C 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种活动状态。 SCG1 SCG0 时钟发生器的状态 0 0 SMCLK,ACLK 0 1 SMCLK,ACLK 1 0 ACLK 1 1 ACLK Bit8 V 当算术运算结果超出有符号数范围时置位。 3 常数发生器 CG1 与 CG2 在 16 个寄存器中 R2 与 R3 为常数发生器,利用 CPU 的 27 条内核指令配合常数发生器可 以生成一些简洁高效的模拟指令。表 2.2 给出了 CG1、CG2 可以产生的常数。 表 2.2 CG1、CG2 可以产生的常数 寄存器 As 常数 说明 R2 00 - 寄存器模式 R2 01 (0) 绝对寻址模式 R2 10 00004H +4,位处理 R2 11 00008H +8,位处理 R3 00 0000H 0,字处理 R3 01 00001H +1 R3 10 0002H +2,位处理 R3 11 0FFFFH -1,字处理 通过下面的例子,看看模拟指令怎样利用常数发生器的。 CLR DST ;将 DST 单元清零 这不是内核指令,是一条模拟指令,汇编器将 As=00,R3=0,用 作者 魏小龙 南航 MSP430 选修课 试用教材 第 9 页 MOV R3,DST 来模拟。 4 通用寄存器 R4-R15 为通用工作寄存器。MSP430 的通用寄存器是 430 活动的大部分场所,可以执行 算术逻辑运算,也可以作为临时的暂存单元。可以字操作,也可以字节操作。比如: MOV #1234H,R15 执行后 R15 内容为 1234H MOV.B #23H, R15 执行后 R15 内容为 0023H ADD.B #34H, R15 执行后 R15 内容为 0057H MSP430 指令的寻址方式包括立即寻址、索引寻址、符号寻址和绝对寻址。这四种寻址方 式均可用于源操作数,而索引、符号和绝对寻址方式只可用于目的操作数。源操作数和目的 操作数的指令集需占用代码存储器中的1到3个字。 5 MSP430 的存储器组织 MSP430 系列的存储空间采用“冯-诺依曼”结构,ROM、RAM 在同一地址空间,使用一组 地址数据总线。而存储空间的组织又分大模式与小模式,在小模式时,总的寻址空间为 64K; 大模式时,总的寻址空间为 1MB。小模式时采用线形寻址空间;大模式时代码可访问 16 个 64KB 的代码段,数据可访问的地址空间为 16 个 64KB 的页,即为分段分页方式。图 2.2 为总的存 储空间示意图。 地址 大模式 小模式 数据页 代码段 FFFFFH . . 10000H 0FFFFH 00000H 图 2.2 MSP430 存储器总的组织模式 当存储器组织为 64KB 或更少时采用小模式,地址空间为最低的 64KB,而目前的器件都 设计成小模式,最大的存储空间组织为 60KB。在小模式中,所有的程序存储器、数据存储器、 I/O 口、其它外围模块的控制器等等都安排在 64KB 空间中。现在我们只讨论 64K 存储空间的 使用情况。 由于采用“冯-诺依曼”结构,ROM、RAM 在同一地址空间,从 0000H 到 0FFFFH 这一段范围 内从低到高分别是:特殊功能寄存器、外围模块、数据存储器、程序存储器、中断向量表。根 据具体的不同型号其存储器的具体组织不一样。在表 2.3 中列举了几个常用的 MSP430 器件的 存储器组织结构。 表 2.3 常用 MSP430 器件的存储器组织结构 MSP430F1121 MSP430F449 MSP430F123 MSP430C325 存储器大小 4K 60K 8K 16K 最大的寻址 空 间 为 0FFFFFH 15 15 14 14 13 13 . . . . . 1 1 0 0 空 代码与数据 作者 魏小龙 南航 MSP430 选修课 试用教材 第 10 页 中断向量地址 0FFFFH-0FFE0H 0FFFFH-0FFE0H 0FFFFH-0FFE0H 0FFFFH-0FFE0H 代码存储器地址 0FFFFH-0F000H 01100H-0FFFFH 0E000H-0FFFFH 0C00H-0FFFFH 信息存储器大小 256 256 256 信息存储器地址 0EF00H-0EFFFH 01000H-010FFH 01000H-10FFH 引导存储器大小 1K 1K 1K 引导存储器地址 0800H-0BFFH 0C00H-0FFFH 0C00H-1000H 数据存储器大小 256 2K 256 512 RAM 地址 0200H-02FFH 0200H-09FFH 0200H-02FFH 0200H-03FFH 16 位外围模块地址 0100H-01FFH 0100H-01FFH 0100H-01FFH 0100H-01FFH 8 位外围模块地址 0010H-00FFH 0010H-00FFH 0010H-00FFH 0010H-00FFH 特殊功能寄存器地址 0000H-000FH 0000H-000FH 0000H-000FH 0000H-000FH 表 2.3 列举了几个常用的 MSP430 器件的存储器结构,我们可以看出它们有相同之处、有 不同之处。 相同的地方在于: 所有器件的中断向量放在相同的地方:0FFE0H-0FFFFH; 所有器件的 8 位、16 位外围模块所占用相同范围的存储器地址; 所有器件的特殊功能寄存器所占用相同范围的存储器地址; 数据存储器开始于相同的地址,都是从 0200H 处开始; 代码存储器的最高地址都是 0FFFFH。 不同之处在于: 不同型号器件的代码存储器容量不一样,从它的型号参见第一章的命名规则可看出; 代码存储器的起址不一样,每一种器件的代码存储器的起始地址为: 起始地址 = 10000H - 该器件的代码容量; 信息存储器仅 FLASH 型的有,而且不同的器件地址也不一样,但容量都是 256 字节; 引导存储器仅 FLASH 型的有,而且不同的器件地址也不一样,但容量都是 1K 字节; 数据存储器的结束地址各器件也不一样,其结束地址为: 数据存储器的末地址 = 该器件数据 RAM 容量 + 0200H; 中断向量的具体内容因器件不同而不同; 所有器件的 8 位、16 位外围模块地址范围内的具体内容因器件不同而不同。 从表 2.3 也可看出 MSP430 系列器件在存储空间的全部范围安排了:ROM、RAM、以及外围 模块的寻址地址等等。这些部件通过内部总线与 CPU 相连接,而且有的可以字/字节访问、有 的只能字访问、有的只能字节操作,图 2.3 是片内的数据总线结。下面将予以分别讨论。 作者 魏小龙 南航 MSP430 选修课 试用教材 第 11 页 图 2.3 各种模块与总线的连接 6 数据存储器 RAM MSP430 的数据存储器位于存储器地址空间的 0200H 以上,这些存储器一般用做数据的保 存与堆栈的使用,同时也是数据运算的场所,在特殊场合还可以用做程序存储器使用。可以字 操作、也可以字节操作,通过指令后缀加以区别。但用做程序存储器时只能字操作。字与字节 操作情况参见图 2.4。 字(高字节) 字(低字节) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 10 字节 字节 图 2.4 存储器中的位、字节、字 在字节操作时,每 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 型,数据 掉电后不丢失,可以保存重要参数。 7 程序存储器 ROM 作者 魏小龙 南航 MSP430 选修课 试用教材 第 12 页 程序 ROM 区为 0FFFFH 以下一定数量存储空间,可存放指令代码,可存放数据表格,程序 代码必须偶地址寻址。而程序代码又可分三种情况:中断向量区、用户程序代码、系统引导程 序(个别器件才有,比如 FLASH 型)。 中断向量区用来说明相应中断的中断服务程序首地址。比如某应用程序的中断向量区如图 2.5 所示。 图 2.5 中断向量区 图2.5的内容究竟是什么含义呢,这是调试环境中的一个窗口。其中最左边一列FFFE、FFFC、 FFFA 等等表示地址,中间一列 00E0、0000、48E0、5EE00000 等等表示对应左边地址的相应内 容,最右边 xor.w pc,pc 等等表示汇编指令或相应地址中数据的反汇编指令。这里着重要理 解的是第二栏数据:00E0、0000、0000、48E0、5EE00000 等等,这些数据就是我们所说的中断 向量,它只表示相应中断的中断服务程序首地址。还要注意这些数据的格式,00E0 实质上是 4 位 16 进制数 0E000H,48E0 实质上是 0E048H,因为在地址栏(最左边)是从偶地址开始的,也 就是 00 是 0FFFEH 地址的内容,E0H 是 0FFFFH 地址的内容。而 5EE00000 呢?这是因为汇编器 在反汇编时将这些数据反汇编成一条指令而写在一起的。实质上它们只是 0E05EH 与 0000H 两 个 4 位 16 进制数据。 图 2.5 也同时说明在这个应用程序中,用户用了三个中断,写了三个中断服务程序,它们 的中断服务程序的首地址分别是:E000H—系统复位或非屏蔽中断的中断服务程序的开始地址; E048H—定时器 A 中断;E05E—P1 口中断。 不同的器件,中断向量含义不一样。表 2.4、表 2.5、表 2.6、表 2.7 为不同器件的中断向 量表情况。 表 2.4 MSP430X3XX、MSP430X11XX 中断向量表 中断源 中断标志 系统中断 地址 优先级 上电、外部复位、 看门狗 WDTIFG 复位 0FFFEH 15,最高 NMI / 振荡器故障 NMIFG/OFIFG 非屏蔽 / 可屏蔽 0FFFCH 14 作者 魏小龙 南航 MSP430 选修课 试用教材 第 13 页 I/O 专用 P0IFG.0 可屏蔽 0FFFAH 13 I/O 专用 P0IFG.1 可屏蔽 0FFF8H 12 比较器 A 可屏蔽 0FFF6H 11 看门狗定时器 WDTIFG 可屏蔽 0FFF4H 10 定时器 A CCIFG0 可屏蔽 0FFF2H 9 定时器 A TAIFG 可屏蔽 0FFF0H 8 串口接收 URXIFG 可屏蔽 0FFEEH 7 串口发送 UTXIFG 可屏蔽 0FFECH 6 ADC ADCIFG 可屏蔽 0FFEAH 5 定时器/端口 可屏蔽 0FFE8H 4 P2 P2IFG.0-7 可屏蔽 0FFE6H 3 P1 P1IFG.0-7 可屏蔽 0FFE4H 2 基本定时器 BTIFG 可屏蔽 0FFE2H 1 P0 P0IFG.2-7 可屏蔽 0FFE0H 0,最低 表 2.5 MSP430X13X、MSP430X14X 中断向量表 中断源 中断标志 系统中断 地址 优先级 上电、外部复位、看 门狗、FLASH 存储器 WDTIFG 复位 0FFFEH 15,最高 NMI 、 振荡器故障、 FLASH 访问出错 NMIFG、OFIFG、 ACCVIFG 非屏蔽 / 可屏蔽 0FFFCH 14 定时器 B BCCIFG0 可屏蔽 0FFFAH 13 定时器 B BCCIFG1-6、TBIFG 可屏蔽 0FFF8H 12 比较器 A CMPAIFG 可屏蔽 0FFF6H 11 看门狗定时器 WDTIFG 可屏蔽 0FFF4H 10 串口 0 接收 URXIFG0 可屏蔽 0FFF2H 9 串口 0 发送 UTXIFG0 可屏蔽 0FFF0H 8 ADC ADCIFG 可屏蔽 0FFEEH 7 定时器 A CCIFG0 可屏蔽 0FFECH 6 定时器 A CCIFG1-2、TAIFG 可屏蔽 0FFFAH 5 P1 P1IFG.0-7 可屏蔽 0FFE8H 4 串口 1 接收 URXIFG1 可屏蔽 0FFE6H 3 串口 1 发送 URXIFG0 可屏蔽 0FFE4H 2 P2 P2IFG.0-7 可屏蔽 0FFE2H 1 0FFE0H 0,最低 表 2.6 MSP430F41X 中断向量表 中断源 中断标志 系统中断 地址 优先级 上电、外部复位、看 门狗、FLASH WDTIFG 复位 0FFFEH 15,最高 作者 魏小龙 南航 MSP430 选修课 试用教材 第 14 页 NMI 、振荡器故障、 FLASH 访问出错 NMIFG、OFIFG、 ACCVIFG 非屏蔽 / 可 屏蔽 0FFFCH 14 0FFFAH 13 0FFF8H 12 比较器 A CMPAIFG 可屏蔽 0FFF6H 11 看门狗定时器 WDTIFG 可屏蔽 0FFF4H 10 9 8 7 定时器 A CCIFG0 可屏蔽 0FFF2H 6 定时器 A CCIFG1-2、TAIFG 可屏蔽 0FFFAH 5 P1 P1IFG.0-7 可屏蔽 0FFE4H 4 0FFE6H 3 0FFE4H 2 P2 P2IFG.0-7 可屏蔽 0FFE2H 1 基本定时器 BTIFG 可屏蔽 0FFE2H 0 表 2.7 MSP430X43X、MSP430X44X 中断向量表 中断源 中断标志 系统中断 地址 优先级 上电、外部复位、看 门狗、FLASH WDTIFG 复位 0FFFEH 15,最高 NMI 、振荡器故障、 FLASH 访问出错 NMIFG、OFIFG、 ACCVIFG 非屏蔽 / 可 屏蔽 0FFFCH 14 定时器 B BCCIFG0 可屏蔽 0FFFAH 13 定时器 B BCCIFG1-6、TBIFG 可屏蔽 0FFF8H 12 比较器 A CMPAIFG 可屏蔽 0FFF6H 11 看门狗定时器 WDTIFG 可屏蔽 0FFF4H 10 串口 0 接收 URXIFG0 可屏蔽 0FFF2H 9 串口 0 发送 UTXIFG0 可屏蔽 0FFF0H 8 ADC ADCIFG 可屏蔽 0FFEEH 7 定时器 A CCIFG0 可屏蔽 0FFF2H 6 定时器 A CCIFG1-2、TAIFG 可屏蔽 0FFFAH 5 P1 P1IFG.0-7 可屏蔽 0FFE4H 4 串口 1 接收 URXIFG1 可屏蔽 0FFE6H 3 串口 1 发送 URXIFG0 可屏蔽 0FFE4H 2 P2 P2IFG.0-7 可屏蔽 0FFE2H 1 基本定时器 BTIFG 可屏蔽 0FFE2H 0 注:非屏蔽中断不受中断控制位的控制,发生事件,就可产生中断。 程序 ROM 除了中断向量表而外的其它空间就可随意用做用户程序区。 对于 FLASH 型的器件还有 1K 字节的引导 ROM(自动加载程序),这是一段出厂时已经固化 的程序。为闪速存储器的读、写、擦除等操作提供环境。 作者 魏小龙 南航 MSP430 选修课 试用教材 第 15 页 8 外围模块寄存器地址 从表 2.3 中可以看出 MSP430 的外围模块的寻址被安排在 0010H-01FFH 这一段区域。同时 还分字寻址与字节寻址。 字模块是经全部 16 位总线相连的模块,位于存储空间 100H-1FFH。这部分空间又被分割成 16 个帧,每一帧 8 个字,一般每个字模块占用一到三个帧的地址空间。表 2.8 为 MSP430F449 的字模块的存储空间使用情况。 表 2.8 MSP430F449 字模块的空间分割 地址 说明 地址 说明 1F0H-1FFH 保留 170H-17FH 定时器 A 1E0H-1EFH 保留 160H-16FH 定时器 A 1D0H-1DFH 保留 150H-15FH ADC12 转换 1C0H-1CFH 保留 140H-14FH ADC12 转换 1B0H-1BFH 保留 130H-13FH 硬件乘法器 1A0H-1AFH ADC12 控制与中断 120H-12FH 看门狗、FLASH 控制 190H-19FH 定时器 B 110H-11FH 保留 180H-18FH 定时器 B 100H-10FH 保留 字节模块是经总线的低 8 位相连的模块,只能以字节方式来访问,而用字方式对字节模块 进行操作,读时高字节将产生不预期的结果,写时高字节被忽略。字节模块占用存储空间 0000H-00FFH,一般也 8字分为一组,共 16 组,表 2.9 为 MSP430F449 字节模块地址分配。 表 2.9 MSP430F449 字节模块的地址分配 地址 说明 地址 说明 0F0H-0FFH 保留 070H-7FH 串口 1/串口 0 0E0H-0EFH 保留 60H-6FH 保留 0D0H-0DFH 保留 50H-5FH 比较器 A、系统时钟 0C0H-0CFH 保留 40H-4FH 基本定时器 0B0H-0BFH 保留 30H-3FH 端口 6/端口 5 0A0H-0AFH 液晶模块 20H-2FH 端口 2/端口 1 090H-09FH 液晶模块 10H-1FH 端口 3/端口 4 080H-08FH ADC12 存储控制 00H-0FH SFR 特殊功能寄存器 SFR 处于存储空间的最低位置,位于 0000H-000FH,16 个字节,只能字节 方式访问。目前只用了最前面的 6个字节: 0000H IE1 中断允许 1 0001H IE2 中断允许 2 0002H IFG1 中断标志 1 0003H IFG2 中断标志 2 0004H ME1 模块允许 1 0005H ME2 模块允许 2 其中各位的含义请见附录与后面各部分的讲解。 作者 魏小龙 南航 MSP430 选修课 试用教材 第 16 页 2.1.2 寻址模式 MSP430 有 7 种寻址方式,其中源操作数可用全部的 7 种方式寻址,而目的操作数只有 4 种方式寻址。但都可访问整个地址空间,由 As 与 Ad 模式位的内容确定,祥见表 2.10。对于 任何有效的源与目的操作数的组合都可能构成一条合法的 MSP430 汇编语句。下面将详细讨论 这 7 种寻址模式。 表 2.10 寻址模式 As / Ad 寻址模式 语法 说明 00/0 寄存器寻址 Rn 寄存器内容即为操作数 01/1 变址寻址 X(Rn) (Rn+X)指向操作数,X存于后续字中 01/1 符号寻址 ADDR (PC+X)指向操作数,X 存于后续字中,使用了变址模 式的 X(PC) 01/1 绝对寻址 &ADDR 指令后续字包含绝对地址 10/— 间接寄存器寻址 @ Rn Rn 为指向操作数的指针 11/— 间接增量寻址 @ Rn+ Rn 为指向操作数的指针,取数之后 Rn 再加一 11/— 立即寻址 # N 指令后续字中包含立即数 N,使用了间接增量模式的 @PC+ 1 寄存器寻址模式 汇编源程序 MOV Rn , Rm 这种寻址模式的操作数在寄存器中,可以是源操作数、可以是目的操作数、也可以既是 源操作数又是目的操作数。下面的语句都属于寄存器寻址: MOV R10,R11 ;源与目的操作数均寄存器寻址 MOV #345H,R10 ;目的操作数寄存器寻址 ADD #2298H,R10 ;目的操作数寄存器寻址 MOV R10,&220H ;源操作数寄存器寻址 …… 举例: MOV R10,R11 解释: 将寄存器 R10 内的数据取出,送达 R11 执行前 执行后 ROM 内容 R10 0A023H R10 0A023H MOV R10,R11 R11 0FA0H R11 0A023H PC PCold PC Pcold+2 2 变址寻址模式 汇编源程序 作者 魏小龙 南航 MSP430 选修课 试用教材 第 17 页 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) ;目的操作数变址寻址 …… 举例: MOV 2 (R10),6 (R11) 解释: 将地址:寄存器 R10 内的数加 2内的数取出,送达地址:R11 加 6 图 2.6 为语句执行之前的情况: PC 指针 — 0E008H R10 — 0200H R11 — 0220H RAM 地址 200H 以后的内容见图 也可以看出这条指令占用 ROM 三字长:4A9B 0002 0006 图 2.6 MOV 2 (R10),6 (R11) 执行之前 图 2.7 为语句执行之后的情况: PC 指针 — 0E00EH R10 — 0200H R11 — 0220H 作者 魏小龙 南航 MSP430 选修课 试用教材 第 18 页 RAM 的内容发生了改变:字 226H 内的数据由 0FEDH 改成了 0234H,其余没变。 分析:变址寻址模式的数据地址为寄存器内容加上指令中寄存器前面的偏移量。 这里源与目的都是变址寻址, 源操作数为 : R10+2 地址中的数据:RAM 中地址为 200+2H 的数据 0234H 目的地址为 : R11+6=226H 也就是说指令 MOV 2 (R10),6 (R11)的意图在于将地址 202H 中的数 0234H 送达地 址 0226H,而源操作数不变,寄存器中内容不变。 图 2.7 MOV 2 (R10),6 (R11) 执行之后 3 符号模式 汇编源程序 MOV EDE , TONI 这种寻址模式的操作数的地址为 EDE、TONI。在指令代码中,紧跟操作码的数据为所寻 地址与当前 PC(程序计数器)的差。这种寻址模式可用于源操作数、也可用于目的操作数、 也可以既是源操作数又是目的操作数。下面的语句都属于符号寻址模式: MOV . B R6, LOOP0 ;目的操作数符号寻址 MOV TAB, R5 ;源操作数符号寻址 ADD TAB, &220H ;源操作数符号寻址 SUB.B TAB, &230H ;源操作数符号寻址 …… 举例: MOV TAB , R5 …… TAB DW 13F2H,2213H,3ED4H 解释: 此语句的目的在于将符号 TAB 所表示的数据作为地址,再将这个地址中的数据 送达 R5。指令执行前后分别见图 2.8 与图 2.9 作者 魏小龙 南航 MSP430 选修课 试用教材 第 19 页 分析: 执行之前,R5=43F2H TAB 为一个地址标号,指示在 JMP TTAW 语句之后的地址处 而 TAB 标号所指示的地址处的数据为字 13F2H 该语句的执行就送数 13F2H 到 R5 结果如图 2.9 图 2.8 执行 MOV TAB , R5 指令之前 图 2.9 执行 MOV TAB , R5 指令之后 4 绝对寻址模式 汇编源程序 MOV &EDE , &TONI 这种寻址模式中的 EDE、TONI 即为操作数的地址。在指令代码中,紧跟操作码的一个或 两个字就是操作数的地址。这种寻址模式可用于源操作数、也可用于目的操作数、也可以既 是源操作数又是目的操作数。下面的语句都属于绝对寻址模式: MOV #2345H, &RESETT ;目的操作数绝对寻址 MOV &RES , R1

编辑推荐

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料

资料评价:

/ 135
所需积分:5 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!