今天几乎就纠结在这TA0和TA1的设置中了。手册上对TA1根本就没有任何提及。可是在仿真的时候,TA1拥有和TA0完全一样的寄存器,而且头文件里对它们都有定义。可是这两个却总是不能同时运行。同样的程序,TA0能用,修改成TA1就不行了。下面这个程序就是这样,TA0、TA1都可以计数,但是就TA0可以进中断,TA1就是不行。我真是非常的纳闷啊。求指教啊!
#include<msp430g2553.h>
#define uint unsigned int
#define uchar unsigned char
void main()
{
volatile uint i;
WDTCTL = WDTPW + WDTHOLD;
// BCSCTL3 |= LFXT1S_2;
// IFG1 &= ~OFIFG;
// __bis_SR_register(SCG1 + SCG0);
BCSCTL2 |= DIVS_3;
P1DIR |= BIT0 + BIT6;
P1OUT &= ~(BIT0 + BIT6);
CCR0 = 4000;
CCTL0 = CCIE;
TACTL = TASSEL_2 + MC_1 + ID_3;
TA1CCR0 = 5000;
TA1CCTL0 = CCIE;
TA1CTL = TASSEL_2 + MC_1 + ID_3;
// while(1);
_BIS_SR(LPM0_bits + GIE);
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer0_a0(void)
{
P1OUT ^= BIT0;
}
#pragma vector = TIMER0_A1_VECTOR
__interrupt void Timer0_a1(void)
{
P1OUT ^= BIT6;
}