📄 key.c
字号:
#pragma large
#include "public.h"
unsigned char xdata row,col;
unsigned char data gKey,gLastKey;
unsigned char xdata chartable[4][8]={ {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37},
{0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47},
{0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57},
{0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67}};
void KeyInit()
{
P0=0x00; //列
P3_2=1;
P3_3=1;
P4_2=1;
P4_3=1;
gLastKey=0;
gKey=0;
}
unsigned char checkcol(unsigned char row,unsigned char * col)
{
unsigned char xdata i,tmp,tmpKey;;
switch(row)
{
case 0:
tmpKey=P3_2; //首先检测P3_2行
break;
case 1:
tmpKey=P3_3; //首先检测P3_2行
break;
case 2:
tmpKey=P4_2; //首先检测P3_2行
break;
case 3:
tmpKey=P4_3; //首先检测P3_2行
break;
default:
tmpKey=P3_2; //首先检测P3_2行
break;
}
if(tmpKey==0)
{
Delay(10); //去抖动
switch(row)
{
case 0:
tmpKey=P3_2; //首先检测P3_2行
break;
case 1:
tmpKey=P3_3; //首先检测P3_2行
break;
case 2:
tmpKey=P4_2; //首先检测P3_2行
break;
case 3:
tmpKey=P4_3; //首先检测P3_2行
break;
default:
tmpKey=P3_2; //首先检测P3_2行
break;
}
if(tmpKey==1) //是干扰
{
KeyInit();
return 0;
}
switch(row)
{
case 0:
P3_2=0; //首先检测P3_2行
break;
case 1:
P3_3=0; //首先检测P3_2行
break;
case 2:
P4_2=0; //首先检测P3_2行
break;
case 3:
P4_3=0; //首先检测P3_2行
break;
default:
P3_2=0; //首先检测P3_2行
break;
}
tmpKey=P0; //读取列
if(tmpKey==0xFF)
{
KeyInit();
return 0;
}
Delay(10);//去抖动
tmpKey=P0;
if(tmpKey==0xFF)
{
KeyInit();
return 0;
}
tmpKey^=0xFF;
for(i=0;i<7;i++)
{
tmp=tmpKey&0x01;
tmpKey>>=1;
if(tmp==1)
{
*col=i;
return 1;
}
}
}
}
unsigned char keyproc()
{
unsigned char data tmpKey;
if(gLastKey!=0)//上次有按钮按下,现在检测是否弹起
{
tmpKey=P0;
Delay(10);//去抖动
tmpKey=P0;
if(tmpKey==0xFF) //按钮弹起
{
tmpKey=gLastKey|0x81;//
KeyInit();
return tmpKey;
}
}
//下面开始按钮按下的检测
if(checkcol(0,&col)==1)
{
gLastKey=chartable[0][col];
return gLastKey;
}
if(checkcol(1,&col)==1)
{
gLastKey=chartable[1][col];
return gLastKey;
}
if(checkcol(2,&col)==1)
{
gLastKey=chartable[2][col];
return gLastKey;
}
if(checkcol(3,&col)==1)
{
gLastKey=chartable[3][col];
return gLastKey;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -