找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 756|回复: 4
收起左侧

单片机新手,关于msp430的中断问题求助

[复制链接]
ID:496661 发表于 2019-3-23 12:54 | 显示全部楼层 |阅读模式
刚开始学的新手。我想实现的是按键按一次两个灯都亮,再按一次亮一个灯,再按一次全灭,再按一次又全亮,然后一直循环。但不知道为什么我怎么按按键灯都不会变,各种方法都试过了,网上的案例也都试过,只能求助于诸位前辈了,可能最后发现问题很明显,希望前辈们不要介意。

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

    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
    _DINT();
    P1DIR |= BIT0+BIT6; //设置P1.0口为输出
    P1DIR &= ~BIT3; // P1.3设为输入
    P1REN |= BIT3; //启用P1.3内部上下拉电阻
    P1OUT |= BIT3; //将电阻设置为上拉
    P1IES |= BIT3; // P1.3设为下降沿中断
    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;        //中断标志位清零
}


回复

使用道具 举报

ID:496661 发表于 2019-3-23 12:55 | 显示全部楼层
其实亮什么灯无所谓,就是我似乎不能实现我理想中的 j 的正常变化,很苦恼。
回复

使用道具 举报

ID:123289 发表于 2019-3-24 08:19 | 显示全部楼层
想一下:J=0时你的程序如何会把它变成1-3呢?
回复

使用道具 举报

ID:496661 发表于 2019-3-24 16:41 | 显示全部楼层
yzwzfyz 发表于 2019-3-24 08:19
想一下:J=0时你的程序如何会把它变成1-3呢?

不好意思,我复制的时候忘改了。可是初始化j改成1,后面也相应改了,还是不行,这又该怎么办...
回复

使用道具 举报

ID:496661 发表于 2019-3-24 16:44 | 显示全部楼层
yzwzfyz 发表于 2019-3-24 08:19
想一下:J=0时你的程序如何会把它变成1-3呢?

啊不好意思,是我复制的时候忘改了,可是我把j初始化为1,后面也相应改了,还是不行,这又是为什么呢....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表