久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: MSP430單片機臨界代碼 [打印本頁]

作者: 51hei單片    時間: 2016-3-14 19:54
標題: MSP430單片機臨界代碼
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件(例3.9.10) )完整例程下載:http://www.zg4o1577.cn/bbs/dpj-46245-1.html


關于本程序的詳細解說大家可以點擊上圖下載電子書

  1. #include <msp430x42x.h>

  2. float Val=123.4;
  3. char Flag=0;

  4. unsigned int SR_Val;
  5. unsigned char DINT_Count=0;
  6. void EnterCritical()                                        /*進入臨界代碼區*/
  7. {
  8. if(DINT_Count==0)                                         // 只對最外層操作。
  9. {
  10. SR_Val=__get_SR_register();   // 保存當前中斷狀所在的態寄存器
  11. _DINT();                                                // 關中斷
  12.               }
  13.     DINT_Count ++;                                                // 嵌套層數計數+1
  14. }

  15. void ExitCritical()                                         /*退出臨界代碼區*/
  16. {
  17.   DINT_Count--;                                                // 嵌套層數計數-1
  18. if((DINT_Count==0)&&(SR_Val & GIE)) _EINT();  // 只對最外層操作。
  19. }                                                                                                  // 根據保存的狀態恢復中斷
  20. /*

  21. void EnterCritical(unsigned int *SR_Val)
  22. {
  23.    *SR_Val = __get_SR_register();//保存中斷狀態
  24.    _DINT();
  25. }

  26. void ExitCritical(unsigned int *SR_Val)
  27. {
  28.    if(*SR_Val & GIE)   _EINT();  //恢復中斷狀態
  29. }
  30. */


  31. void main( void )
  32. {  float Temp;
  33.    unsigned int GIE_Val;
  34.    WDTCTL= WDTPW +WDTHOLD;
  35.    P2OUT=0;
  36.    P2DIR|=BIT0;           // P2.0指示燈
  37.    BTCTL = BT_ADLY_250;   // 中斷周期250ms
  38.    IE2 |= BTIE;                  // 允許BasicTimer中斷
  39.    _EINT();                  // 允許總中斷
  40.    while(1)
  41.    {
  42.      EnterCritical();
  43.      Temp=Val;
  44.      ExitCritical();
  45.      if((Temp!=123.4)&&(Temp!=56.78)) //如果既非123.4也非56.78
  46.      {   
  47.        P2OUT|=BIT0;                   // 才會執行到這一句(亮燈)
  48.      }   
  49.    }
  50. }

  51. #pragma vector = BASICTIMER_VECTOR        // BasicTimer定時器中斷(1/4秒)
  52. __interrupt void BT_ISR(void)               //
  53. {
  54.    Flag^=1;
  55.    if(Flag) Val=123.4;                  // Val在123.4與56.78之間切換
  56.    else     Val=56.78;
  57. }
復制代碼








歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美精品在线免费观看 | 久久久久国产一区二区三区四区 | www.日日夜夜 | av看片网站| 99久久免费精品国产男女高不卡 | 亚洲一区视频在线 | 亚洲成人免费视频在线 | 射久久 | 中文字幕一级 | 成人免费在线小视频 | 欧美视频成人 | 国产欧美日韩综合精品一区二区 | 成人a视频片观看免费 | 欧美成人精品一区二区三区 | 精品国产18久久久久久二百 | 欧美福利视频 | 国产日韩欧美另类 | 亚洲欧美日本国产 | 欧美精品一区二区三区在线 | 久久国产精品免费一区二区三区 | 亚洲精品1区2区3区 91免费看片 | 成人精品国产一区二区4080 | a欧美 | 久久高潮| 四虎影视免费观看 | 久久99这里只有精品 | 国产欧美日韩在线观看 | 欧美成人一区二区 | 亚洲毛片在线 | 久久精品视频一区二区三区 | 自拍偷拍精品 | 国外成人在线视频 | 亚洲精品观看 | 天天操天天射天天舔 | 免费在线观看黄网站 | 中文字幕亚洲精品 | 午夜精品久久久久久久久久久久久 | 久久精品一区二区 | 欧美另类视频在线 | 国产一区欧美 | 中文字幕在线精品 |