MSP430学习总结

合集下载

msp430实验报告

msp430实验报告

msp430实验报告msp430实验报告引言:msp430是一种低功耗、高性能的微控制器,被广泛应用于嵌入式系统和物联网设备中。

本实验报告将介绍我对msp430微控制器进行的一系列实验,包括实验目的、实验过程、实验结果以及对实验的总结和展望。

实验目的:本次实验的主要目的是熟悉msp430微控制器的基本功能和使用方法,以及学习如何进行简单的控制程序设计。

通过实验,我希望能够掌握msp430的基本操作和编程技巧,并且能够运用所学知识解决实际问题。

实验过程:在实验开始之前,我首先对msp430微控制器进行了一些基本的了解。

我了解到,msp430具有低功耗、高性能和丰富的外设接口等特点,可以满足各种嵌入式系统的需求。

接着,我根据实验指导书的要求,准备好实验所需的硬件设备和软件工具。

第一部分实验是关于GPIO口的实验。

我按照实验指导书上的步骤,将msp430与LED灯连接起来,并编写了一个简单的程序,实现了对LED灯的控制。

通过这个实验,我学会了如何配置GPIO口和编写简单的控制程序。

第二部分实验是关于定时器的实验。

我学习了如何配置msp430的定时器,并编写了一个简单的程序,实现了定时闪烁LED灯的功能。

通过这个实验,我深入了解了定时器的工作原理和编程方法。

第三部分实验是关于ADC的实验。

我学习了如何配置msp430的ADC模块,并编写了一个简单的程序,实现了对外部模拟信号的采样和转换。

通过这个实验,我了解了ADC的基本原理和使用方法。

实验结果:通过一系列实验,我成功地掌握了msp430微控制器的基本功能和使用方法。

我能够独立完成GPIO口的配置和控制、定时器的配置和编程、ADC的配置和采样等任务。

实验结果表明,msp430具有强大的功能和灵活的编程能力,可以满足各种嵌入式系统的需求。

总结和展望:通过本次实验,我对msp430微控制器有了更深入的了解,并且掌握了一些基本的操作和编程技巧。

然而,由于实验时间和条件的限制,我还没有完全发挥出msp430的潜力。

msp430课程报告

msp430课程报告

不知不觉中,时光如白驹过隙般飞逝,一转眼,单片机课程的学习结束了。

在本次单片机的学习过程中,我不仅学习了单片机的理论知识,并将理论知识很好地应用到实践当中去,而且我还增强了自我创新意识,提高了动手实践能力。

在本次课程的学习中,我意识到知识的学习固然重要,能力的培养也不能忽视。

随着电子科学技术的发展,特别是随着大规模集成电路的迅猛发展,人们的生活发生了巨大的变化,生活水平显著提高,生活方式也逐步改变,使人们的生活更加便捷、舒适。

如果说微型计算机的出现给现代科学研究带来了质的飞跃,那么可编程控制器的出现则是现代工业控制测控领域的一次新的革命。

其中,单片的作用不容忽视。

单片机的应用范围很广,在工业自动化中应用有数据采集、测控技术等。

在智能仪器仪表中应用有数字示波器、数字信号源、自动取款机等。

在消费类电子产品中应用有空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。

在通讯方面应用有手机、小灵通等。

在武器装备方面应用有飞机、坦克、导弹、航天飞机、智能武器等。

单片机对现代生活的影响不言而喻了。

刚开始学习的时候,基本未接触过单片机,对单片机没有什么了解,不知道什么是单片机,更不知道它有什么作用。

通过本次课程的学习才大体了解了单片机的一些知识与应用。

知道了由中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及串行通信接口等集成在一块芯片上,构成了一个单片微型计算机,简称为单片机。

了解了什么是单片机以后,就开始接触硬件设备。

我学习了下列几个外设。

1.WDT俗称看门狗,是单片机非常重要的一个片内外设。

什么是看门狗呢?看门狗实际就是一个定时器,只不过在定时到达时,可以复位单片机。

这个功能对于实际工程应用中的产品非常有用。

2.JLX12864G-086 型液晶模块是晶联讯电子研发和制造的液晶屏模块。

该型液晶模块由于使用方便、显示清晰,广泛应用于各种人机交流面板。

