MSP430 系列单片机实用
C 语言程序设计
张 晞 王德银 张 晨 编著
人 民 邮 电 出 版 社
图书在版编目(CIP)数据
MSP430 系列单片机实用 C 语言程序设计/张晞,王德银,张晨编著.
—北京:人民邮电出版社,2005.9
ISBN 7-115-13664-5
Ⅰ.M… Ⅱ.①张…②王…③张… Ⅲ.①单片微型计算机,MSP430
②C 语言-程序设计 Ⅳ.①TP368.1②TP312
中国版本图书馆 CIP 数据核字(2005)第 089732 号
内 容 提 要
本书从应用角度出发,主要介绍 MSP430 的硬件基础部分和 IAR 公司的 MSP430 C 编译器 EW430,并
对 MSP430 中的各功能模块给出了应用实例。这些实例程序按照结构化编写,经作者的封装后,读者在开发
中只需稍加修改即可直接调用。书中还介绍了 MSP430 的几种典型应用,如软件模拟串行口、在线刷新
FLASH、实现中断嵌套等,并为其编写了完整代码,读者完全可以将其直接组合在自己的项目中。书中还讲
解了单片机领域编写程序的规范、程序结构的安排以及如何提高编码效率等实际应用中的问题。随书光盘中
包括了本书的所有程序代码。
MSP430 系列单片机实用 C 语言程序设计
北京市崇文区夕照寺街 14 号
编 著 张 晞 王德银 张 晨
责任编辑 刘映欣
人民邮电出版社出版发行
邮编 100061 电子函件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
北京顺义振华印刷厂印刷
新华书店总店北京发行所经销
开本:787×1092 1/16
印张:17.5
字数:426 千字
印数:1 – 5 000 册
插页:1
2005 年 9 月第 1 版
2005 年 9 月北京第 1 次印刷
ISBN 7-115-13664-5/TP·4784
定价:35.00 元(附光盘)
读者服务热线:(010)67132692 印装质量热线:(010)67129223
前前 言言
以前出版的有关 MSP430 的书籍主要是从 MSP430 内部结构的角度来讲述的,读者可以
从中获得比较全面的相关知识,但这些书的描述往往过于底层,使得读者使用时必须花费相
当多的时间认真推敲各个寄存器或者模块之间的关系。本书所描述的重点与以往的相关书籍
不同,本书并不准备详细地将 MSP430 重新描述一遍,相关的知识可以从 MSP430 的数据手
册或者类似书籍中获得。本书将通过实际应用来讲述如何用 C 语言编写 MSP430 的程序,所
提供的例子涵盖 MSP430 大多数的功能模块,而且都是采用结构化编程方法,使得这些例子
中的代码能够被读者重复利用,或者只需在例子的框架内进行修改,就可以满足需要。
MSP430 的功能非常强大,其内部的寄存器非常多,关系也比较复杂,对于初学者,
往往会有无从下手的感觉。通过学习本书中的例子,初学者能够尽快渡过初学 MSP430
时的瓶颈期。对于已经有经验的读者,本书更像是一本编程的代码库,因为书中的例子都
立足于应用,可以重复利用,能够大大提高工作效率。本书还详细讲述了 IAR 公司的
C 语言开发工具,可以作为 C 语言开发 MSP430 的使用手册。书中所有的例程都在 IAR
公司的 C 编译器 EW430 3.1A 版本下完成,并在北京东方美源公司提供的实验板上使用
JTAG 仿真器调试通过。由于没有详细介绍 MSP430 内部的寄存器,因此,读者阅读本书
的时候,手边最好有相应的 MSP430 芯片手册,以便随时查阅。
本书由张晞、王德银、张晨三人编写而成。张晞,中国矿业大学机电学院副教授,机械
制造及其自动化学科带头人,长期从事单片机的教学及研究工作。王德银,高级工程师,现
任河南平顶山煤业集团五矿矿长,主要从事煤矿机电自动化和安全生产监测系统的研究。张
晨,现任北京东方美源公司研发部主管,多年从事单片机的应用设计工作。本书在成书过程
中得到北京东方美源科技有限公司的大力支持,在此表示感谢。
由于作者水平有限,成书时间仓促,书中必定会存在不妥之处,恳请广大读者批评指正,
以便在以后的版本中及时修正,联系地址:mcu@mcu163.com(作者)或 liuyingxin@ptpress.com.cn
(编辑)。欢迎访问作者的个人网站 http://www.mcu163.com,欢迎与作者进行技术交流。
编 者
2005 年 8 月
目目 录录
第 1 章 MSP430 硬件基础知识........................................................................................................ 1
1.1 概述....................................................................................................................................... 2
1.2 存储器结构........................................................................................................................... 2
1.3 复位....................................................................................................................................... 4
1.4 系统时钟............................................................................................................................... 6
1.5 低功耗模式........................................................................................................................... 8
1.6 中断..................................................................................................................................... 10
1.7 外围模块............................................................................................................................. 16
第 2 章 C 语言基础知识 ............................................................................................................... 17
2.1 标识符与关键字 ................................................................................................................. 18
2.1.1 标识符.......................................................................................................................... 18
2.1.2 关键字.......................................................................................................................... 18
2.2 数据类型............................................................................................................................. 19
2.2.1 基本型.......................................................................................................................... 19
2.2.2 构造型.......................................................................................................................... 20
2.2.3 指针型.......................................................................................................................... 21
2.3 运算符................................................................................................................................. 22
2.4 函数..................................................................................................................................... 26
2.5 数组..................................................................................................................................... 27
2.6 指针..................................................................................................................................... 27
2.7 位运算................................................................................................................................. 29
2.8 存储类型............................................................................................................................. 29
2.8.1 变量.............................................................................................................................. 29
2.8.2 函数.............................................................................................................................. 30
2.9 预处理功能......................................................................................................................... 30
2.9.1 宏定义.......................................................................................................................... 30
2.9.2 条件编译...................................................................................................................... 31
2.9.3 文件包含...................................................................................................................... 31
2.10 程序的基本结构 ............................................................................................................... 32
2.10.1 顺序结构.................................................................................................................... 32
2.10.2 选择结构.................................................................................................................... 32
2.10.3 循环............................................................................................................................ 34
– 1 –
MSP430 系列单片机实用 C 语言程序设计
2.10.4 跳转............................................................................................................................ 35
第 3 章 IAR C 编译器的使用 ......................................................................................................... 37
3.1 概述..................................................................................................................................... 38
3.1.1 特性.............................................................................................................................. 38
3.1.2 软件结构...................................................................................................................... 38
3.1.3 文件类型...................................................................................................................... 39
3.2 开发调试环境..................................................................................................................... 40
3.2.1 创建一个工程.............................................................................................................. 40
3.2.2 编译链接项目.............................................................................................................. 43
3.2.3 项目设置...................................................................................................................... 44
3.2.4 调试.............................................................................................................................. 50
3.3 语言扩展............................................................................................................................. 55
3.3.1 扩展关键字.................................................................................................................. 56
3.3.2 内部函数...................................................................................................................... 57
3.3.3 扩展定义...................................................................................................................... 60
3.4 C 语言与汇编语言混合使用 ............................................................................................. 63
3.4.1 调用内部函数.............................................................................................................. 63
3.4.2 直接嵌入...................................................................................................................... 63
3.4.3 调用汇编模块.............................................................................................................. 64
3.5 编写高质量的代码 ............................................................................................................. 67
3.6 函数库................................................................................................................................. 68
第 4 章 开发工具 .......................................................................................................................... 97
4.1 JTAG 仿真器、编程器....................................................................................................... 98
4.2 BSL 编程器......................................................................................................................... 99
第 5 章 程序设计的规范与结构 ................................................................................................ 101
5.1 程序规范........................................................................................................................... 102
5.2 程序结构........................................................................................................................... 106
5.3 框架程序........................................................................................................................... 109
第 6 章 MSP430 异步串行通信 ................................................................................................... 123
6.1 串行通信简介................................................................................................................... 124
6.2 串行通信软件实现 ........................................................................................................... 125
第 7 章 定时器............................................................................................................................ 137
7.1 16 位定时器...................................................................................................................... 138
7.1.1 定时中断.................................................................................................................... 139
– 2 –
目 录
7.1.2 PWM 输出 ................................................................................................................. 142
7.1.3 捕获脉冲信号周期.................................................................................................... 149
7.1.4 软件模拟异步串行通信 ............................................................................................ 153
7.2 基本定时器....................................................................................................................... 161
第 8 章 FLASH 的读写、擦除与 I/O 端口................................................................................... 167
8.1 FLASH 的读写和擦除 ..................................................................................................... 168
8.2 I/O 端口............................................................................................................................. 174
8.2.1 非行列式键盘............................................................................................................ 175
8.2.2 行列式键盘................................................................................................................ 185
第 9 章 DMA 数据传输与 IIC 总线............................................................................................... 193
9.1 DMA 数据传输................................................................................................................. 194
9.2 IIC 总线............................................................................................................................. 200
第 10 章 FLL+锁频环与液晶屏驱动模块 ................................................................................... 215
10.1 FLL+锁频环.................................................................................................................... 216
10.2 液晶屏驱动模块 ............................................................................................................. 218
第 11 章 AD、DA 转换.................................................................................................................. 233
11.1 ADC12............................................................................................................................. 234
11.2 DAC12............................................................................................................................. 244
第 12 章 比较器 A........................................................................................................................ 251
12.1 斜边 AD 转换 ................................................................................................................. 252
12.2 电阻值测量..................................................................................................................... 260
第 13 章 特殊处理....................................................................................................................... 267
13.1 中断嵌套......................................................................................................................... 268
13.2 程序异常处理 ................................................................................................................. 270
附录 A MSP430 基本电路图
– 3 –
第 1 章 MSP430 硬件基础知识
MSP430 是美国 Texas Instruments(TI)公司于 1996
年开始推向市场的超低功耗微处理器。除了超低功耗这一
特点外,在 MSP430 系列产品中还集成了很多功能模块,
可以应用于各个方面,使得用一片 MSP430 芯片就能完成
以前要用多片芯片组合才能完成的功能,大大地缩小了产
品的体积,并且降低了成本。因此,MSP430 系列一经推
出,就受到了业内人士的欢迎。迄今为止,MSP430 已经
广泛应用于各个领域,尤其是便携式仪器仪表、监测、医
疗器械以及汽车电子等领域。
本章将对 MSP430 的基础特性进行简明扼要地介绍,外
围模块的具体操作则完全略过。对基础特性的了解是操作任
何一种微处理器所必备的,仔细阅读本章内容可为学习全书
打下良好的基础。
1
MSP430 系列单片机实用 C 语言程序设计
11..11 概概 述述
当前市场上存在很多种微处理器,每种微处理器都各有其特色。针对不同的应用选择合
适的微处理器非常重要。MSP430 的主要特点为:
(1)超低功耗 拥有 5 种低功耗模式,以适应不同的需要。CPU 从低功耗模式被唤醒,
这个过程最多只需要 6μs,因此,在某些需要迅速作出反应的应用中,CPU 能够及时退出低
功耗模式,进入工作模式。
(2)灵活的时钟使用方式 除了片内集成一个晶体振荡器外,还可外接 1~2 个晶体振
荡器。不同的内部功能模块可根据需要使用不同的晶体振荡器,在不需要时可以通过设置寄
存器将其关闭,以降低功耗。
(3)高速的运算能力 16 位 RISC 架构,125ns 指令周期。
(4)丰富的功能模块 集成了大量的功能模块,这些功能模块包括:
多通道 10~14 位 AD 转换器
双路 12 位 DA 转换器
比较器
液晶驱动器
电源电压检测
串行口 USART(UART/SPI)
硬件乘法器
看门狗定时器和多个 16 位、8 位定时器(可进行捕获、比较、PWM 输出)
DMA 控制器
FLASH 存储器。它可以在运行过程中由程序控制写操作和段的擦除(In system
programmable),不需要额外的高电压。
(5)廉价专业的开发工具 MSP430 的芯片上包括 JTAG 接口,因此在仿真调试程序时,
通过一个廉价的 JTAG 接口转换器就可以完成以往用昂贵的仿真器才能完成的功能,如设置
断点、单步执行程序、读写寄存器等。
(6)灵活快速的编程方式 可通过 JTAG 和 BSL 两种方式向 CPU 内装载程序。
(7)高保密性 只需按照特定的方式将 MSP430 内部的熔丝熔断,JTAG 口便被物理性
地阻断。BSL 方式所需要的密码长达 256 位,排列组合出来的密码量为 2 的 256 次幂,如此
巨大的数量被破解的可能性微乎其微。
(8)低电源电压范围 1.8~3.6V。
11..22 存存储储器器结结构构
MSP430 内部存储器的类型有:程序存储器 FLASH、数据存储器 RAM、外围模块寄存
– 2 –