工程文件:https://static.assets-stash.eet-china.com/album/old-resources/2009/2/10/4666aaf6-1f39-433d-aeb1-c2ed95df7442.rar
原理图:
#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;
}
}
文章评论(0条评论)
登录后参与讨论