📄 scankey.c
字号:
#include "C8051F020.h"
#include "CM240128.H"
idata unsigned char Shift;//0英文/1数值 切换
code unsigned char KEYVAL[4][2][10]=
{
{
"\x04., \x05\x06\x07\x08\x02\x03",
"\x04:, \x05\x06\x07\x08\x02\x03",
},
{
",MNBVCXZ\n\x01",
":0987)(`\n\x01",
},
{
"KJHGFDSA\xfL",
"!#654+@\"\xf\0",
},
{
"IUYTREWQPO",
"/*321-&|?=",
},
};
unsigned char ScanKey(void)
{
idata unsigned int val[4];
static idata unsigned int oldval[4];
static idata unsigned char sw;
unsigned char scanLoc;
unsigned char i,j;
P74OUT=0x00;
scanLoc=0x01;
for(i=0;i<4;i++)
{
P6=0xff;P5=0xff;
P5&=(~scanLoc);
scanLoc<<=1;
val[i] = ((P5<<2)&0x0300)+P6;
val[i]=~val[i];
val[i]&=0x03ff;
P6=0xff;P5=0xff;
j=200;while(j--);
}
if(val[0]==0&&val[1]==0&&val[2]==0&&val[3]==0)
{
oldval[0]=val[0];
oldval[1]=val[1];
oldval[2]=val[2];
oldval[3]=val[3];
sw=0;
return 0;
}
if(val[0]==oldval[0]&&val[1]==oldval[1]&&val[2]==oldval[2]&&val[3]==oldval[3])
{
if(sw==0)
{
sw=1;
for(j=0;j<4;j++)
{
for(i=0;i<10;i++)
{
if(val[j]&0x0001)break;
val[j]>>=1;
}
if(i<10)
return KEYVAL[j][Shift][i];
}
}
return 0;
}
oldval[0]=val[0];
oldval[1]=val[1];
oldval[2]=val[2];
oldval[3]=val[3];
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -