|
回复 5楼 wstt 的帖子
#include
void int_clk();//时钟初始化子程序声明
void int_timer();//定时器初始化程序声明
void int_timer()
{
TBCTL=TBSSEL1+TBCLR+ID0+ID1+MC1+TBIE+CNTL_0+TBCLGRP_0;//选择SMLK的8分频作为定时器的时钟,定时器为增加模式,并且使能中断
TBCCR0=9999;//定时器计数值为9999+1,即定时10ms
}
//******************************************
//子程序名:int_clk()
//功能: 时钟初始化子程序
void int_clk()
{
unsigned char i;//定义局部变量i
BCSCTL1&=~XT2OFF;//打开高频晶体震荡器
BCSCTL2|=SELM1+SELS;//MCLK和SMCLK的时钟源都选择XT2CLK,即都是8MHZ
do//(至少执行一次DO循环)
{
IFG1&=~OFIFG;//清除晶体震荡出错标志位
for(i=0;i<100;i++)
_NOP();//简单的延时等待
}while((IFG1&OFIFG));//判断晶体震荡是否出错,如果还是出错,则继续执行DO循环
IFG1&=~OFIFG;
}
int main(void)
{int_clk();
int_timer();
WDTCTL = WDTPW + WDTHOLD;
P2DIR|=BIT0;
while(1);
}
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B(void)
{
P2OUT^=BIT0;
} 为什么这个程序就是进入不了中断啊。 |
|