该模块可选择带中文字库IC 与不带中文字库IC 两种。

MSP430单片机深入学习笔记

MSP430单片机深入学习笔记

复位1.POR信号只在两种情况下产生:➢微处理器上电。

➢RST/NMI管脚被设置为复位功能,在此管脚上产生低电平时系统复位。

2.PUC信号产生的条件为:➢POR信号产生。

➢看门狗有效时,看门狗定时器溢出。

➢写看门狗定时器安全健值出现错误。

➢写FLASH存储器安全键值出现错误。

3.POR信号的出现会导致系统复位,并产生PUC信号。

而PUC信号不会引起POR信号的产生。

系统复位后(POR之后)的状态为:➢RST/MIN管脚功能被设置为复位功能。

➢所有I/O管脚被设置为输入。

➢外围模块被初始化,其寄存器值为相关手册上注明的默认值。

➢状态寄存器(SR)复位。

➢看门狗激活,进入工作模式。

➢程序计数器(PC)载入0xFFFE(0xFFFE为复位中断向量)处的地址,微处理器从此地址开始执行程序。

4.典型的复位电路有以下3种:(1)由于MSP430具有上电复位功能,因此,上电后只要保持RST/NMI(设置为复位功能)为高电平即可。

通常的做法为,在RST/NMI管脚接100kΩ的上拉电阻,如图1-5(a)所示。

(2)除了在RST/NMI管脚接100kΩ的上拉电阻外,还可以再接0.1μF的电容,电容的另一端接地,可以使复位更加可靠。

如图1-5(b)所示。

(3)由于MSP430具有极低的功耗,如果系统断电后立即上电,则系统中电容所存储的电荷来不及释放,此时系统电压不会下降到最低复位电压以下,因而MSP430不会产生上电复位,同时RST/NMI管脚上也没有足够低的电平使MSP430复位。

这样,系统断电后立即上电,MSP430并没有被复位。

为了解决这个问题,可增加一个二极管,这样断电后储存在复位电容中的电荷就可以通过二极管释放,从而加速电容的放电。

二极管的型号可取1N4008。

如图1-5(c)所示。

系统时钟振荡器:1.DCO 数控RC振荡器,位于芯片内部。

不用时可以关闭2.LFXT1 可以接低频振荡器,典型的如32.768kHz的钟表振荡器,此时振荡器不需要接负载电容。

430单片机个人总结

430单片机个人总结

430单片机个人总结一 时钟部分(msp430f149单片机)1、关于XT2图12、关于XT1图2 3、关于MCLKPUC 信号之后,MCLK 来源于DCO 时钟信号(可以不设置,系统PUC 之后会有一个默认值),如果要设置MCLK 来源于XT1或者XT2,步骤如下:1、打开需要的晶体振荡器;(作为MCLK 的时钟源,而不是默认的DCO )2、清除OFIFG 标志位;XT2Sx=11、XT2OFF=0时,XT2来源于外部时钟信号,也就是可以直接在XT2IN 管脚上施加一个时钟信号,而不需要在XT2IN 和XT2OUT 上加时钟源 当在XIN 和XOUT 两端加低频晶振时,晶振之间可以不加电容,而通过单片机内部给其配置电容 当在XIN 和XOUT 两端加高频晶振时,晶振之间需要配置电容当LFXT1Sx=11、OSCOFF=0时,XIN 和XOUT 之间可以不加晶振,只需在XIN 管脚上施加一个时钟信号既可3、延时50us;4、测试OFIFG标志位。

