launchpad 按键控制LED

2019-03-24 13:47发布

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这一步 [ 本帖最后由 279827164 于 2012-7-9 09:33 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
AISEED
2019-03-25 11:24
void main()
{WDTCTL=WDTPW+WDTHOLD;
P1DIR|=0x41;                      //这里已经设置了只有P1.0和P1.6是输出,那么下边P1DIR&=~BIT3;是不是就可以不写了呢?????
P1OUT|=0xff;                       //在这里如果设置了为oxff,那么下边P1OUT|=BIT3;这句也可以不要的吧??!
//  P1DIR&=~BIT3;   
  P1REN|=BIT3;
// P1OUT|=BIT3;                 //这里的这句
  for(;;)
    {
        if((P1IN & BIT3) == 0)
        {
            delay_ms(10);   //消抖
            if((P1IN & BIT3) == 0)
            {
               P1OUT ^= BIT0 | BIT6;
            }
            while((P1IN & BIT3)==0);  //等待松开按键
        }
    }
}


修改的部分已经过验证,可以运行,求正解!!!

一周热门 更多>

相关问题

    相关文章