getkey.c

来自「自己的平时一些制作 现在整理一下 与大家一起分享」· C语言 代码 · 共 60 行

C
60
字号
#include<_REG51_.H>
#include<_ExF(x)_.h>
//-----------------------------
uchar	Tab1[]={0xf7,0xfb,0xfd,0xfe};
sfr		KeyPort=0x90;
//-----------------------------
uchar	ReadKey(void)
	{
		uchar	i=0,keybyte=0;
		bit		keyflag=0;
		KeyPort	=0xF0;
		_nop_();
		if(KeyPort!=0xF0)
			{
				while((keyflag==0)&&(i<4))
					{
						KeyPort=Tab1[i];
						Delay(2);		   //delay for 11+2*6=23uS.
						if(KeyPort!=Tab1[i])
							{
								 keybyte=KeyPort;			  //save the key.
								 keyflag=1;					  //get key ok.
								 while(KeyPort!=Tab1[i]){;}	  //waiting for key released.
							}
						i++;								 
					}										
				return	keybyte;					
			}
		else	
		{
		//	KeyPort	=0xFF;
			return	0;
		}		
	}
//-----------------------------
uchar	Getkey(void)
		{
			uchar	keydat;
			keydat=ReadKey();
			switch(keydat)
			{
				case	0xEE:	return	1;	   	break;
				case	0xED:  	return	2;	   	break;
				case	0xEB:	return	3;	   	break;
				case	0xE7:	return	4;	  	break;
				case	0xDE:	return	5;	   	break;
				case	0xDD:  	return	6;	   	break;
				case	0xDB:	return	7;	   	break;
				case	0xD7:	return	8;	   	break;
				case	0xBE:	return	9;	   	break;
				case	0xBD:  	return	10;	   	break;
				case	0xBB:	return	11;	   	break;
				case	0xB7:	return	12;	   	break;
				case	0x7E:	return	13;	   	break;
				case	0x7D:  	return	14;	   	break;
				case	0x7B:	return	15;	   	break;
				case	0x77:	return	16;	   	break;
				default:		return	0;		break;
			}
		}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?