若OFIFG=0,说明设置成功;若OFIFG=1,设置未成功,重复2~3步骤;程序如下BCSCTL1 &=~XT2OFF; // XT2 is ondo{IFG1 &=~OFIFG; // clear OSCFault flagfor(i=255;i>0;i--); // time for flag to set}while((IFG1 & OFIFG));BCSCTL2 |=SELM_2+DIVM_3; //f(mclk)=f(XT2)/8;二IO口部分(msp430f149单片机)430单片机的IO口都是复用的,除了做普通IO口用外,还可以作为片内外设用,图3所示为msp430g2553单片机的P1.6、P1.7管脚说明,可以发现P1.6管脚除了作为普通的IO 之外,还可以作为TA0.1、TCLK等用,那么应该如何选择这些管脚的功能呢?1、给寄存器PxSEL(图4)赋值,确定管脚是作为IO用,还是作为片内外设用,当PxSEL=0时,用作IO,当PxSEL=1时,用作片内外设;2、给寄存器PxDIR(图5)赋值,确定管脚的输出方向(作为IO时,用来设置是input还是output;作为片内外设时,用来设置是输出的片内外设还是输入的片内外设,如P1.6管脚用作片内外设时,TA0.1是输出,CA6是输入),当PxDIR=0时,用作输入,当PxDIR=1时,用作输出;图3图4三中断函数标准中断函数的格式为;#pragam vector=中断向量__interrupt void ISR(void){用户程序;}四低功耗模式进入低功耗程序模式为(以进入低功耗LPM0模式为例):_EINT();LPM0;以上两句程序等价为:_BIS_SR(LPM0_bits + GIE);那么退出低功耗程序为:LPM0_EXIT;五Flash操作(msp430f149单片机)Flash被划分成main memory和information memory,两者没有太大区别,只是两者的容量和物理地址不同。

msp430学习的深度解析和总结

msp430学习的深度解析和总结

msp430学习的深度解析和总结一、MSP430开发环境建立1.安装IAR dor msp430 软件,软件带USB仿真器的驱动。

2.插入USB仿真器,驱动选择安装目录的/drivers/TIUSBFET3.建立一个工程,选择"option"选项,设置a、选择器件,在"General"项的"Target"标签选择目标器件b、选择输出仿真,在"Linker"项里的"Output"标签,选择输出"Debug information for C-SPY",以输出调试信息用于仿真。

c、若选择"Other",Output下拉框选择"zax-m"即可以输出hex文件用以烧录,注意,此时仿真不了。

d、选择"Debugger"项的"Setup"标签,"Driver"下拉框选择"FET Debugger"e、选择"FET Debugger"项的"Setup"标签,"Connection"下拉框选择"Texas Instrument USB-I"4.仿真器的接口,从左到右分别为" GND,RST,TEST,VCC"二、IO口数字输入/输出端口有下列特性:每个输入/输出位都可以独立编程。

允许任意组合输入、输出。

P1 和P2 所有8 个位都可以分别设置为中断。

可以独立操作输入和输出数据寄存器。

可以分别设置上拉或下拉电阻。

在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。

[MSP430学习笔记] 430加密总结

[MSP430学习笔记] 430加密总结

MSP430单片机常见加密总结1、为什么要加密,如何加密?当您的产品推向市场的时候,您的竞争对手就开始盯上它了,如果您的产品硬件很容易被模仿,而且您使用的MSP430单片机没有被加密的话,那么您辛辛苦苦的劳动成功就很容易成为您竞争对手的产品了,使用JTAG调试工具FET虽然可以将程序下载到芯片内部,但只有使用专业编程器能够防止程序被窃取。

2、JT AG、BSL、BOOTLOADER、熔丝的区别和关系是什么?JTAG接口能够访问MSP430单片机内部所有资源,通过JTAG可以对芯片进行程序下载、代码调试、内存修改等等,通过JTAG还能烧断加密熔丝,熔丝一旦被烧断,JTAG接口绝大部分功能失效,就再也不能通过它进行编程了。

BSL接口是利用芯片内部驻留的bootloader程序实现的自编程,通过特定的时序使得CPU进入bootloader代码断,然后利用每个MSP430芯片内部都有的Timer A构成一个软件串口来与上位机通讯,这样可以将代码下载到芯片内部。

实现BSL除了JTAG接口的一些引脚外,还需要用到两个TA0功能引脚,因此在设计产品时如果需要加密,则应该考虑将这两个引脚也连出来。

注意:A、要烧断熔丝(加密)必须使用JTAG接口;B、烧断熔丝后只能通过BSL 或者用户代码来实现编程更新。

3、BSL的验证密码是怎么回事?BSL也能读出芯片内部的代码,这样可以实现编程后的校验等功能。

通过BSL擦除所有Flash信息时不需要验证密码,但是要进一步操作,就得输入32字节密码进行验证。

BSL 的协议规定这32字节密码为芯片FLASH区域的最高32字节,也就是程序的16个中断向量,如果您拥有这段程序的最后32字节,就能通过BSL将芯片内部所有代码读取出来。

