这是我编程的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;
}
P2IN|=0x0f表示不解的说。。 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;
}
这段代码很有问题 输入寄存器貌似只读吧,有一个经验是,用按键的时候要加上拉电阻,这个很重要,不然输入引脚你用手碰都会有反应
页:
[1]