第2章MSP430F149单片机基础知识
- 格式:ppt
- 大小:1.24 MB
- 文档页数:23
MSP430是德州公司新开发的一类具有16位总线的带FLASH的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器。
具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M的时钟。
由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作,对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化,MSP430系列将会得到越来越多人的喜爱。
第三章MSP430F149 资源的应用介绍及开发第一节中断介绍及存储器段介绍中断在MSP430中得以广泛的应用,它可以快速进入中断程序,之后返回中断前的状态,其时序为:PC执行程序中断允许置位SR中的GIE置位 EINT(中断开)中断到,中断标志位(IFG)置位从中断向量表中读取中断程序的入口地址,进入中断程序执行中断程序中断允许位复位 RETI中断返回回到原来地址。
具体应用将会在应用程序中的到应用。
有关中断源和中断优先级及中断允许位、中断标志位在参考资料1上有详细介绍。
MSP430单片机的片上存储器共为64K,表示为图:第三节 P 口MSP430F149有6个8位的P口,其中P1、P2口占两个中断向量,共可以接16 个中断源,还可以直接利用 P口的输入输出寄存器,直接对外进行通信。
基于MSP430F149的GPS
(芯片篇)
1、系统功能框图
2芯片资料:
MSP430F149:
低电源电压范围:1.8~3.6V
超低功耗:待机模式:1.6uA 关闭模式(RAM保持):0.1uA 活动模式:280uA at 1MHz,2.2V
5种省电模式
6us内从待机模式唤醒
16位RISC结构,125ns指令周期
带内部参考,采样保持和自动扫描特性的12位A/D转换器
有7个捕获/比较寄存器的16位定时器Timer_B 有3个捕获/比较寄存器的16位定时器Timer_A
片内集成比较器
串行在线编程,无需外部编程电压,安全熔丝可编程代码保护.
器件系列包括:–MSP430F133:8KB+256B闪速存储器,256B的RAM –MSP430F135:16KB+256B闪速存储器,512B的RAM –MSP430F147,MSP430F1471:32KB+256B闪速存储器,1KB的RAM –MSP430F148, MSP430F1481:48KB+256B闪速存储器,2KB的RAM –MSP430F149, MSP430F1491:60KB+256B闪速存储器,2KB的RAM
可用封装:64脚方形扁平封装(QFP).
功能框图。
MSP430单片机的开发及应用设计人:陈小忠西安邮电学院电子信息工程系电子0002班西安邮电学院63# 7100612003年7月目录第一章概述第二章MSP430 F149语言介绍第一节开发环境及程序下载第二节语言介绍第三章MSP430F149 资源的应用介绍及开发第一节中断介绍及存储器段介绍第二节硬件乘法器第三节P口第四节定时器及数模转换第五节时钟模块第六节USART通信模块第七节比较器第八节模数转换第四章MSP430F149开发板的介绍及测试第一节模数转换模块第二节传感器模块第三节外存和实时时钟模块第四节485和232模块第五节电源管理模块及晶振模块第六节PWM波形滤波第一章概述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环境下进行调试,下载是在连接之后,调试之前,通过计算机的串口下载的.关于环境的操作,可以参考有关资料,其中可能遇到的问题及解决方法有:(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端口加一个低电平脉冲以复位从程序开始重新执行.第二节指令介绍MSP430有自身语言,汇编语言也不同于其他类型的单片机,伪指令也是变幻魔测,但又很重要,下面是我毕业设计的一些尝试、出问题的地方.也可参见资料。
MSP430F149定时器B1.定时器B模块:TimerB与TimerA大部分相同,不同点在于定时器B的捕获/比较单元增加了锁存器。
二者区别:(1)TimerB计数长度为8位,10位,12位,16位可编程,由TBCTL寄存器的CNTLx两位来配置,而定时器A的计数长度是固定的16位;(2)TimerB没有实现定时器A中的SCCI功能位的功能;(3)TimerB在比较模式下的捕获/比较寄存器功能与TimerA不同,增加了捕获比较锁存器;(4)有些芯片型号当中TimerB输出实现了高阻抗输出;(5)比较模式的原理有所不同:TimerA当中CCRx寄存器当中保存与TAR相比较的数据,而在TimerB 当中CCRx中保存要比较的数据,但并不直接与定时器TBR相比较,而是将CCRx当中的数据锁存到相应的锁存器之后,由锁存器与TBR相比较。
从捕获/比较寄存器相比较锁存器传输数据的过程的时间也是可编程的,可以是写入比较捕获寄存器之后立即传输,也可有一个定时器来触发传输。
(6)TimerB支持多种同步的定时功能,多重比较捕获功能和多重波形输出功能(PWM波)。
而且,通过对比较数据的两级缓冲,可实现多个PWM波同步周期更新。
2.TimerB的逻辑结构图:定时器B的逻辑结构基本与定时器A相同。
3.定时器B的寄存器:寄存器相关位的配置过程参考定时器A和数据手册。
4.定时器B的比较功能当定时器B工作在比较模式时,将数据写入捕获比较锁存器TBCCRx当中,当TBCCTLx当中的CLLDx位决定的装载事件的发生时,TBCCRx中的数据会自动地传输到比较寄存器当中。
5.TI提供的例程://// ////// MSP430F149// -----------------// /|| XIN|-// | | | HF XTAL (455k - 8MHz)// --|RST XOUT|-// | |// | P4.1/TB1|--> CCR1 - 75% PWM// | P4.2/TB2|--> CCR2 - 25% PWM//// M. Buccini// Texas Instruments Inc.// Feb 2005// Built with IAR Embedded Workbench Version: 3.21A//******************************************************************************。
MSP430F149 开发板使用说明2009年09月第一章新手入门1.1 MSP430F149 学习板特点:选用16 位超低功耗单片机MSP430F149,采用子母双板分离设计,MCU 子板与集成外设母板通过插针座连接,使用灵活方便。
ØMCU 的全部IO都用插针引出,便于二次开发提供电源指示灯和上电自动复位、手动复位电路。
2、蜂鸣器实验(1)蜂鸣器1:单频音(步进变音调)(2)蜂鸣器2:奏乐(祝你平安)3、数码管实验(1)数码管1(显示0123)(2)数码管2(动态显示0~F)4、4×1 独立按键实验(1)键盘1:扫描数码管显示5、1602 液晶实验(1)1602 液晶1:动态字符显示(2)1602 液晶2:静态字符显示(3)1602 液晶3:内部时钟显示6、RS232 接口实验(1)RS232 接口1:MCU 发送数据PC 机显示(2)RS232 接口2:按键控制MCU 发送数据PC 机显示(3)RS232 接口3:PC 机发送数据MCU 液晶显示(4)RS232 接口4:MCU 回发接收到的PC 机数据7、RS485 接口实验(1)RS485 接口1:发送程序8、PS2 接口实验(1)PS2 接口1:PS2 控制1602 显示9、12-Bit 高精度温度传感器实验(1)温度传感器1:DS18B20 在液晶显示10、RTC 实时时钟实验(1)实时时钟1:DS1302 测试(2)实时时钟2:DS1302 电子钟11、2k Bit EEPROM 实验(1)EEPROM1:AT24C02 测试(2)EEPROM2:读出数据通过串口在PC 机显示12、12-Bit 模数转换器(ADC)接口实验(1)模数转换器2:ADC 在1602 液晶在显示(2)模数转换器3:ADC 通过串口在PC 机显示13、12864 液晶实验(与12864 液晶配套)(1)12864 液晶并口1:字符显示(2)12864 液晶并口2:汉字显示(3)12864 液晶并口3:图形显示(4)12864 液晶并口4:综合演示(5)12864 液晶串口5:字符显示(6)12864 液晶串口6:汉字显示(7)12864 液晶串口7:图形显示(8)12864 液晶串口8:综合演示14、HS0038红外接口实验(1)红外遥控解码实验,在数码管上显示三、开发板综合程序1、温度时间综合实验(1)DS18B20 + DS1302 + 16022、SSCOM综合实验(1)PC发送接收字符第三章板上资源详解本章详细介绍了MSP430F149 学习板上各个功能模块的硬件电路原理、使用方法和注意事项,使用前请仔细阅读。
MSP430F149的存储器结构及FLASH读写1 概述1.1 FLASH特点写操作只能将1改写为0,不能将0改写成1。
FLASH擦除后所有单元变为1,擦除操作只能针对整个段。
FLASH在擦除前不能被改写。
1.2 MSP430F149存储器编址方式MSP430F149的ROM为60K+256B的FLASH,RAM为2K。
MSP430存储器采用冯诺依曼结构,RAM和ROM合在一起编址。
MSP430F149内部集成有FLASH控制器,可以简化对FLASH的操作。
64K的寻址空间分为RAM、FLASH。
RAM分两块:1、寄存器(0000H-01FFH),存放特殊寄存器、设备寄存器、变量与堆栈。
2、数据RAM(01FFH-),存放各种变量、中间结果、堆栈。
FLASH分两块:1、主FLASH 一般用于存放程序代码。
2、信息FLASH(InfoFlash)用作掉电后保存少量数据。
分为InfoA(0X1080-0X10FF)和InfoB(0X1000-0X1080),每段各128B。
1.3 操作三种操作:读取、擦除(只能针对段擦除)、写入(可以写入单个字节)。
2使用方法2.1 程序架构读取FLASH方法和读取RAM方法相同。
写和擦除FLASH要进行如下配置:配置寄存器制定指针地址写数据/复制数据配置寄存器2.2 参数配置主要配置三个寄存器FCTL1,FCTL2,FCTL3。
1、配置FLASH控制器时钟。
时钟要求控制在250-470Khz之间。
FCTL2 = FWKEY + FSSEL0 + FN0; //2分频2、用指针指向地址Unsigned char *ptr= (unsigned char *) 0x1080;3、进入写模式或擦除模式FCTL1=FWKEY+WRT;或FCTL1=FWKEY+ERASE4、清除锁定位FCTL3=FWKEY;5、写数据*ptr=0x30;或擦除*ptr=0;6、退出写状态,恢复锁存FCTL1=FWKEY;FCTL3=FWKEY+LOCK;2.3 说明上电FLASH默认状态是读。
基于MSP430F149单片机的实验系统设计本课题在对MSP430F149单片机了解学习的基础上,研究了基于MSP430F149单片机的实验系统设计,包括单片机的外部接口电路硬件设计和软件开发。
本课题具体完成了以下几方面内容。
1.理论知识的学习。
学习MSP430F149单片机的内部结构、特点和应用,查阅相关芯片的数据手册,了解各模块电路芯片的工作原理。
2.设计MSP430F149单片机的各种接口电路。
确定各模块的外围接口电路,包括A/D转换、D/A转换、键盘接口、数码管显示、温度传感器、实时时钟、非易失性存储器、液晶显示、串行通信等。
3.学习并使用protel 99SE软件绘制电路原理图、PCB板,制作印制电路板。
学习MSP430单片机的集成开发环境,编写各模块的接口驱动程序。
4.下载调试各模块接口程序,完善各模块的功能。
系统硬件组成共包括九个模块,分别为MSP430F149单片机最小系统模块,4路A/D转换模块,D/A 转换模块,键盘数码管显示模块,温度传感器模块,实时时钟模块,非易失性存储器模块,液晶显示模块,2路串口通信接口模块。
系统软件组成为各个功能模块程序设计,包括七个部分,分别为A/D转换程序,温度传感器显示当前环境中的温度,用液晶来显示实时时钟,通过串口向单片机发送字符,单片机又发回字符给电脑,D/A输出方波,非易失性存储器的读写。
系统结构如图2-1所示。
图2-1 系统组成结构其中,本课题外接模块设计中具有I2C总线接口的电路有温度传感器模块、实时时钟/日历模块、非易失性存储器模块,组成结构如图2-2所示。
图2-2 I2C总线接口模块本课题设计的基于MSP430单片机的实验系统提供MSP430F149芯片,一路LED灯,I2C总线接口的温度传感器芯片LM75,实时/日历时钟芯片PCF8563,16384(16K)字节EEPROM的非易失性存储器芯片AT24C128,汉字图形点阵液晶显示模块RT12864,串行接口8位LED数码管及64键键盘智能控制芯片HD7279A,带有缓冲基准输入(高阻抗)的10位电压输出数字-模拟转换器芯片TLC5615,双串口电平转换芯片SP3223,JTAG并口仿真器。
基于MSP430F149的GPS
(芯片篇)
1、系统功能框图
2芯片资料:
MSP430F149:
低电源电压范围:1.8~3.6V
超低功耗:待机模式:1.6uA 关闭模式(RAM保持):0.1uA 活动模式:280uA at 1MHz,2。
2V
5种省电模式
6us内从待机模式唤醒
16位RISC结构,125ns指令周期
带内部参考,采样保持和自动扫描特性的12位A/D转换器
有7个捕获/比较寄存器的16位定时器Timer_B 有3个捕获/比较寄存器的16位定时器Timer_A
片内集成比较器
串行在线编程,无需外部编程电压,安全熔丝可编程代码保护。
器件系列包括:–MSP430F133:8KB+256B闪速存储器,256B的RAM –MSP430F135:16KB+256B闪速存储器,512B的RAM –MSP430F147,MSP430F1471:32KB+256B闪速存储器,1KB的RAM –MSP430F148, MSP430F1481:48KB+256B闪速存储器,2KB的RAM –MSP430F149, MSP430F1491:60KB+256B闪速存储器,2KB的RAM
可用封装:64脚方形扁平封装(QFP).
功能框图。
各个模块的寄存器:1)CPU内部寄存器(状态寄存器SR)2)外围模块寄存器和特殊寄存器中断使能寄存器(IE1)UTXIE0USART0模块的传输中断使能控制比特。
置1时模块的中断使能,0时关闭URXIE0USART0接收中断控制。
1中断使能、0中断关闭ACCVIEFLASH 存储器非法访问中断使能控制比特位。
1使能、0时关闭。
NMIE 非屏蔽中断使能控制。
1使能、0关闭OFIE 晶体出错中断使能控制。
1使能、0关闭WDTIE看门狗中断使能控制。
1使能看门狗中断、0关闭中断使能寄存器(IE2)****UTXIE15URXIE14********UTXIE1USART1模块传输中断使能控制。
1使能、0关闭URXIE1USART1模块接收中断使能控制。
1使能、0关闭中断标志寄存器(IFG1)UTXIFG07URXIFG 06**NMIIFG4****OFIFG1WDTIFGUTXIFG0USART0传输中断标志位。
1时有中断产生、0没有URXIFG0USART0接收中断标志位。
1时有中断产生、0没有NMIIFG非屏蔽中断标志位。
1时有中断产生、0没有UTXIE07URXIE06ACCVIE5NMIIE4**3**2OFIE 1WDTIEOFIFG晶体出错中断标志位。
1时有中断产生、0没有WDTIFG看门狗中断标志。
1时有中断产生、0时没有中断标志寄存器(IFG2)****UTXIFG15URXIFG14********UTXIFG1USART1传输中断标志位。
1时有中断产生、0时没有URXIFG1USART1接收中断标志位。
1时有中断产生、0时没有模块使能寄存器1(ME1)UTXE07URXE0USPIE0************UTXE0USART0的传输使能。
1时USART0传输模块使能、0时不工作URXE0 USPIE0USART作为UART时,该比特控制UART的接收功能,设置为1时接收模块使能,0时不工作;作为SPI时,设置为1,则SPI使能,0时SPI不工作。
MSP430F149介绍文档MSP430F149是德州仪器(Texas Instruments)推出的一款低功耗、高性能的MSP430系列32位微控制器。
它采用16位RISC架构,工作频率高达16MHz,具有较大的存储容量和丰富的外设资源,适用于各种嵌入式应用开发。
MSP430F149具有较低的工作电压和功耗,能够在1.8V到3.6V的范围内正常工作,使其在电池供电系统中具有较长的续航时间。
它的典型工作电流仅为0.6mA,待机电流为0.1μA,非常适合对功耗要求严格的应用场景。
此外,MSP430F149还支持多种低功耗模式,包括LPM4(电平3)模式,可以实现极低的功耗消耗。
MSP430F149内置了8KB的闪存和512B的RAM,可以通过内部的编程接口进行非易失性存储器(NVM)编程。
它还支持外扩存储器,包括片外SRAM和EEPROM,可以满足更大容量的数据存储需求,灵活应对各种应用场景。
此外,MSP430F149还支持多种通信接口,包括USART、SPI和I2C 等,可以方便地与其他外部设备进行数据交换和通信。
MSP430F149具有多种芯片外设,包括多通道的12位ADC、多个通用定时器、比较器、高速PWM输出等。
这些外设资源可以满足不同应用中的各种控制和计时需求。
此外,MSP430F149还支持内置RTC(实时时钟)模块,提供了精确的时间管理功能,适用于需要时间戳功能的应用场景。
MSP430F149采用了MSP430系列独特的开发环境和编程方式。
德州仪器提供了MSP430编程和调试工具套件,包括MSP430硬件调试接口(HDI)和MSP430调试器(MSP-FET)。
开发人员可以使用这些工具进行软件编译、调试和烧录,快速开发MSP430F149的应用程序。
总之,MSP430F149是一款极具性价比的嵌入式微控制器,具有低功耗、高性能、丰富的外设资源和易用的开发环境等优点。
它适用于各种嵌入式应用开发,包括消费电子产品、工业自动化系统、智能传感器等领域。
1.复位信号是MCU工作的起点,430的复位型号有两种:上电复位信号POR和上电清除信号PUC。
POR信号只在上电和RST/NMI复位管脚被设置为复位功能,且低电平时系统复位。
而PUC信号是POR信号产生,以及其他如看门狗定时溢出、安全键值出现错误时产生。
但是,无论那种信号触发的复位,都会使msp430在地址0xffff处读取复位中断向量,然后程序从中断向量所指的地址开始执行。
复位后的状态不写了,详见参考书,嘿嘿。
2.首先你要知道msp430的存储器结构。
典型微处理器的结构有两种:冯。
诺依曼结构——程序存储器和数据存储器统一编码;哈佛结构——程序存储器和数据存储器;msp430系列单片机属于前者,而常用的mcs51系列属于后者。
0-0xf特殊功能寄存器;0x10-0x1ff外围模块寄存器;0x200-?根据不同型号地址从低向高扩展;0x1000-0x107f seg_b0x1080_0x10ff seg_a 供flash信息存储剩下的从0xffff开始向下扩展,根据不同容量,例如149为60KB,0xffff-0x11003.系统时钟是一个程序运行的指挥官,时序和中断也是整个程序的核心和中轴线。
430最多有三个振荡器,DCO内部振荡器;LFXT1外接低频振荡器,常见的32768HZ,不用外接负载电容;也可接高频450KHZ -8M,需接负载电容;XT2接高频450KHZ-8M,加外接电容。
430有三种时钟信号:MCLK系统主时钟,可分频1 2 4 8,供cpu 使用,其他外围模块在有选择情况下也可使用;SMCLK系统子时钟,供外围模块使用,可选则不同振荡器产生的时钟信号;ACLK辅助时钟,只能由LFXT1产生,供外围模块。
4.中断是430处理器的一大特色,因为几乎每个外围模块都能产生,430可以在没有任务时进入低功耗状态,有事件时中断唤醒cpu,处理完毕再次进入低功耗状态。
整个中断的响应过程是这样的,当有中断请求时,如果cpu处于活动状态,先完成当前命令;如果处于低功耗,先退出,将下一条指令的pc值压入堆栈;如果有多个中断请求,先响应优先级高的;执行完后,等待中断请求标志位复位,要注意,单中断源的中断请求标志位自动复位,而多中断的标志位需要软件复位;然后系统总中断允许位SR.GIE复位,相应的中断向量值装入pc,程序从这个地址继续执行。
一、PWM信号发生#include<msp430x14x.h>#define frequency 16384void main(void){WDTCTL=WDTPW+WDTHOLD;TACTL=TASSEL0+TACLR;CCR0=frequency-1; //频率:32768/(CCR0+1);CCTL1=OUTMOD_7;CCR1=frequency/2; //占空比:CCR1/(CCR0+1);CCTL2=OUTMOD_7;CCR2=frequency/4;P2DIR|=BIT3;P2SEL|=BIT3;P2DIR|=BIT4;P2SEL|=BIT4;TACTL|=MC0; //增计数模式;while(1){_BIS_SR(LPM3_bits);_NOP();}}二、用Timer_B捕获脉宽#include<msp430x14x.h>unsigned int width[10]={0,0,0,0,0,0,0,0,0,0};unsigned int i=0;void main(){WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P4SEL|=BIT0; //P4.0作为捕获模块功能的输入端输入方波//-------开晶振XT2---------BCSCTL1&=~XT2OFF; //打开XT2振荡器do{IFG1 &=~OFIFG; // 清除振荡器失效标志for(i=256;i>0;i--); // 延时,等待XT2起振}while((IFG1 & OFIFG)!=0); // 判断XT2是否起振BCSCTL2=SELM_2+SELS; //选择MCLK=SMCLK为XT2TBCCTL0&=~(CCIS1+CCIS0); // 捕获源为P4.0,即CCI0A(也是CCI0B)TBCCTL0|=CM_2+SCS+CAP; //下降沿捕获,同步捕获,工作在捕获模式TBCCTL0|=CCIE; //允许捕获比较模块提出中断请求TBCTL|=ID_3;TBCTL|=TBSSEL_2; //选择时钟MCLKTBCTL|=TBCLR; //定时器清零TBCTL|=MC_2; //定时器开始计数(连续计数模式0~0xFFFF)_EINT();while(1){_BIS_SR(LPM3_bits);_NOP();}}//―――――定时器TB的CCR0的中断:用于检测脉冲上升与下降沿――――#pragma vector=TIMERB0_VECTOR__interrupt void TimerB0(void){if(TBCCTL0&CM1) //捕获到下降沿{TBCTL|=TBCLR;TBCCTL0=(TBCCTL0&(~CM1))|CM0; //改为上升沿捕获:CM1置零,CM0置一}else if(TBCCTL0&CM0) //捕获到上升沿{width[i++]=TBCCR0; //记录下结束时间TBCCTL0=(TBCCTL0&(~CM0))|CM1; //改为下降沿捕获:CM0置零,CM1置一if(i==10)i=0;}}三、MSP430测速方法#include<msp430x14x.h>unsigned char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//LED字模; unsigned int Segments[]={0,0,0,0,0};//要显示的数字;unsigned int uiWidth=0;unsigned int i=0;void InitTimer_B(){TBCCTL0&=~(CCIS1+CCIS0); // 捕获源为P4.0,即CCI0A(也是CCI0B)TBCCTL0|=CM_2+SCS+CAP; //下降沿捕获,同步捕获,工作在捕获模式TBCCTL0|=CCIE; //允许捕获比较模块提出中断请求TBCTL|=ID_3;TBCTL|=TBSSEL_2; //选择时钟MCLKTBCTL|=TBCLR; //定时器清零TBCTL|=MC_2; //定时器开始计数(连续计数模式0~0xFFFF)}void IntoChar(unsigned int unitemp){unsigned char j=0;while(unitemp){Segments[j]=unitemp%10;unitemp=unitemp/10;j++;}}void main(){WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P2DIR=0xff;P2OUT=0xff;P3DIR=0xff;P3OUT=0xff;P4DIR=0xfe;P4OUT=0xfe;P5DIR=0xff;P5OUT=0xff;P6DIR=0xff;P6OUT=0xff;P4SEL|=BIT0; //P4.0作为捕获模块功能的输入端输入方波BCSCTL1&=~XT2OFF; //打开XT2振荡器do{IFG1&=~OFIFG; // 清除振荡器失效标志for(i=256;i>0;i--); // 延时,等待XT2起振}while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振BCSCTL2 =SELM_2+SELS; //选择MCLK=SMCLK为XT2WDTCTL=WDT_ADLY_1_9;IE1|=WDTIE;InitTimer_B();_EINT();while(1);}//定时器TB的CCR0的中断,用于检测脉冲下降沿unsigned int times=0;#pragma vector=TIMERB0_VECTOR__interrupt void TimerB0(void){_DINT();if(TBCCTL0&CM1) //捕获到下降沿{times++;if(times==4){uiWidth=TBCCR0; //记录下结束时间times=0;}TBCTL|=TBCLR;}_EINT();}//看门狗定时器中断,用于LED动态显示unsigned char ucBitolight=0;//数码管位选变量#pragma vector=WDT_VECTOR__interrupt void watchdog_timer(void){IntoChar(uiWidth);P4OUT=led_mod[Segments[4-ucBitolight]];P6OUT|=BIT6;P6OUT&=~BIT6;P4OUT=~(1<<(ucBitolight+3));P5OUT|=BIT5;P5OUT&=~BIT5;ucBitolight++;if(ucBitolight==5) ucBitolight =0;}。