標(biāo)題: 關(guān)于MSP430的中斷和查詢(xún)方式 [打印本頁(yè)]

作者: seatlesue    時(shí)間: 2017-4-6 00:09
標(biāo)題: 關(guān)于MSP430的中斷和查詢(xún)方式
MSP430F5529的芯片使用按鍵S2,以查詢(xún)方式控制LED1:按下S2,LED1開(kāi)始以1Hz的頻率開(kāi)始閃爍,再次按下S2,LED1熄滅;同時(shí),使用按鍵S1以中斷方式,控制LED1的閃爍或熄滅。這個(gè)可以用選擇語(yǔ)句吧 但是 我就不知道中斷函數(shù)下面又有聲明 我想用switch語(yǔ)句 但是現(xiàn)在只能寫(xiě)成這個(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ù)制代碼







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1