#include<msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char
uint x=0;
void main()
{
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
uint i=0;
BCSCTL1&=~XT2OFF;//打开XT2晶体振荡器
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for(i = 0Xff;i > 0;i--); // 稳定时间
}
while((IFG1 & OFIFG));
BCSCTL2|=SELM_3;//MCLK 时钟源为 XT2CLK,不分频
TACTL=TASSEL_2+TACLR+MC0;//定时器A选用MCLK,增计数模式不分频,定时器清除
CCTL0=CCIE;//比较中断位开启
CCR0=35534;//起始数值
P3DIR|=0xFF;
P3OUT=0xAA;
_EINT();
while(1);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A ()
{
x++;
if(x==10)
{
P3OUT^=0xff;
x=0;
}
}
用的是msp430f149,做一个一闪一闪的灯,但是结果发现中断时间不对,应该没能成功开启xt2,甚至屏蔽BCSCTL1&=~XT2OFF这一句闪灯频率也没有变化这是为什么呢?是程序哪出错了吗