標(biāo)題: 單片機(jī)新手,關(guān)于msp430的中斷問(wèn)題求助 [打印本頁(yè)]

作者: 慢慢學(xué)習(xí)吧    時(shí)間: 2019-3-23 12:54
標(biāo)題: 單片機(jī)新手,關(guān)于msp430的中斷問(wèn)題求助
剛開(kāi)始學(xué)的新手。我想實(shí)現(xiàn)的是按鍵按一次兩個(gè)燈都亮,再按一次亮一個(gè)燈,再按一次全滅,再按一次又全亮,然后一直循環(huán)。但不知道為什么我怎么按按鍵燈都不會(huì)變,各種方法都試過(guò)了,網(wǎng)上的案例也都試過(guò),只能求助于諸位前輩了,可能最后發(fā)現(xiàn)問(wèn)題很明顯,希望前輩們不要介意。

#include <msp430.h>
volatile unsigned int j=0;
int main(void) {

    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
    _DINT();
    P1DIR |= BIT0+BIT6; //設(shè)置P1.0口為輸出
    P1DIR &= ~BIT3; // P1.3設(shè)為輸入
    P1REN |= BIT3; //啟用P1.3內(nèi)部上下拉電阻
    P1OUT |= BIT3; //將電阻設(shè)置為上拉
    P1IES |= BIT3; // P1.3設(shè)為下降沿中斷
    P1IFG &= ~BIT3;
    P1IE |= BIT3; // 允許P1.3中斷
    _EINT();

   while(1){
    if(j==1){P1OUT=BIT0+BIT6;}
    if(j==2){P1OUT=BIT0;P1OUT&=~BIT6;}
    if(j==3){P1OUT=0;j=0;}
    if(j>4){j=0;}

}
}

#pragma vector = PORT1_VECTOR


__interrupt void PORT_1(void) {
    while ((P1IN & BIT3) == 0)
          ; //P1.3低
     j++;
    P1IFG &= ~BIT3;        //中斷標(biāo)志位清零
}



作者: 慢慢學(xué)習(xí)吧    時(shí)間: 2019-3-23 12:55
其實(shí)亮什么燈無(wú)所謂,就是我似乎不能實(shí)現(xiàn)我理想中的 j 的正常變化,很苦惱。
作者: yzwzfyz    時(shí)間: 2019-3-24 08:19
想一下:J=0時(shí)你的程序如何會(huì)把它變成1-3呢?
作者: 慢慢學(xué)習(xí)吧    時(shí)間: 2019-3-24 16:41
yzwzfyz 發(fā)表于 2019-3-24 08:19
想一下:J=0時(shí)你的程序如何會(huì)把它變成1-3呢?

不好意思,我復(fù)制的時(shí)候忘改了?墒浅跏蓟痡改成1,后面也相應(yīng)改了,還是不行,這又該怎么辦...
作者: 慢慢學(xué)習(xí)吧    時(shí)間: 2019-3-24 16:44
yzwzfyz 發(fā)表于 2019-3-24 08:19
想一下:J=0時(shí)你的程序如何會(huì)把它變成1-3呢?

啊不好意思,是我復(fù)制的時(shí)候忘改了,可是我把j初始化為1,后面也相應(yīng)改了,還是不行,這又是為什么呢....




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