4、为什么要使用高级加密?32字节的密码看似几乎完全没可能使用穷举法来实现破解,但是各位别忘了,msp430的16个中断向量未必每一个都用到了,没用到的中断向量为0xffff,如果您的程序只用到了复位向量,那么破解者只需尝试最多32768次(中断向量为偶数,所以除以2)就能将其破解,另外,如果芯片本身Flash容量较小,比如4K字节,那么破解者只需尝试最多2K次就能将其破解。

430定时器学习心得(含五篇)

430定时器学习心得(含五篇)

430定时器学习心得(含五篇)第一篇:430定时器学习心得Msp430单片机一共有5种类型的定时器。

看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bitTimer/Counter)、定时器A(Timer_A)和定时器B (Timer_B)。

但是这些模块不是所有msp430型号都具有的功能。

1、看门狗定时器(WDT)学过电子的人可能都知道,看门狗的主要功能就是当程序发生故障时能使受控系统重新启动。

msp430中它是一个16位的定时器,有看门狗和定时器两种模式。

2、基本定时器(Basic Timer1)基本定时器是msp430x3xx和msp430F4xx系列器件中的模块,通常向其他外围提供低频控制信号。

它可以只两个8位定时器,也可以是一个16位定时器。

3、8位定时器/计数器(8-bit Timer/Counter)如其名字所示,它是8位的定时器,主要应用在支持串行通信或数据交换,脉冲计数或累加以及定时器使用。

4、16位定时器A和B定时器A在所有msp430系列单片机中都有,而定时器B在msp430f13x/14x和msp430f43x/44x等器件中出现,基本的结构和定时器A是相同的,由于本人最先熟悉并应用的是定时器A所以在这里就主要谈一下自己对定时器A的了解和应用。

定时器A是16位定时器,有4种工作模式,时钟源可选,一般都会有3个可配置输入端的比较/捕获寄存器,并且有8种输出模式。

通过8种输出模式很容易实现PWM波。

定时器A的硬件电路大致可分为2类功能模块:一:计数器TAR计数器TAR是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断TAIFG。

二:比较/捕获寄存器CCRX如何实现定时功能呢?这就要靠三个比较/捕获寄存器了(以后用CCRx表示)。

当计数器TAR的计数值等于CCRx时(这就是捕获/比较中的比较的意思:比较TAR是否等于CCRx),CCRx单元会产生一个中断。

MSP430单片机编程思想总结(一)

MSP430单片机编程思想总结(一)

MSP430单⽚机编程思想总结(⼀)
1.主函数main()中;只调⽤初始化函数和执⾏后台程序;
2.中断服务⼦程序函数中不要去写“实质性”的代码。

只调⽤事件检测函数,提⾼程序的可读性
3.WDT 可以作为节拍定时器在单⽚机编程中具有重要意义;定时扫描轮询⽅法可以解决⼤量CPU阻塞问题
4.事件函数对于理解程序意图⾮常重要;集中放置“事件检测/处理”⽽不是跟着满世界“乱蹦的”中断去找事件函数,是⼗分⾼效的。

5.全局变量的使⽤要⾮常谨慎,全局变量往往是联系各关键函数的纽带,因此集中放置全局变量也是增加程序可读性的常⽤做法。

6.除了读写寄存器(包括改写IO输出),数学和逻辑运算外,CPU⼲其他的事例如长延时,死循环类型的查询属于阻塞CPU的⾏为,应该坚决避免
7.当CPU确定⽆任务需要执⾏时,休眠是最佳选择,正确运⽤各种等级的休眠(可唤醒)可以极⼤地降低单⽚机的功耗;
8.事件类函数命名为“xxx_Event”;全局变量“xxx_Global”单列⽂件⼗分有必要。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSP430学习总结前言这次主要看的资料是MSP430F425型号的,与MSP430F169有点区别,但由于MSP430单片机采用模块化结构,在不同型号的单片机中,同一种模块的使用方法和寄存器都是相同的。

下面会对它们的功能和区别加以说明。

一、MSP430单片机的特点1、我觉得MSP430最大的特点就是超低功耗,430之所以能够在低功耗的条件下运行,主要是由于引入了“时钟系统”的概念,和采用模块化结构。

