C

时间:2015-11-26 14:38:57

标签: c msp430

我正在尝试为微型MSP430F1X开发程序,我想模拟宽屏擦除,因此想法是将2个引脚P1.0和P1.1作为输入来增加或减少状态( 0 =停止,1 = PWM 50%,2 = PWM 75%,3 = 1秒ON / 2秒OFF并重复)。目前我已经能够生成PWM = 50%,但是当我尝试在WDT中断内部使用开关盒例程进行循环时,似乎它没有进入开关我不会知道为什么,请有人帮帮我,(我不确定是否应该在WDT中断或主函数中实现开关盒,这是我的代码:

#define STATE_IDLE 0
#define STATE_INTER 3
#define STATE_LOW 1
#define STATE_HIGH 2
#define WDT_MDLY_0_5 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1)
int cnt=0;         // global variable to count timer ticks
static int speed=0;

void main(void) {
   // WDTCTL = WDTPW + WDTHOLD; //stop watchdog timer
   WDTCTL = WDT_MDLY_0_5; 
  IE1 |= WDTIE; 
   _EINT(); 
   P1DIR &= ~(BIT0+BIT1); 
    P1IES &= ~BIT0; 
    P1IES &= ~BIT1; 

    P1IE |= BIT0; 
    P1IE |= BIT1; 

    P1DIR |= BIT4; 
    for (;;) {
     }
  }



   void interrupt [WDT_VECTOR] tick(void) {
     while(1){
          if (speed==1){
           P1IFG &= ~BIT4; 
           if (++cnt == 200) { 
                      cnt = 0;
                      P1OUT^=BIT4;
                      }
             }
         }
  }

void interrupt [PORT1_VECTOR] p1Edge(void) { 

          if (P1IN & BIT0) {
                       speed=1;
                       P1IES &= ~BIT0; 
                       P1IE |= BIT4; // enable P1.4 interrupts

                    if (speed==1){
                        speed=2;
                        P1IE |= BIT4; // enable P1.4 interrupts
                        }
                    else if(speed==2){
                         speed=3;
                         P1IE |= BIT4; // enable P1.4 interrupts
                         }

                  }

      if (P1IN & BIT1) {

                            // P1.1 is now high -
                    P1IES &= ~BIT1; 

                    if (speed==3){
                        speed=2;
                        P1IE |= BIT4; // enable P1.4 interrupts
                        }
                    else if(speed==2){
                         speed=1;
                         P1IE |= BIT4; // enable P1.4 interrupts
                         }
                    else if(speed==1)
                         speed=0;
                    P1IE |= BIT4; // enable P1.4 interrupts

                  }
     }

提前致谢

0 个答案:

没有答案