#include <msp430x44x.h>
int y;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
TACTL=TASSEL1+TACLR+TAIE;//TBCTL=TBSSEL1+TBCLR+TBIE;
TACCR0=100;//TBCCR0=100;
TACTL|=MC0;//TBCTL|=MC0;
_EINT();
while(1);
}
#pragma vector=TIMERA1_VECTOR//#pragma vector=TIMERB1_VECTOR
__interrupt void w(void)
{
y=TAIV;// y=TBIV;
}
这段程序在IAR Embedded Workbench环境中软件仿真是可以进入中断的,但是仿此,将定时器A改为定时器B,即将上述程序中具有双斜杠的的语句,用双斜杠后面的语句代替前面的指令。仿真根本不进入中断。这是什么原因呢?
user3587240:
那里应该不是TACTL=TASSEL1+TACLR+TAIE,,应该是 TACTL=TASSEL1+TACLR; TACCTL0 = CCIE;因为你TACCR0 = 100 此时触发方式是TACCR0 CC IFG 触发,而TAIE 是记满到0FFFFh 触发,TAIFG 触发的。所以你把 TACTL=TASSEL1+TACLR + TAIE;这句换成TACTL=TASSEL1+TACLR; TACCTL0 = CCIE;这2句再试一下,
仅供参考
Lina Lian:
tianm 21ic,
MSP430Ware中有专门针对Timer_B的code example. 你可以试试附件中的例子。
Lina Lian:
tianm 21ic,
另外,你本身关于Timer-A的代码是想实现什么功能啊?