嵌入式职业技能大赛
#include "ls1b_gpio.h"
#include "key.h"
/*按键IO初始化函数 */
void KEY_Init( void )
{
/* 配置按键IO为输入模式 */
gpio_enable( KEY_1, DIR_IN );
gpio_enable( KEY_2, DIR_IN );
gpio_enable( KEY_3, DIR_IN );
gpio_enable( KEY_4, DIR_IN );
}
/*按键扫描函数 */
unsigned char KEY_Scan()
{
if ( gpio_read(KEY_1) == 0 )
{
delay_ms( 5); /* (消抖) */
if ( gpio_read( KEY_1 ) == 0 ) /* 表示的确被按下了 */
{
while ( gpio_read( KEY_1 ) == 0 ); /* 等待抖动完成 */
return 1;
}
}
else if ( gpio_read( KEY_2 ) == 0 )
{
delay_ms( 5 ); /* (消抖) */
if ( gpio_read( KEY_2 ) == 0 ) /* 表示的确被按下了 */
{
while ( gpio_read( KEY_2 ) == 0 ); /* 等待抖动完成 */
return 2;
}
}
else if ( gpio_read( KEY_3 ) ==0 )
{
delay_ms( 5 ); /* (消抖) */
if ( gpio_read( KEY_3 ) ==0 ) /* 表示的确被按下了 */
{
while ( gpio_read( KEY_3 ) == 0 ); /* 等待抖动完成 */
return 3;
}
}
else if ( gpio_read( KEY_4 ) == 0 )
{
delay_ms( 10 ); /* (消抖) */
if ( gpio_read( KEY_4 ) == 0 ) /* 表示的确被按下了 */
{
while ( gpio_read( KEY_4 ) == 0 ); /* 等待抖动完成 */
return 4;
}
}
return 0;
}
key.h文件
#ifndef _TEST_H
#define _TEST_H
#define KEY_1 56
#define KEY_2 57
#define KEY_3 40
#define KEY_4 41
void KEY_Init(void);
unsigned char KEY_Scan();
#endif // _TEST_H
主函数
#include "ls1b.h"
#include "mips.h"
#include "led.h"
#include "bsp.h"
int temp;
int main(void)
{
printk("\r\nmain() function.\r\n");
LED_Init();//LED初始化
KEY_Init();//按键初始化
for (;;)
{
temp = KEY_Scan();
switch ( temp )
{
case 1:
//写自己要执行的代码
break;
case 2:
//写自己要执行的代码
break;
case 3:
//写自己要执行的代码
break;
case 4:
//写自己要执行的代码
break;
default:
break;
}
}
}