#include <reg51.h>
#include <intrins.h>
void delay(void)
{unsigned char a,b;
for(a=0;a<200;a++)
for(b=0;b<200;b++);}
unsigned char Key_Scan();
void main(void)
{
unsigned char ledValue, keyNum;
ledValue = 0x01;
while (1)
{
keyNum = Key_Scan();
switch (keyNum)
{
case(0xFE) :
ledValue = 0x01;
break;
case(0xFD) ://返回按键K2的数据
ledValue = 0x02;
break;
case(0xFB) ://返回按键K3的数据
ledValue = 0x04;
break;
case(0xF7) ://返回按键K4的数据
ledValue = 0x08;
break;
case(0xEF) ://返回按键K5的数据
ledValue = 0x10;
break;
case(0xDF) ://返回按键K6的数据
ledValue = 0x20;
break;
case(0xBF) ://返回按键K7的数据
ledValue = 0x40;
break;
case(0x7F) ://返回按键K8的数据
ledValue = 0x80;
break;
default:
break;
}
P0 = ledValue;//点亮LED灯
}
}
/****************************************************************************** *
* 函数名: Key_Scan()
* 函数功能: 扫描键盘
* 输入: 无
* 输出: 读取到的键值
******************************************************************************* /
unsigned char Key_Scan()
{
unsigned char keyValue = 0 , i; //保存键值
//--检测按键1--//
if (P1 != 0xFF)//检测按键K1是否按下
{
void delay(void)
{unsigned char a,b;
for(a=0;a<200;a++)
for(b=0;b<200;b++);}
if (P1 != 0xFF)//再次检测按键是否按下
{
keyValue = P1;
i = 0;
while ((i<50) && (P1 != 0xFF))//检测按键是否松开
{
Delay10ms(1);
i++;
}
}
}
return keyValue; //将读取到键值的值返回
}。