⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readpckey.c

📁 最简单的20键PS/2键值读取程序
💻 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 + -