标题: MSP430单片机时钟错误中断 程序 [打印本页]

作者: 51hei单片    时间: 2016-3-14 20:18
标题: MSP430单片机时钟错误中断 程序
本程序是《MSP430系列单片机系统工程设计与实践》书里面的源码,(包含工程文件 )完整例程下载:http://www.51hei.com/bbs/dpj-46245-1.html


关于本程序的详细解说大家可以点击上图下载电子书
时钟错误中断代码如下:
  1. #include "msp430x42x.h"             /*430单片机寄存器头文件*/
  2. void main( void )                       // 主程序
  3. { int i;
  4.   WDTCTL=WDTPW+WDTHOLD;  //停止看门狗
  5.   FLL_CTL0|=XCAP18PF;          //配置晶振负载电容
  6.   FLL_CTL0 &=~ XTS_FLL;                     // 设置振荡器类型为低频  (可省略)
  7.   FLL_CTL0 |=  XCAP18PF;                     // 设置晶振匹配电容18pF左右
  8.   SCFQCTL = SCFQ_2M;                          // 倍频至2MHz(64倍频,2.09MHz)
  9.   SCFI0 |= FN_2 ;                              // DCO中心频率2MHz左右(1.3~12.1 MHz)
  10.   P2DIR |= BIT0;                        // P2.0设为输出
  11.   P2OUT &=~BIT0;                        // P2.0设为低电平(LED灭)
  12.   for(i=0;i<100;i++);                   // 略延迟,等待倍频器输出时钟稳定
  13.   IFG1 &=~ OFIFG;                       // 清除上电过程引起时钟错误标志
  14.   IE1|=OFIE;                            // 打开时钟错误中断
  15.   
  16.   while(1)
  17.   {
  18.      //...do some thing...              // 正常工作的程序                           
  19.   }
  20. }

  21. #pragma vector = NMI_VECTOR                  //NMI中断源
  22. __interrupt void NMI_ISR(void)        //声明一个中断服务程序,名为NMI_ISR()
  23. {
  24.   if(IFG1 & OFIFG)                    //如果是时钟错误引发的NMI中断   
  25.   {
  26.     P2OUT |= BIT0;                    //将P2.0置高(点亮LED)
  27.     IFG1 &=~ OFIFG;                   //清除时钟错误标志
  28.   }
  29. }
复制代码








欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1