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条回答
279827164
1楼-- · 2019-03-24 18:54
 精彩回答 2  元偷偷看……
279827164
2楼-- · 2019-03-24 19:17
< :TI_MSP430_内容页_SA7 --> P1IN的BIT3位是1,P1IN&BIT3是0x08,取反的话,得到的结果是0xf7,不是0,
。。所以应该改成 while((P1IN & BIT3) == 0);  
这个是51和MSP写法的区别吧。。
曾小开
3楼-- · 2019-03-25 00:16
&nbsp;你那个P1REN 是什么寄存器? &nbsp; &nbsp;求教 &nbsp;
hj-yk
4楼-- · 2019-03-25 02:40
 精彩回答 2  元偷偷看……
taotao319
5楼-- · 2019-03-25 07:17
请问,按键不用时是不是处于高电平?
AISEED
6楼-- · 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);  //等待松开按键
        }
    }
}


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

一周热门 更多>

相关问题

    相关文章