ylf175300 发表于 2012-8-1 23:31:48

这是我编程的430按键控制LED的程序,但是为什么会没有反映?


#include"msp430g2553.h"
#include"in430.h"
#define uchar unsigned char
#define uint unsigned int
uchar key();
void delay(uint z);
void main()
{
        WDTCTL = WDTPW + WDTHOLD;
        P1DIR|=0xFF;
        //P1OUT=0X00;
        //P2OUT=0Xff;
        P2DIR=0X00;

        while(1)
        {
                switch(key())
                        {
                                case 0x06:P1DIR|=0xFF;P1OUT=0x00;break;
                                case 0X05:P1DIR|=BIT6;P1OUT^=BIT6;break;
                                case 0X03:P1DIR|=0xFF;P1OUT=0Xff;break;
                                default:break;
                        }
        }
}
void delay(uint z)
{
        uint x,y;
        for(x=0;x<1140;x++)
                for(y=0;y<z;y++);
}

uchar key()
{
    uchar huoqu;
    P2IN|=0x0f;

    if((P2IN&0x0f)==0x0f){huoqu=0xff;return(huoqu);}
    delay(20);
    P2IN|=0x0f;

    if((P2IN&0x0f)==0x0f){huoqu=0xff;return(huoqu);}
   huoqu=P2IN&0x0f;
    while((P2IN&0x0f)!=0X0f)
    {


    }
    return huoqu;
}

huzhiyang 发表于 2012-8-2 00:10:20

P2IN|=0x0f表示不解的说。。

huzhiyang 发表于 2012-8-2 00:11:16

uchar key()
{
    uchar huoqu;
    P2IN|=0x0f;

    if((P2IN&0x0f)==0x0f){huoqu=0xff;return(huoqu);}
    delay(20);
    P2IN|=0x0f;

    if((P2IN&0x0f)==0x0f){huoqu=0xff;return(huoqu);}
   huoqu=P2IN&0x0f;
    while((P2IN&0x0f)!=0X0f)
    {


    }
    return huoqu;
}
这段代码很有问题

潮哥 发表于 2012-8-3 09:43:38

输入寄存器貌似只读吧,有一个经验是,用按键的时候要加上拉电阻,这个很重要,不然输入引脚你用手碰都会有反应
页: [1]
查看完整版本: 这是我编程的430按键控制LED的程序,但是为什么会没有反映?