This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
#include <msp430x24x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 output
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
//_EINT();
//_BIS_SR(LPM0_bits ); // Enter LPM0w/interrupt + GIE
LPM0;
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01; // Toggle P1.0
CCR0 += 50000; // Add Offset to CCR0
}
加入_EINT();调试时GIE=1;灯闪烁;
屏蔽_EINT();执行LPM3;调试时GIE不为0,但仿真却会出现灯闪烁;
屏蔽_EINT();和LPM3;调试时GIE不为0,且灯不会闪烁;
当屏蔽_EINT()及中断中P1OUT ^= 0x01时; 执行LPM3; 灯不闪烁。
突然觉得是不是我仿真图的问题???
用的是proteus仿真
谢谢
恩..........怎么说咧,我知道不开GIE位,不可屏蔽中断理应不会执行,在调试界面GIE也没置1,但在仿真图中
灯却闪烁了,可能是我仿真图有问题吧?!!! 目前是不知道哪里出了问题
谢谢
和你的仿真有关系吧,把程序下载到MCU中,拔掉仿真器直接上电运行再看能不能闪烁,从程序上分析,没有_EINT();是不能进入中断的,而且拔掉仿真器运行的结果才是真实结果。