標(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