📄 key.c.bak
字号:
/***************************************************************
功能:实现16只按键的识别,并在数码管上显示对应的按下的那只键
作者:SG
时间:2004-03-15
版本:V1.0
***************************************************************/
/*-------------------------------------------------------------
#define 分别定义按键key1 --- key16对应的数值
-------------------------------------------------------------*/
#define key1 1
#define key2 2
#define key3 3
#define key4 4
#define key5 5
#define key6 6
#define key7 7
#define key8 8
#define key9 9
#define key10 0
#define key11 0x0a
#define key12 0x0b
#define key13 0x0c
#define key14 0x0d
#define key15 0x0e
#define key16 0x0f
sfr KeyPort = 0x80;
sbit _ReadKey = 0xa5;
sbit row1 = 0xa6;
sbit row2 = 0xa7;
sbit KD0 = 0x80;
sbit KD1 = 0x81;
sbit KD2 = 0x82;
sbit KD3 = 0x83;
sbit KD4 = 0x84;
sbit KD5 = 0x85;
sbit KD6 = 0x86;
sbit KD7 = 0x87;
/*-------------------------------------------------
功能:判别有无按键,并返回按下的是哪个键
-------------------------------------------------*/
bit ReadKeyVal(unsigned char *key)
{
unsigned char i,temp[2];
_ReadKey = 0;
KeyPort = 0xFF;
row1 = 0;
row2 = 0;
temp[0] = KeyPort ;
if( temp[0] == 0xFF )
{
_ReadKey = 1;
return(1);
}
temp[0] = 0xFF;
temp[1] = 0xFF;
for( i = 0;i < 2;i++ )
{
row1 = 0;
row2 = 1;
if ( !KD0 )
temp[i] = key1;
else if ( !KD1 )
temp[i] = key3;
else if ( !KD2 )
temp[i] = key5;
else if ( !KD3 )
temp[i] = key7;
else if ( !KD4 )
temp[i] = key9;
else if ( !KD5 )
temp[i] = key11;
else if ( !KD6 )
temp[i] = key13;
else if ( !KD7 )
temp[i] = key15;
row1 = 1;
row2 = 0;
if ( !KD0 )
temp[i] = key2;
else if ( !KD1 )
temp[i] = key4;
else if ( !KD2 )
temp[i] = key6;
else if ( !KD3 )
temp[i] = key8;
else if ( !KD4 )
temp[i] = key10;
else if ( !KD5 )
temp[i] = key12;
else if ( !KD6 )
temp[i] = key14;
else if ( !KD7 )
temp[i] = key16;
Delay_xMs(10);
}
if ( temp[0] != 0xFF && temp[0] == temp[1] )
{
*key = temp[0];
_ReadKey = 1;
return(0);
}
_ReadKey = 1;
return(1);
}
/*-------------------------------------------------
主程序
功能:实现16只按键的识别,并在数码管上显示
对应的按下的那只键
-------------------------------------------------*/
void main()
{
unsigned char key;
Hc164(16); //关闭显示
while(1)
{
if ( !ReadKeyVal(&key)) //识别有无按键
{
Hc164(key); //显示按下的键
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -