为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

mso430f149书籍

2011-10-11 31页 pdf 483KB 17阅读

用户头像

is_224454

暂无简介

举报
mso430f149书籍 MSP430单片机的开发及应用 MSP430单片机的开发及应用 设计人:陈小忠 西安邮电学院电子信息工程系电子 0002班 西安邮电学院 63# 710061 2003...
mso430f149书籍
MSP430单片机的开发及应用 MSP430单片机的开发及应用 设计人:陈小忠 西安邮电学院电子信息工程系电子 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) 在在线的 C—SPY 的调试中,单步需要将 Control的 Reatime前的勾取消才能进行单步测试. (5) 在线调试时,不能将 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 "MSP430x14x.h" /*把库文件包括进来 ,这个库文件是必须的,其他的库文件视需要而定*/ 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 MSP430单片机的开发及应用 MOV #(WDTHOLD+WDTPW),&WDTCTL 就是将WDTCTL寄存器中的WDTHOLD 和WDTPW位置位为高,很容易读程序内容。 4.关于几类定义的区别:EQU、=、SET、VAR、ASSIGN都是给标号变量定义地址值的 伪指令,都可以出现在程序中的任何位置,但用法不一样,= 、EQU 是定义一个永久地址标号 变量,一旦定义,在程序中的这个标号将固定在定义的地址上,不能改动。而 SET、VAR、 ASSIGN是暂时的地址标号变量,可以在程序中改动,一旦定义了一个标号地址,就可以对这个 标号作地址访问,但必须是在数据段。另外,DB 、DW是定义变量在数据段当前的偏移位置, 是作为数据定义的,不是作为地址定义的,例如: AA DB 2H /*此时在数据段的当前位置写入了 2H到存储器,以后用 AA时就是用数据 2H,注:AA顶格写*/可以在以后的程序中看到这些区别。 其他的指令和伪指令都可以在相关资料上查找到,以上是经常出现的问题,一般核心程序 中的指令在语法上都不会有太大的问题,在此不再列举。 第三章 MSP430F149 资源的应用介绍及开发 本章将介绍MSP430F149的片上资源的开发和实验程序,并有详细的时序图、波形图和实 验结果的数据,当然,只能是部分应用程序。 第一节 中断介绍及存储器段介绍 中断在MSP430中得以广泛的应用,它可以快速进入中断程序,之后返回中断前的状态, 其时序为:PC执行程序 中断允许置位 SR中的 GIE置位 EINT(中断开) 中断 到,中断标志位(IFG)置位 从中断向量表中读取中断程序的入口地址,进入中断程序 执行中断程序 中断允许位复位 RETI中断返回 回到原来地址。具体应用将会在应用程 序中的到应用。有关中断源和中断优先级及中断允许位、中断标志位在参考资料 1上有详细介 绍。 MSP430单片机的片上存储器共为 64K,表示为图 : 西安邮电学院 63# 710061 陈小忠 6 MSP430单片机的开发及应用 0H—0FH 010H— 0100H— 0200H—9FFH 0A00H FC0H—10FFH FFE0H-- SFR 0FFH 01FFH RAM区,数 —— 为信息段 FFFFH (特殊功 (8位外 (16位外 据存储区, 0FBFH 1100H—FFDFH 中断向 能寄存器 转模块、 转模块、 可修改访问 专用 为程序代码段 量地址 IE、IFG、I/O端口)TIMER、 FLASH FLASH 型 MEM) ADC) 引导 ROM 对存储器的访问可以用间接寻址,这对于查表处理很方便,在此举一例子: 是对存储段 200H 的 100个数的读取和操作. …… MAIN MOV #0200H,R6 /*从 200H地址开始读出数据到 R5中,可以加许多对 R5(即数据段的内容)进行操 作的 程序*/ MOV #100,R4 /*设取 100个地址单元*/ LOOP1 MOV.W 0(R6),R5 /*间接寻址模式*/ ADD #2,R6 / *是字操作*/ ;....... / *可以加对取出的数的操作*/ MOV.W R5,0(R6) / *操作完后再放回原地址*/ SUB.B #1,R4 /*循环 100次*/ CMP #0,R4 JNZ LOOP1 ……………. 实验结果为:可以从 R5中看到数据存储器从 200H开始的 100个数值,在操作完后,可以在 200H开始存储器中 看到操作后的结果满足要求。 第二节 硬件乘法器 硬件乘法器不集成在 CPU内,是独立于 CPU运行的,运算时只需将两个操作数放进相应的地 址中,就可以直接在结果寄存器中取数据,CPU可以工作在低功耗模式,如果用间接寻址模式,可以超 低工耗的乘法计算大量的表数据,这儿列举一个例子,其他的几种情况类似于此:下面为有符号数(由 第一个乘数决定类型)的乘法程序的部分 …… MOV #138H,R4 /*乘数 2的地址为 138H,这儿用间接寻址方式*/ MOV #-45H,&MPYS /*装第一个有符号乘数的数值入地址,第一个乘数 MPYS决定了*/ MOV #35H,0(R4) /*装第二个有乘数的数值入地址*/ MOV RESLO,R5 /*结果低字送入 R5中取出*/ 西安邮电学院 63# 710061 陈小忠 7 MSP430单片机的开发及应用 MOV RESHI,R6 /*结果高字送入 R6中*/ MOV SUMEXT,R7 /*结果扩展送入 R7中*/ …… 实验结果为可以在 R7、R6、R5中看到-45*35的结果为 FFFFFFFFF1B7H,结果正确。 硬件乘法器的软件限制可见参考资料 1,建议做乘法之前关掉中断. 第三节 P口 MSP430F149有 6个 8位的 P口,其中 P1、P2口占两个中断向量,共可以接 16个中断源, 还可以直接利用 P口的输入输出寄存器,直接对外进行通信。因为所有的 P口都是和其他外设复用 的,因此在用端口之前都要用功能选择寄存器选定所用的功能是外设还是 P口,选定之后还要在方 向寄存器中确定是是输出还是输入,我实验了一个程序,前部分是实现中断功能的程序,后部分为 中断程序是实现直接用 P口对外提供一个短脉冲的程序,在我们设计的开发板中,专门利用了 P口 的输入输出功能对外存 24WCXX和实时时钟芯片 8563的数据通过的存取 I2C总线的读取和写入。还 利用了 P口向电池充电的开启电路。下面是个例子: 例:利用 P口的中断功能实验: 。。。。。。 MAIN MOV #SFE(CSTACK),SP /*初始化堆栈指针*/ MOV #(WDTHOLD+WDTPW),&WDTCTL/*停看门狗定时器*/ LOOP2 BIS #GIE,SR /*普通中断允许*/ EINT /*开中断*/ MOV.B #000H,&P1DIR /*定义 P1口为输入方向*/ MOV.B #000H,&P1SEL /*定义 P1口为 P端口功能*/ MOV.B #002H,&P1IE /*P1.1口为中断允许*/ MOV.B #000H,&P1IES /*定义 P1.1口为上升沿产生中断*/ JMP LOOP2 /*循环等待中断*/ /*下面为中断程序*/ LOOP1 MOV.B #001H,&P1DIR /*定义 P1.0口为输出口*/ MOV.B #001H,&P1OUT /*定义 P1.0口输出的为高电平,发光二极管灯亮*/ MOV.B #000H,&P1IE /*返回中断前的 PC及其他状态*/ MOV.B #000H,&P1OUT /*将 P1.0口置低,发光二极管灯灭*/ RETI /*中断返回*/ COMMON INTVEC /*列中断向量表*/ ORG PORT1_VECTOR DW LOOP1 /*中断向量的入口地址为 LOOP1*/ END 实验结果为:在运行中,当给 P1.1口一个高电平时,PC装入中断程序的地址 LOOP1,进入中断程序段,P.0口 被置高,此时发光二极管灯亮,两个指令周期之后灯灭,此后又返回中断前的地址开始执行,等待下一次中断的到来. 西安邮电学院 63# 710061 陈小忠 8 MSP430单片机的开发及应用 第四节 定时器及数模转换 MSP430中有两个 16位定时器,还可以利用看门狗定时器。由于定时器的是 16位的,则 可以在秒数量级上定时,且具有 2个中断向量,便于处理各种定时中断。定时器的应用在 F149 中具有举足轻重的作用,可以利用MSP430F149中的定时器的比较模式产生 PWM(数字脉冲调 制)波形,再经过低通滤波器产生任意函数的波形,也就是说,可以通过定时器的比较模式实 现数模转换功能。另外,定时器还具有捕获模式,我们可以通过定时器的捕获功能实现各种测 量,比如脉冲宽度测量,如果和比较器结合,还可以测量电阻、电容、电压、电流、温度等, 可以这样说,只要能通过传感转换为时间长度的,都可以通过定时器的捕获定时功能实现值的 测量。在开发板中,利用定时器,我们设计了一个 PWM滤波输出的函数发生器。另外,我们还 利用定时器的捕获功能和比较器的比较功能测电阻和电容,原理可以参见参考资料 1中比较器 的应用章节。下面是比较器测电阻的实验程序和时序: 程序和设计流图为 : …… 初始化 定各 P口功能 用 P口给电容充电 比较器开始工作 定时器开始定时 开始放电至捕获电压 计算时间,再取待测电阻重复测量计算 进入中断程序,读捕获的时间 Reset MOV #SFE(CSTACK),SP /*初始化堆栈指针*/ MOV #(WDTHOLD+WDTPW),&WDTCTL/*停看门狗定时器*/ MOV #GIE,SR /*一般中断允许*/ MOV.B #004H,&P1SEL /*定义定时器 A的 A1作捕获输入*/ MOV.B #000H,&P1DIR /*定义端口方向为输入型*/ MOV #0FFFFH,&CCR0 /*规定定时器的最大计数值为 FFFFH*/ MOV #000H,&CCR1 /*给捕获初始值为 0*/ MOV.B #004H,&P2DIR /*比较器的两个比较口为输入,输出口为输出型*/ MOV.B #01CH,&P2SEL /*定义了端口为比较器功能*/ MOV.B #0FFH,&P3DIR /*定义 P3口输出一个高电平给电容充电*/ 西安邮电学院 63# 710061 陈小忠 9 MSP430单片机的开发及应用 MOV.B #000H,&P3SEL /*选择 P口的功能*/ MOV.B #0FFH,&P3OUT /*输出给电容充电*/ EINT /*开中断*/ LOOP1 MOV.B #00CH,CACTL1 /*确定比较器的输入 0口为外参考电压,这实验中为电容上的电压*/ MOV.B #00FH,CACTL2 /*确定比较器的输入 1口为外参考电压,这实验中为捕获时刻电压,由 外电源提供,可变的 ,根据电阻和电容而定*/ MOV #08930H,&CCTL1 /*定时器 A 的 A1口的 CCR1为捕获寄存器*/ MOV #002D2H,&TACTL /*写控制寄存器,定时器开始计数*/ MOV.B #000H,&P3DIR /*电容放电,等待放电电容上的电压降到捕获电压发生中断,此时的 CCR1中值为放电时间比例值*/ JMP LOOP1 CCR BIC #0FF0FH,&TACTL /*停定时器*/ MOV &CCR1,R5 /*从 R5中看定时器的值,还可以送到 I/O口上*/ JMP CCR /*程序结束*/ COMMON INTVEC ORG TIMERA1_VECTOR DW CCR /*捕获中断向量*/ ORG RESET_VECTOR DW Reset END 实验结果跟参考资料的充放电波形一样,波形为: 电容两端电压波形: vcc 捕获比较 电压 vp 比较器的 输出 定时 充电时间 放电至 捕获 实验数据为 西安邮电学院 63# 710061 陈小忠 10 参数 电阻 VCC VCP 电容 CCR1. 1 CCR1. 2 CCR1. 3 平均 定时时 间 电阻 测量 值 电阻实 际 值 参考电 阻 2.5 2.0 628 号 45BH 459H 45CH 45BH 0.9K 0.9K MSP430单片机的开发及应用 待测电 阻 2.5 2.0 628 号 466H 466H 463H 465H 1K 1.01K 计算电阻公式为:R测=R参*(N测/N参) (其中,N代表捕获的计数值) 本次实验的经验:电容必须选择得当,若太大可能定时器溢出中断而不是捕获中断,太小,则 会为各电容的放电时间差不多,误差太大.捕获电压也必须得当,太大,可能定时时间太小,误差太大, 太小,放电时间太长,可能溢出中断而不是捕获中断.这实际是一个使用范围的问题,由于 DCO的频 率太高,定时器的计数太快,如果定时器的频率低,采用大电容,则使用范围会更大一些,精度更高一 些. 另外,可以用比较器和定时器的捕获用同样的原理测电容及其他的可以转换为时间的传感问 题,这在实际应用中有更广泛的用途. 利用定时器的比较模式和输出的 PWM形式,我们可以作出数模转换的模型和程序,这样经过 低通滤波可以产生各种函数发生器.为此,我们做了一个 PWM波的实验,原理及流图和时序及程序 为: 原理为:利用输出模式的翻转特性和连续模式的 PWM波形输出,通过 CCR0加数据存储器 RAM的中相互交叉“0”电平和“1”的时间间隔,成对的两个寄存器定义了占空比,而各对的和 (小周期)是定值。当计数器的计数值到达 CCR0翻转,且产生中断,转入中断程序,在中断 程序中,我们给 CCR0加上下次翻转的时间,即下次翻转时的计数长度从数据存储器中取出加 到上次翻转时刻的计数值中,当返回中断后,计数器继续计数,到下次翻转和中断时,又循环 继续进行。这样,就输出了占空比不断变化而又呈一种趋势的变化,经过低通滤波,即电容的 充放电形成一种阶梯状的变化趋势,当计数小周期很小时,就可以得到近似的一条模拟曲线, 从而实现了数模转换或函数发生器,由于小周期是任意的但必须大于 2倍中断程序时间,则可 以实现任意占空比的小周期和任意的小周期长度,又由于有多少个小周期组成一个大周期也是 自由的,完全由实际需要来定,则给用户带来了很大的灵活性。下面是程序流图,由于这个 程 序实验要用到对数据段表的读操作和间接寻址且用到中断向量,因此在此列出了程序的全部清 单,以更完整:流程图为: 计数到定时值 定义对应的端口功能为外围模块 初始化和写翻转表数据 翻转并 中断 西安邮电学院 63# 710061 陈小忠 11 中断程序中,停计数,加下一个翻转时刻值,小周期数减一,如果小周 期数已到一个大周期,又返回到第一个小周期循环 MSP430单片机的开发及应用 又从原计数值重新开始计数,中断返回,循环执行 程序清单为: #include "msp430x14x.h" RSEG UDATA0 DW 450,50,350,150,250,250,150,350,50,450/*间隔数据表,开始地址为 200 H,数据又需要定*/ RSEG CSTACK DS 0 RSEG CODE DS 0 Rese MOV #SFE(CSTACK),SP /*初始化堆栈指针*/ MOV #(WDTHOLD+WDTPW),&WDTCTL /*停看门狗定时器*/ MOV.B #0FFh,&P1SEL /*选择外部定时器功能*/ MOV.B #0FFH,&P1DIR /*确定方向为输出*/ MOV #030H,&CCR0 /*给 CCR0一个初始值,不小于两个指令周 期的计数值*/ BIS #GIE,SR /*开一般中断允许位*/ MOV #0200H,R6 /*将 R6定义到数据表段开始地址*/ MOV #10,R4 /*取 10个地址单元,即九个小周期*/ MOV #0090H,&CCTL0 /*选 CCR0作为比较寄存器,定义输出模式为 4,且中断允许*/ MOV #002E0H,&TACTL /*写控制寄存器,参数为一分频,比较模式,连续计数方式,不溢出中 断,开始计数*/ TA0 EINT /*开中断*/ JMP TA0 /*等待翻转时刻到和等待中断到,即 TAR=CCR0*/ CMPS BIC #0FFCFH,&TACTL /*中断程序到,停计数值,处理中断*/ ADD 0(R6),&CCR0 /*加下一个翻转到来的时间值,间接寻址方式*/ ADD #2,R6 /*是字操作,加 2是将 R6指向下一个地址*/ SUB.B #1,R4 /*小周期数量减一*/ JNZ LOOP1 /*大周期没完,循环*/ MOV #0200H,R6 /*大周期完,重新开始一个大周期*/ MOV #10,R4 LOOP1 MOV #002E0H,&TACTL /*重新开始计数*/ RETI /*中断返回*/ COMMON INTVEC ORG TIMERA0_VECTOR /*定时器 A 的 0中断向量表*/ DW CMPS ORG RESET_VECTOR DW Reset END 下面是程序中需要的几点问题: 1. 在中断程序中,不能在没回中断之前就用转移指令将程序跳出中断,否则,堆栈占用 的空间会越来越大,数据段会出错。主要是程序段的 LOOP1必须在中断程序里。即 CMPS … … 中断程序开始 西安邮电学院 63# 710061 陈小忠 12 MSP430单片机的开发及应用 SUB.B #1,R4 /*小周期数量减一*/ JNZ LOOP1 /*大周期没完,循环*/ MOV #0200H,R6 /*大周期完,重新开始一个大周期*/ MOV #10,R4 LOOP1 MOV #002E0H,&TACTL /*重新开始计数*/ … … RETI 2.在程序中,只用 CCR0而不用 CCR1和 CCR2的原因是 CCR0的中断优先级高,且返 回时不须软件将中断标志位清出掉,而是自动复位的,而 CCR1和 CCR2 的中断标志须软件复 位,否则中断变的不定。 3.由于不须要在计数到 0时中断,因此将溢出中断禁止,而将 CCR0的中断允许。 4.数据段的数据个数一般要达到 256个才能通过 8路 AD转换,由于篇幅有限,只列出了 10个,这由实际需要而定 。 如果需要的滤波形是对称的,则数据段的数据为对称就可以了。 5.定时器 A有两个中断向量,如果要同时用 CCR0和 CCR1或 CCR2,需要写不同的中断 程序,这一点尤其注意。 实验结果为: PWM波形频率:MAX:2KHZ,计数频率:8MHZ,误差:0.5% 波形图示意为: T小 T大 第五节 时钟模块 MSP430F149的时钟可以自由选择,它包括一个内部 DCO时钟和另外两个外部时钟,内部 时钟的参数见参考资料 1,其中最高可达到 1042KHZ;外部可以接两个时钟,一个可接钟表晶振或标 准晶振,另一个接最高时钟频率为 8MHZ的晶振,8M是单片机的最高工作频率,对于晶振的选择,在 参考资料一上介绍的很清楚,在此不在重复,对基础时钟的控制,只需要对相应的控制寄存器写入相 应的控制位就可以产生需要的时钟,还可以从相应的端口测的时钟频率,我们做了一个实验,是控制 西安邮电学院 63# 710061 陈小忠 13 MSP430单片机的开发及应用 内部时钟的,可以从 149的端口上测的相应的频率,只要开启时钟频率之后,时钟就继续存在到写入 停止为止. 下面是主程序,由于简单,不用程序流图. MAIN MOV #SFE(CSTACK),SP / *初始化堆栈指针*/ MOV #(WDTHOLD+WDTPW),&WDTCTL/*停看门狗寄存器*/ BIS.B #010H,&P5DIR /*定义方向为输出方向*/ BIS.B #010H,&P5SEL /*选择为外部模块功能*/ BIS.B #000H,&BCSCTL2 /*选择为 1分频,DCO为MCLK的输入时钟*/ ……. /*可以在 48管脚看到时钟频率*/ 实验结果为时钟频率 1000KHZ,占空比为 1:1,如果调整 BCSCTL2的控制位,可以看到频率的变化,在我们做的 开发板中,要利用这个频率升压,这在后面将会用到. 第六节 USART通信模块 通用串行同步异步通信模块是为了使MSP430F149多机通信用的,通过 USART口连接 RS202和 RS485的驱动芯片可以实现单片机与计算机及其他的工作电平的匹配串行通信,由于 MSP430F149具有两个通信口,因此可以分别用于 RS202和 RS485的串行通信.MSP430有同步和 异步两种方式,每一种方式都有独立的帧格式和控制寄存器,只需要按照需要和帧格式写入相应的 寄存器就可以实现多机通信. 由于MSP430的波特率产生比较自由,因此异步通信模式用的比较多,在毕业设计中,我们只 实验了异步通信模式,在异步通信模式中,MSP430的波特率的产生有很独特的方式,可以实现多种 波特率的产生,可以克服其他单片机的波特率受限的缺点.另外,在异步模式中,又根据需要分为线 路空闲多机模式和地址位多机模式,如果只是两机通信,线路空闲比较多,用线路空闲多机模式比较 好,在开发板中有一个测试程序是实现通过 RS202与计算机超级终端串行口相连的测试程序,在此, 不用多说,由于MSP430的波特率发生器比较特别,在此,我们着重讨论一下波特率发生器. 波特率发生器是用波特率选择寄存器和调整控制寄存器来产生串行数据位定时. 波特率 =BRCLK/(UBR+(M7+M6+M5+M4+M3+M2+M1+M0)),其中 BRCLK为晶振频率,UBR为分频因子 的整数,即晶振频率除以波特率的整数部分,而M7,M6,M5,M4,M3,M2,M1,M0分别为调整位,是分 别写在 UMCTL中的,如果置位,则对应的时序时间只能波特率分频器的输入时钟扩展一个时钟周 期,每接受或发送一位,在调整控制寄存器的下一位被用来决定当前位的定时时间.的第一位的 西安邮电学院 63# 710061 陈小忠 14 MSP430单片机的开发及应用 定时由 URB加上M0决定,下一位由 UBR加上M1决定,以后类推.而调整位取“0”还是“1”, 取决于当前的分频因子与需要的分频因子的差距,如果大于 0.5取“1”,如果小于 0.5取 “0”,具体实例可见参考资料 1。 第七节 比较器模块 比较器的应用在MSP430中很广,可以做为可转换为电压的量的测量,这在参考资料 1上有 很详细的说明,如果加上定时器的捕获功能,比较器的用途会更广,由于比较器的应用在定时器一章 已有实验证明,在此不在多述,但有几点必须说明. 1. 比较器属于硬件型的,虽然很准确,但由于有软件的控制,造成的时间误差可能很大. 因此存在一段时间的振荡,这造成测量的误差大,不能很精确. 2. 比较器的参考电平很方便,可以都自由加,但不能超过片子的最高电压 3.3V ,否则不 能正常工作. 比较器的应用还很多,可
/
本文档为【mso430f149书籍】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索