MSP430单片机的开发及应用
MSP430单片机的开发及应用
2004.9.6开始看,其实以前看过,忘记了。再看!
设计人:陈小忠
西安邮电学院电子信息工程系电子0002班
西安邮电学院63# 710061
2003年7月
西安邮电学院63# 710061 陈小忠 1
MSP430单片机的开发及应用
目录
第一章 概述
第二章 MSP430 F149语言介绍
第一节 开发环境及程序下载 第二节 语言介绍
第三章 MSP430F149 资源的应用介绍及开发
第一节 中断介绍及存储器段介绍 第二节 硬件乘法器 第三节 P口
第四节 定时器及数模转换 第五节 时钟模块
第六节 USART通信模块 第七节 比较器
第八节 模数转换
第四章 MSP430F149开发板的介绍及测试
第一节 模数转换模块 第二节 传感器模块
第三节 外存和实时时钟模块 第四节 485和232模块
第五节 电源管理模块及晶振模块 第六节 PWM波形滤波
西安邮电学院63# 710061 陈小忠 2
MSP430单片机的开发及应用
第一章 概述
MSP430是德州公司新开发的一类具有16位总线的带FLASH 的单片机,由于其性价比和
集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器.具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M 的时钟.由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作,对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化 , MSP430系列将会得到越来越多人的喜爱.通过两过多月的毕业设计,我对MSP430有了初步了解,对内部的硬件资源和自身的汇编语法进行了实验,并开发了一个应用板,并进行了调试.鉴于时间和能力有限,没能对所有的应用一 一实验. 第二章 MSP430 F149
语言介绍
MSP430是德州公司的新产品,有独特的开发环境和自身语言,下面是我在毕业设计中对F149的开发环境熟悉中遇到的一些问题的处理和汇编语言的用法及程序中遇到的问题的体会.
第一节 开发环境及程序下载
1.开发环境:在EW23环境下进行编程,汇编,连接,在C—SPY环境下进行调试,下载是在连接之后,调试之前,通过计算机的串口下载的.关于环境的操作,可以参考有关资料,其中可能遇到的问题及解决方法有:
西安邮电学院63# 710061 陈小忠 3
MSP430单片机的开发及应用
(1) .汇编是对源程序而言的,因此必须打开一个源文件才能汇编,而连接是对一个工程文件而言的,连接是对工程文件的所有源代码(包括多个源文件)和数据的定位,因此连接必须打开一个工程文件才能连接. (2)
连接中必须将库文件的路径改正确,且必须选定C—SPY的驱动方式,即在project中的
options的xlink的include下修改(先选中)xcl的库路径为
$TOOLKIT_DIR$\\icc430\\msp430F149A.xcl ,选择C—SPY 的驱动drive为simulator或FLASH EMULATION TOOL ,当没连接430片子时可以选simulator,当连接430片子时,选 FLASH EMULATION TOOL进行在线下载调试. (3)
由于430支持汇编语言和C语言两种语言,因此可以在一个工程文件 中同时用两种语言,但
建议用汇编语言,因为便于在调试时寻找逻辑和指令的联系及地址的定位正确与否. (4) (5)
在在线的C—SPY 的调试中,单步需要将Control的Reatime前的勾取消才能进行单步测试. 在线调试时,不能将58 管脚(复位/非屏蔽中断) 外部变高,否则,会强制退出调试环境.
2.程序下载原理及脱机工作原理:程序的在线调试是通过JATG口和F149片子的 RST、TCK、 TDI、TDO、TMS引脚按一定的时序串行的传递程序代码和数据的,调试指令的命令传递都是通过这些数据线和控制线传递的,下载时序可参见资料1,其中的地址0FFFEH为复位向量的地址,它是程序遇到非屏蔽中断和程序启动的首要地址,地址中存放的是程序段开始的首地址,因此必须把程序段的首地址标号表示在中断向量中或程序伪指令的开头位置,否则,连接时将会出错,具体的 表示方法在下一节中表示.程序的下载和在线调试的电源是通过计算机在JATG提供的,不须另外给加电源.
脱机工作时,是将F149的电源线上电,此时的复位时序同下载后在线复位的时序一样,只是时钟是通过F149内部时钟DCO提供的,上电后,程序将复位向量0FFFE中的地址装入PC,PC开始从程序段的首地址开始执行.脱机工作启动不需要任何操作,只需上电即可,电压要大于1.8v,一般取3v左右,另外,在脱机工作时,可以给RST端口加一个低电平脉冲以复位从程序开始重新执行.
西安邮电学院63# 710061 陈小忠 4
MSP430单片机的开发及应用
第二节 指令介绍
MSP430有自身 语言,汇编语言也不同于其他类型的单片机,伪指令也是变幻魔测,但又很重
要,下面是我毕业设计的一些尝试、出问题的地方.也可参见资料。
1.“#include” 不能大写。
2.程序段前的伪指令可以套用下列模板,在以后的几章中的程序都采用此模板,只是中间的主程序变化而已:
#include \把库文件包括进来 ,这个库文件是必须的,其他的库文件视需要而定*/
RSEG UDATA0 /*定义数据段一般默认数据段段地址是从0200H开始的也可以自己定义数据段 开始地址,但必须在0200H到09FFH*/
DS 0 /*表示数据段从默认的段开始,偏移地址为0,若为DS N,表示数据段的偏移地址 从N开始,此时的物理地址为(0200+N)H*/
ADINPUT EQU 00200H /*将0200H地址命名为ADINPUT,此后程序中的地址0200H 可以用ADINPUT表示,便于程序的可读性,注意:标号必须顶格写*/
A DW 5H /*定义A字变量的值为5H,此时将会将5H写到数据段的当前偏移地址上,便于后面使用,变量也得顶格写*/
RSEG CSTACK /*定义堆栈段*/
DS 0 /*段偏移值为0H,物理地址为默认开始地址值*/ RSEG CODE /*定义代码段1*/ DS 0 /*代码段1*/
RESET /*标号,表示程序段的开始地址,将被写入复位向量中*/ MOV #SFE(CSTACK),SP /*初始化堆栈指针*/ MOV #(WDTHOLD+WDTPW),&WDTCTL /*停止看门狗定时器*/ …… (程序段的内容)
COMMON INTVEC /*表示中断向量定义*/ /*下面的伪指令都不顶格*/ ORG XXX 1 / *XXX1表示中断向量表中的具体的中断向量1*/ DW YYY1 /*YYY是中断程序入口标号,表示中断程序首地址*/ ORG XXX2 /* XXX2 表示中断向量表中的具体的中断向量2/ DW YYY2 /*YYY2是中断程序入口标号,表示中断程序首地址*/
ORG RESET_VECTOR /*复位向量,每个程序中都必须的,可以放在段开始前的伪指令中*/ DW RESET /*程序开始的地址标号*/ END /*程序结束*/
3.几个规定:所有的标号都要顶格写,所有的变量都要顶格写,所有的伪指令和指令都不能顶格
写,CALL调用子程序是在标号前用“#”,而其他的转移指令中的标号前不用“#”,对外设的寄存器,当程序开始时,许多是复位为零的,如果要置位为1,可以直接将每一位的名称作立即数写入,例如:指令
西安邮电学院63# 710061 陈小忠 5