找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3120|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于MSP430的中斷和查詢方式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:186516 發(fā)表于 2017-4-6 00:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
MSP430F5529的芯片使用按鍵S2,以查詢方式控制LED1:按下S2,LED1開(kāi)始以1Hz的頻率開(kāi)始閃爍,再次按下S2,LED1熄滅;同時(shí),使用按鍵S1以中斷方式,控制LED1的閃爍或熄滅。這個(gè)可以用選擇語(yǔ)句吧 但是 我就不知道中斷函數(shù)下面又有聲明 我想用switch語(yǔ)句 但是現(xiàn)在只能寫成這個(gè)樣子了 接下來(lái)應(yīng)該怎么辦呢 拜托各位大神了

  1. #include<msp430.h>


  2. #define OSC 1000000


  3. #define u8 unsignedchar


  4. #define u16 unsignedshort


  5. #define S1 (P1IN&BIT7)


  6. #define S2 (P2IN&BIT2)


  7. u8 led_flash;





  8. void GPIO_init(void);


  9. void delay_ms(u16 time);


  10. /*


  11. * main.c


  12. */


  13. void main(void)


  14. {


  15.    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer


  16.    GPIO_init();


  17.    _BIS_SR(GIE);


  18.    P1OUT |= BIT0;


  19.    while(1)


  20.      {


  21.         if(!S2)


  22.         {


  23.         delay_ms(10);


  24.         if(!S2)


  25.         {


  26.             while(!S2);


  27.             delay_ms(10);


  28.             led_flash=1;


  29.           }


  30.         if(!S2)


  31.         {


  32.             led_flash=2;


  33.         }


  34.         switch(led_flash)


  35.                  {case 1:


  36.                      P8OUT|=BIT1;


  37.                      P1OUT|=BIT0;


  38.                      delay_ms(500);


  39.                      P8OUT&=~BIT1;


  40.                      P1OUT&=~BIT0;


  41.                      delay_ms(500);


  42.                      break;


  43.                  case 2:


  44.                      P1OUT^= BIT0;


  45.                      break;


  46.                  case 3:


  47.                      break;


  48.                  default: ;


  49.                  }


  50.      }


  51.      }


  52. }





  53. void GPIO_init(void)


  54. {


  55.     P1DIR|=BIT0;//LED1


  56.     P1DIR&=~ BIT7;


  57.     P1OUT|=BIT7;


  58.     P1REN|=BIT7;





  59.     P1IFG= 0x00;


  60.     P1IES|= BIT7;


  61.     P1IE|= BIT7;





  62.     P1DIR|=BIT0;//LED1


  63.     P2DIR&=~ BIT2;


  64.     P2OUT|=BIT2;


  65.     P2REN|=BIT2;


  66. }





  67. void delay_ms(u16 time)


  68. {


  69.     while(time--)


  70.             __delay_cycles(OSC/1000);


  71. }





  72. #pragma vector=PORT1_VECTOR


  73. __interrupt void Port1_ISR(void)


  74. {


  75.     if(P1IFG & BIT7)


  76.     {


  77.         delay_ms(10);


  78.         while (!S1)


  79.         delay_ms(10);


  80.         P1IFG&=~ BIT7;


  81.         P1OUT^= BIT0;


  82.     }


  83. }

復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表