MSP430 定时器TB中断应用实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MSP430 定时器TB中断应用实例
msp430定时器中断,实现功能:利用定时器TB0的中断实现板上led灯得闪烁。
TA和TB的设置相似,需要设置的寄存器有:
1、TBR:定时计数器主体,对定时计数器进行初始值设置。
2、TBCTL:控制寄存器,对定时器的各个属性进行设置,各位如图所示,(图中是TA的控制寄存器,把A改成B就是了)
TBSSELx是选择定时器时钟输入源,一般设置为2取系统时钟。
IDx是对输入时钟进行分频,0不分频,1为2分频,2为4分频,3为8分频
MCx为计数模式控制位,0为停止模式,1为增基数模式,2为连续计数模式,3为增/减计数模式
3、TBCCR0寄存器用于设置比较值,例如增加计数模式时,当TBR中的值增加到TBCCR0中的值时,产生中断。
程序代码:
#include "msp430.h"
#define led P1OUT
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0x01;
TBR = 0;//设置计数器初值
TBCTL |= TBSSEL_2|0xc0|MC_1;//对寄存器TBCTL进行设置,TBSSEL_2为选择MCLK系统时钟,0xc0为8分频,MC_1为增计数模式
TBCCR0 = 0xfffd;//设置比较值,当TBR中的值增加到TBCCR0时,产生中断。TBCCTL0 &= ~CAP;//设置为比较模式
while(1)
{
led = 0x01;
do{;}
while(!(TBCCTL0 & CCIFG));//没有中断标志时进行空操作
TBCCTL0 &= 0xfffe;//对中断标志进行软件清零
led = 0x00;
do{;}
while(!(TBCCTL0 & CCIFG));
TBCCTL0 &= 0xfffe;
}
//return 0;
}