//例程描绘:运用守时器守时功用,完成P1.0方波输出。
#include <msp430x14x.h>
{
WDTCTL = WDTPW + WDTHOLD; //中止看门狗WDT,不运用内部看门狗守时器。
P1DIR |= 0x01; //设置P1.0口方向为输出。
CCTL0 = CCIE; //设置捕获/比较操控寄存器中CCIE位为1,CCR0捕获/比较功用中止为答应。
CCR0 = 50000;//捕获/比较操控寄存器CCR0初值为5000。
TACTL = TASSEL_2 + MC_2; //设置守时器A操控寄存器TACTL,使时钟源挑选为SMCLK辅佐时钟。
_BIS_SR(LPM0_bits + GIE); //进入低功耗形式LPM0和开中止
}
//守时器A 中止服务程序区
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01; //P1.0取反输出
CCR0 += 50000; //从头载入CCR0捕获/比较数据寄存器数据
}
//例程描绘:运用守时器守时功用,完成P1.0方波输出。
// 需求留意的是守时器中止程序,选用向量查询方法。
#include
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 中止看门狗WDT
P1DIR |= 0x01; // 设置P1.0口方向为输出。
TACTL = TASSEL_2 + MC_2 + TAIE; // 时钟源挑选为SMCLK,挑选计数模式,守时器中止开
_BIS_SR(LPM0_bits + GIE); //进入低功耗形式LPM0和开中止
}
// Timer_A3 中止向量(TAIV)处理
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV )
{
case 2: break; //CCR1不运用
case 4: break; //CCR2不运用
case 10: P1OUT ^= 0x01; //溢出
break;
}
}