launchpad 按键控制LED问题

[复制链接]
 楼主| qq279827164 发表于 2012-7-8 21:21 | 显示全部楼层 |阅读模式
void main( void )
{  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= BIT0 | BIT6;  //俩灯配置为输出
    P1DIR &= ~BIT3;     //键盘配置为输入
    P1OUT |= BIT0 | BIT6 ;  // 先点亮亮灯
    P1REN |= BIT3;         
    P1OUT |= BIT3;          //配置为上拉
   
    for(;;)
    {
        if((P1IN & BIT3) == 0)
        {
            delay_ms(10);   //消抖
            if((P1IN & BIT3) == 0)
            {
               P1OUT ^= BIT0 | BIT6;
            }
            while(~(P1IN & BIT3));  //等待松开按键
        }
    }
}

为什么老是卡在while这一步
 楼主| qq279827164 发表于 2012-7-9 09:13 | 显示全部楼层
怎么没人回答。。
wudayongnb 发表于 2012-7-9 09:45 | 显示全部楼层
你换成while((P1IN & BIT3) == 0)
wudayongnb 发表于 2012-7-9 09:49 | 显示全部楼层
那是为什么,因为即使你松开手,P1IN的BIT3位是1,P1IN&BIT3是0x08,按你那么取反的话,得到的结果是0xf7,不是0,肯定一直停在那里
wudayongnb 发表于 2012-7-9 09:50 | 显示全部楼层
这个和写51单片机的按键是有点不一样的吧
 楼主| qq279827164 发表于 2012-7-9 09:54 | 显示全部楼层
奥,我以前是一直搞51的,最近才开始学MSP430。原来如此,谢谢楼上
gaochy1126 发表于 2012-7-9 12:37 | 显示全部楼层
使用延时就可以,没有必要while等待!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

23

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部