|
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件 )完整例程下載:http://www.zg4o1577.cn/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; //清除時鐘錯誤標志
- }
- }
復制代碼
|
|