📄 readpckey.c
字号:
#include <reg52.h>
union
{ uint w;
struct{uchar h,l;}hl;
}key;
uint keytmp;
void InitEXInt()
{ PX0=1;//Highest interrupt
EX0=1;//enable INT0
EX1=1;//enable INT1
IT0=1;//edge
EA=1;
}
// 0 1 2 3 4 5 6 7 8 9 clear Enter f1 f2 f3 f4 f5 f6 . esc ,
uchar code KeyCost[]={0xe,0x96,0x4e,0x5e,0xd6,0xce,0x2e,0x36,0xae,0xbe,0x66, 0x5a,0xa0,0x60,0x20,0x30,0xc0,0xd0,0x8e,0x6e};
uchar KeyPressedTime;//每20Ms中断减一
uchar keyval()
{ uchar i;
if(KeyPressedTime>0) return 0xf0;// 键盘按下未松开则返回
EX0=0;
key.w=keytmp;
EX0=1;
WMCON|=0xe3;//Clear WatchDog;
if((key.hl.h&0xfc)!=0xf8) return 0xf0;
key.w>>=2;
for(i=0;i<20;i++)
if(KeyCost[i]==key.hl.l) break;
keytmp=0;
if(key.hl.l==0xc1) i=9;
if(i>20) return 0xf0;
return i;
}
void PcKey() interrupt 0 // using 1
{ if(!INT0)
{ keytmp<<=1;
if(P1_0) keytmp|=1;
KeyPressedTime=40;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -