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

QQ登錄

只需一步,快速開始

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

單片機(jī)新手,關(guān)于msp430的中斷問題求助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:496661 發(fā)表于 2019-3-23 12:54 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
剛開始學(xué)的新手。我想實(shí)現(xiàn)的是按鍵按一次兩個(gè)燈都亮,再按一次亮一個(gè)燈,再按一次全滅,再按一次又全亮,然后一直循環(huán)。但不知道為什么我怎么按按鍵燈都不會(huì)變,各種方法都試過了,網(wǎng)上的案例也都試過,只能求助于諸位前輩了,可能最后發(fā)現(xià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)志位清零
}


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

使用道具 舉報(bào)

沙發(fā)
ID:496661 發(fā)表于 2019-3-23 12:55 | 只看該作者
其實(shí)亮什么燈無所謂,就是我似乎不能實(shí)現(xiàn)我理想中的 j 的正常變化,很苦惱。
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2019-3-24 08:19 | 只看該作者
想一下:J=0時(shí)你的程序如何會(huì)把它變成1-3呢?
回復(fù)

使用道具 舉報(bào)

地板
ID:496661 發(fā)表于 2019-3-24 16:41 | 只看該作者
yzwzfyz 發(fā)表于 2019-3-24 08:19
想一下:J=0時(shí)你的程序如何會(huì)把它變成1-3呢?

不好意思,我復(fù)制的時(shí)候忘改了。可是初始化j改成1,后面也相應(yīng)改了,還是不行,這又該怎么辦...
回復(fù)

使用道具 舉報(bào)

5#
ID:496661 發(fā)表于 2019-3-24 16:44 | 只看該作者
yzwzfyz 發(fā)表于 2019-3-24 08:19
想一下:J=0時(shí)你的程序如何會(huì)把它變成1-3呢?

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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