让CPU可以间歇性的工作,节省功耗。

在MSP430单片机中,通过时钟配置可以产生3种时钟:MCLK:主时钟,MCLK是专门为CPU运行提供的时钟,MCLK配置的越高,CPU执行的速度就越快。

一旦关闭MCLKE,CPU 就停止工作,所以在超低功耗中通过间接开启MCLK的方式降低功耗。

SMCLK:子系统时钟,为单片机内部某些高速设备提供时钟,并且SMCLK是独立于MCLK的,关闭MCLK让CPU停止工作,子系统SMCLK开启,仍然可以使外设继续工作。

ACLK:活动时钟;ACLK一般是由32.768KHz晶振直接产生的低频时钟,在单片机运行时一般不关闭,和定时器使用间接唤醒CPU。

时钟系统对于3种时钟不同程度的关闭,就可以进入不同的低功耗模式(低功耗在下面讨论)。

2、MSP430单片机采用模块化结构,每一种模块都具有独立而完整的结构,这样就可以单独开启或者关闭某些模块,只需要激活某些使用的模块,以节省电力。

3、MSP430单片机的内核是16位RISC处理器,其运算能力和速度都具有一定的优势。

MSP430还有其它的一些优势在这里就不一一列举了。

二、MSP430单片机的内部资源1、I/O口寄存器PxIN: Px口输入寄存器PxOUT: Px口输出寄存器PxDIR : Px口方向寄存器 0=输入 1=输出PxSET: Px口第二功能选择寄存器 0=普通I/O 1=第二功能使用总结:以上的4个寄存器是所有I/O都具有的,在使用I/O 口之前首先要设置PxDIR,对于要使用第二功能的还要设置PxSET下面介绍的是430中P1,P2口引发中断需要设置的寄存器(MSP430单片机只有P1、P2口能引发中断)PxIE : Px口中断允许寄存器 0=不允许 1=允许PxIES : Px口中断沿选择寄存器 0=上升沿 1=下降沿PxIFG : Px口中断标志位寄存器 0=中断条件不成立1=中断条件曾经成立(说明:无论中断是否被允许,也不论是否正在执行中断服务程序,只要I/O满足中断条件,PxIFG的相应位就会置1,只能通过软件清除,这个可以用来判断哪一位I/O发生了中断,也不会漏掉每一次中断。

使用总结:在使用I/O中断之前,需要将I/O设置成输入状态,并允许I/O的中断。

在通过PxSET设置触发方式。

程序框架:#include<msp430x16x.h>void main(void) // 主函数{WDTCTL=WDTPW+WDTHOLD; //停止看门狗P1DIR &=~(BIT0+BIT1+BIT2); //P1.0、P1.1、P1.2设置为输入P1IES |=BIT0+BIT1+BIT2; // P1.0、P1.1、P1.2设置为下降沿中断P1IE |=BIT0+BIT1+BIT2; //允许 P1.0、P1.1、P1.2中断_EINT(); //允许总中断while(1){;}}#pragma vector=P0RT1_VECTOR // P1口中断源__interrupt void P1_ISR(void) // 声明一个中断服务程序,P1_ISR(){If(P1IFG&BIT0) //判断P1.0中断标志{………..………. //这里写P1.0的中断处理程序}If(P1IFG&BIT1) //判断P1.1中断标志{………..………. //这里写P1.1的中断处理程序}If(P1IFG&BIT0) //判断P1.2中断标志{………..………. //这里写P1.2的中断处理程序}P1IFG=0; // 清除P1所有中断标志位}2、低功耗模式MSP430系列单片机具有5种不同深度的低功耗休眠模式。

在空闲时,通过不同程度的休眠,将内部各个模块尽可能的被关闭,从而降低功耗。

低功耗模式0(LMP0):在此模式下,只有MCLK时钟被禁止,结果是关闭CPU,SMCLK和ACLK仍然有效,且SMCLK和ACLK之间的倍频关系仍然成立,相应的模块也会继续工作,CPU关闭后程序不在运行,直到被中断唤醒或者复位,所以进入任何一个低功耗模式之前必须设置好CPU的中断条件,等待被唤醒,否则程序将永远停止。

低功耗模式1(LMP1):在此模式下,不仅MCLK时钟被禁止,倍频环路也被关闭,结果CPU被关闭,ACLK仍有效,但是SMCLK和ACLK之间的倍频关系不在成立,SMCLK只能作为一个粗略的时钟来用。

低功耗模式2(LMP2):在此模式下,不仅MCLK时钟被禁止,DC发生器(数字时钟)也被关闭,仅打开倍频环路和ACLK,该模式一般不用,建议用更低功耗LMP3代替。

低功耗模式3(LMP3):在此模式下,只有ACLK打开,MCLK和SMCLK都被停止,该模式下功耗仅有1uA。

低功耗模式4(LMP4):在此模式下,ACLK,MCLK和SMCLK都被停止,单片机内部所有的模块都将停止工作,只能依靠外部中断唤醒CPU,该模式下功耗仅有0.1uA。

与低功耗相关的内部函数:__low_power_mode_0();或LPM0;// 进入低功耗模式0__low_power_mode_1();或LPM1;// 进入低功耗模式1__low_power_mode_2();或LPM2;// 进入低功耗模式2__low_power_mode_3();或LPM3;// 进入低功耗模式3__low_power_mode_off_on_exit(); // 退出时唤醒CPU3、Basic Timer基础定时器(MSP430F425有,而MSP430F169没有)Basic Timer基础定时器总共有5个控制位1、BTDIV:预分频选择 0=无预分频 1=256分频(位于BTCTL 寄存器)2、BTSSEL:时钟源选择 0=ACLK 1=SMCLK(位于BTCTL 寄存器)BTDIV=1时,该位无效,时钟选择为ACLK/256 3、BTHOLD:Basic Timer 停止 0=正常运行 1=停止运行(位于BTCTL寄存器)4、BTIPx:Basic Timer 中断频率选择(位于BTCTL寄存器)5、BTFREQx:设置Basic Timer 为LCD提供的刷新频率(位于BTCTL寄存器)Basic Timer中断1、BTIE:Basic Timer 中断允许位 0=禁止 1=允许(位于IE2寄存器)2、BTIFG:Basic Timer 中断标志位 0=无中断发生 1=中断发生(位于IE2寄存器)下面以一个程序框图来说明Basic Timer和低功耗模式/********************************************************** 要求是P1.5接有按键(按下为低电平),P2.0输出至LED, 当按键按下时LED亮,按键松开LED灭。

传统的程序可能就是CPU一直对I/O口扫描,这样耗电很大,看下面的程序利用Basic Timer和低功耗模式来做*****************************************************/ #include<msp430x16x.h>void main(void) // 主函数{WDTCTL=WDTPW+WDTHOLD; //停止看门狗P1DIR &=~BIT5; //P1.5设置为输入P2DIR |= BIT0; //P2.0设置为输出BTCTL=BT_ADLY_8 ; // Basic Timer时钟选为ACLK,设为8毫秒中断一次IE2 |=BTIE; //允许Basic Timer中断_EINT(); //允许总中断while(1){LMP3;//进入低功耗模式3,等待被唤醒/* If((P1IN&BIT5)==0)P2OUT |=BIT0; //按键按下,点亮LEDelseP2OUT &=~BIT0; //按键松开,关闭LED */}}#pragma vector=BASICTIMER_VECTOR // Basic Timer 中断源__interrupt void BT_ISR(void) //声明一个中断服务程序,BT_ISR(),8毫秒中断一次{If((P1IN&BIT5)==0)P2OUT |=BIT0; //按键按下,点亮LEDelseP2OUT &=~BIT0; //按键松开,关闭LED// __low_power_mode_off_on_exit(); // 退出时唤醒CPU} //退出中断保持休眠状态4、16位定时器Timer _A在MSP430单片机中都有一个16位定时器Timer _A(简称TA)用于精确定时、计数,在普通的定时/计数上还曾加了3路捕获/比较模块,能够在CPU不干预的情况下自动根据触发条件定时器计数值,或自动产生各种输出波形(如PWM调制、单稳态脉冲)Timer _A定时器分为两个部分:主计数器和比较/捕获模块。

主计数器负责定时,计数。

计数值(TAR寄存器的值)被送到各个比较/捕获模块中,它们无需CPU干预的情况下根据触发条件与计数器的值自动完成某些测量和输出功能,如PWM调制,测量脉宽、周期等应用。

Timer _A定时器中的主计数器相关的控制位都位于TACTL寄存器中,主计数器的计数值存放在TAR寄存器中。

每个比较/捕获模块还有一个独立的控制寄存器TACCTLx,以及一个比较/捕获值寄存器TACCRx(x=0、1、2),在一般定时应用中,TACCRx可以提供额外的定时中断触发条件,在PWM输出模式下,TACCRx用于设定周期与占空比,在捕获模式下,TACCRx存放捕获结果。

主计数器相关控制位TASSELx:Timer _A计数器的时钟源选择(位于TACTL寄存器)TASSEL_0:外部管脚 TASSEL_1:ACLKTASSEL_2: SMCLK TASSEL_3:外部管脚(取反)IDx:Timer _A计数器的预分频处理(位于TACTL寄存器)ID_0:无分频 ID_1:2分频ID _2:4分频 ID _3:8分频TACLR:Timer _A计数器清零控制位(位于TACTL寄存器)0=不清零 1=清零MCx:Timer _A计数器的计数模式(位于TACTL寄存器)MC_0:停止 MC_1:曾计数MC_2:连续曾计数 MC_3:曾-减计数(说明:曾计数就是每个时钟周期值TAR加1,当TAR值超过TACCR0寄存器的值时会自动清零,并且不存在初值装载问题,当TA中断被允许的时候,回引发中断;连续曾计数就是TAR加1一直加到0xFFFF 后清零,连续曾计数一般在捕获模式下用的较多,曾-减计数是TAR 从0开始曾加到TACCR0,然后自动切换到递减模式,减到0后又恢复递增,从1减到0时产生中断)TAIFG:Timer _A计数器溢出标志(中断标志)(位于TACTL寄存器) 0=未发生溢出 1=曾发生溢出Timer _A定时器的捕获模块在捕获模式下,用某个指定的管脚(TAx管脚)的输入电平跳变来触发捕获电路;将此刻主计数器的值自动的保存到相应的捕获值寄存器中,此过程无需CPU干预,可用于测频率、周期,占空比等CAP:Timer _A比较/捕获模块工作模式选择(位于TACCTL0/1/2寄存器)0=比较模式 1=捕获模式CCISx:Timer _A捕获模块的捕获源选择(位于TACCTL0/1/2寄存器)CCIS_0:CCIxA管脚 CCIS_1:CCIxB管脚CCIS_2:GND CCIS_3:VCCCMx: Timer _A捕获模块的捕获触发沿选择(位于TACCTL0/1/2寄存器)CM_0:禁止捕获 CM_1:上升沿CM_2:下降沿 CM_3:上升沿活下降沿COV:Timer _A捕获模块捕获溢出标志(位于TACCTL0/1/2寄存器) 0=未发生溢出 1=发生了溢出SCS:Timer _A捕获模块的同步捕获控制位(位于TACCTL0/1/2寄存器)0=异步捕获 1=同步捕获/********************************************************** 要求捕获3路信号,P1.0输入的方波上升沿捕获,P1.2输入的方波下降沿捕获,P2.0输入的方波上下沿捕获,主计数器用ACLK做时钟,连续计数模式**********************************************************/ TACTL |=TASSEL_1+ID_0+MC_2; // 主计数器ACLK做时钟,无分频,连续计数模式TACCTL0 |=CAP+CCIS_0+CM_1+SCS; // 捕获模式0,外部输入,上升沿同步捕获TACCTL1 |=CAP+CCIS_0+CM_2+SCS; // 捕获模式1,外部输入,下降沿同步捕获TACCTL2 |=CAP+CCIS_0+CM_3+SCS; // 捕获模式2,外部输入,双沿同步捕获P1DIR &=~(BIT0+BIT2); // P1.0与P1.2方向设为输入P2DIR &=~ BIT0; // P2.0方向设为输入P1SEL |=(BIT0+BIT2);// 将P1.0与P1.2的第二功能激活P2SEL |= BIT0;// 将P2.0的第二功能激活Timer _A定时器的比较模块OUTMODEx: Timer _A比较模块的输出模式控制(位于TACCTL0/1/2寄存器)(说明:一共有8种输出模式,在这里不一一列出。

相关文档
最新文档