CCR0的值为计数器最大值,CCRX为到该值翻转电平。
void INITIMERA(unsigned int Value)
{
TACTL = TASSEL_1 + TACLR+ID_0; /* ACLK / 1 + Timer_A clear.*/
TACCTL0 &= ~CCIE; /* 关闭中断-CCIFG flag Interrupt disabled*/
TACCTL0 &= ~CCIFG; /* 将中断标志清0*/
TACCTL2 |= OUTMOD_7; /* 111 Reset/set:当计时器计算到TACCRx值时,输出0。当计时器计数为TACCR0值时,输出1。*/
TACTL &= ~MC_3; /* 选择模式0:停止模式*/
P2DIR |= BIT0; /*P2.1为TACCR2输出引脚*/
P2SEL |= BIT0; /*若位=1:为引脚选择了外围模块功能 */
TACCR0 = Value-1;
TACCR2 = Value/2;
TACTL &= ~MC_2; /*将bit5清0*/
TACTL |= MC_1; /*bit4写1,设置TIMERA的工作模式为向上计数模式*/
}