|
本程序是《MSP430系列单片机系统工程设计与实践》书里面的源码,(包含工程文件 )完整例程下载:http://www.51hei.com/bbs/dpj-46245-1.html
关于本程序的详细解说大家可以点击上图下载电子书
时钟错误中断代码如下:
- #include "msp430x42x.h" /*430单片机寄存器头文件*/
- void main( void ) // 主程序
- { int i;
- WDTCTL=WDTPW+WDTHOLD; //停止看门狗
- FLL_CTL0|=XCAP18PF; //配置晶振负载电容
- FLL_CTL0 &=~ XTS_FLL; // 设置振荡器类型为低频 (可省略)
- FLL_CTL0 |= XCAP18PF; // 设置晶振匹配电容18pF左右
- SCFQCTL = SCFQ_2M; // 倍频至2MHz(64倍频,2.09MHz)
- SCFI0 |= FN_2 ; // DCO中心频率2MHz左右(1.3~12.1 MHz)
- P2DIR |= BIT0; // P2.0设为输出
- P2OUT &=~BIT0; // P2.0设为低电平(LED灭)
- for(i=0;i<100;i++); // 略延迟,等待倍频器输出时钟稳定
- IFG1 &=~ OFIFG; // 清除上电过程引起时钟错误标志
- IE1|=OFIE; // 打开时钟错误中断
-
- while(1)
- {
- //...do some thing... // 正常工作的程序
- }
- }
- #pragma vector = NMI_VECTOR //NMI中断源
- __interrupt void NMI_ISR(void) //声明一个中断服务程序,名为NMI_ISR()
- {
- if(IFG1 & OFIFG) //如果是时钟错误引发的NMI中断
- {
- P2OUT |= BIT0; //将P2.0置高(点亮LED)
- IFG1 &=~ OFIFG; //清除时钟错误标志
- }
- }
复制代码
|
|