原创 MSP430F2618基础实验2(按键控制LED灯)

2009-2-10 17:35 1896 1 1 分类: MCU/ 嵌入式

工程文件:https://static.assets-stash.eet-china.com/album/old-resources/2009/2/10/4666aaf6-1f39-433d-aeb1-c2ed95df7442.rar


原理图:


点击看大图fe0d76e9-c423-468b-8e39-056343c77089.jpg


#include  <msp430x26x.h>



#define       KEY_LEFT        P4IN&0x040
#define       KEY_RIGHT       P4IN&0x080
#define       KEY_UP          P4IN&0x020
#define       KEY_DOWN        P4IN&0x010


#define       LEFT        1
#define       RIGHT       2
#define       UP          3
#define       DOWN        4


unsigned char ScanKey(void)
{
    if(!(KEY_LEFT))
    {
      while(!(KEY_LEFT));
      return LEFT;
    }
    else if(!(KEY_RIGHT))
    {
      while(!(KEY_RIGHT));
      return RIGHT;
    }
    else if(!(KEY_DOWN))
    {
      while(!(KEY_DOWN));
      return DOWN;
    }
    else if(!(KEY_UP))
    {
      while(!(KEY_UP));
      return UP;
    }
    else return 0;
}


void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  P4DIR |= 0x0f;                            // Set P4.0~P4.3 to output direction
  P4DIR &= ~0xf0;
  P4OUT |=0x0f;


  for (;;)
  {
    volatile unsigned int i;
    unsigned char key_value;
      key_value=ScanKey();
      P4OUT &=~(0x10>>key_value);
      i = 10000;                              // Delay
      do (i--);
      while (i != 0);
    P4OUT |=0x0f;
  }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
1
关闭 站长推荐上一条 /1 下一条