| /********************************************
 函数名称:Clock_Init
 功能    :系统时钟初始化
 参数    :无
 返回值  :无
 其它    :MCLK = 12MHz, SMCLK = 1MHz
 **********************************************/
 void Clock_Init(void)
 {
 u16 time = 10;                   //定义一个常数,
 //外部时钟在这个时间内如果还是不能起振则选择内部时钟
 BCSCTL1 &= ~XT2OFF;              //开启XT2振荡器
 BCSCTL3 |= XT2S_2 + LFXT1S_2;
 do
 {
 IFG1 &= ~OFIFG;                //清除振荡器失效标志
 __delay_cycles(100);           //在外部晶振还没有起振时,时钟来源于内部大概1MHz的DCO
 }
 
 while ((IFG1 & OFIFG) && --time);//查询时钟切换成功
 if (time == 0)                   //外部时钟有问题
 {
 BCSCTL1 |= XT2OFF;             //关闭XT2振荡器
 }
 else                             //外部时钟正常起振
 {
 BCSCTL2 = 0X80;                //MCLK的时钟源为XT2,分频系数为1
 //SMCLK的时钟源为内部DCO,分频系数为1
 }
 }
 |