2813|1

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

430 F5529 双按键中断只能触发一个中断的求助!!!!! [复制链接]

1芯积分
初学MSP430,写了个程序想控制5529上的两个独立按键S1和S2分别对应Port1和Port2的中断来实现按键次数计数,但是现在程序跑出来只有中断Port1能进入中断,请各位大神帮忙看下问题,小弟感激不尽~~

程序如下:

#include

void delay_Nms(unsigned int n)

{

        volatile int a=0;

    unsigned int i;

    unsigned int j;

    for(i = n;i > 0;i--)

for(j = 100;j > 0;j--)

          _NOP();

}

extern volatile int a=0;

extern volatile int b=0;

void main()

{

    WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗

    P2DIR =0x00;

    P2IFG=0x00;

    P4DIR |= BIT7;

    P2REN |= BIT1;

    P2IE = 0x02;

    P2IES = 0x02;

    P2IN = BIT1;

    P1DIR &= ~BIT1;

    P1DIR |= BIT0; // 设置P1.1 为输入,P1.0为输出

    P1REN |= BIT1;//打开上拉,触发边沿是从高电平到低电平

    P1IE = 0x02; // 设置P1.1 可以中断

    P1IES = 0x02; // 设置P1.1 为下降沿中断

    P1IFG=0;

    _EINT();

    _BIS_SR(LPM0_bits + GIE); // 进入低功耗睡眠,打开总总断开关

}

unsigned char p1keyj(void) // 判键子程序

{

  unsigned char x;

  x=(P1IN&0X02); // P1.1 接有按键

  return(x); // 有按键返回非全 0

}

unsigned char p2keyj(void) // 判键子程序

{

  unsigned char y;

  y=(P2IN&0X02); // P2.1 接有按键

  return(y); // 有按键返回非全 0

}

#pragma vector=PORT1_VECTOR   //中断服务程序:

__interrupt void p1int(void)

{

    P1OUT ^=BIT0;

    while(p1keyj());

    delay_Nms(2);

    P1IFG=0x00;

    a++;

}



#pragma vector=PORT2_VECTOR   //中断服务程序:

__interrupt void p2int(void)

{

    P4OUT ^=BIT7;

    while(p2keyj());

    delay_Nms(2);

    P2IFG=0x00;

    b++;

}

上拉电阻之类的都设置了,个人感觉端口初始化没问题,可能是vector=PORT2_VECTOR 的问题,因为vector=PORT1_VECTOR能触发P1.1的中断,但是同样就不能触发P2.1的中断,求各位大神指点,谢过~~

最新回复

看了你的代码,其中 P2IN = BIT1;这一句就有问题,输入寄存器是只读寄存器,不能执行写操作,其他关于P2的配置没有发现什么问题,你现在不能中断你要确认一下你的按键到底用的是哪个引脚,我看F5529的板子S1对p1.7,S2对应P2.2,你得确认一下  详情 回复 发表于 2015-5-9 16:51
 
点赞 关注

回复
举报

1976

帖子

1

TA的资源

五彩晶圆(初级)

沙发
 
看了你的代码,其中 P2IN = BIT1;这一句就有问题,输入寄存器是只读寄存器,不能执行写操作,其他关于P2的配置没有发现什么问题,你现在不能中断你要确认一下你的按键到底用的是哪个引脚,我看F5529的板子S1对p1.7,S2对应P2.2,你得确认一下
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表