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

📄 key.c

📁 一段简单的键盘程序
💻 C
字号:
unsigned int KB_COUNT=0;			/*按键延时计数*/
unsigned int KB_CCOUNT=0;			/*连续按键延时计数*/
unsigned int KB_DAT=0;				/*键盘读取值*/
unsigned int KB_DATBAK=0;			/*键盘读取值备份*/
ioport unsigned port2;


void KEYSACN();					/*调用键盘采集函数*/


int  KEYSCAN( )
{						
	unsigned int F,I;			/* 定义局部变量*/
	
	F=~port2;				/*读键值*/
	F=F & 0x7f;				/* 读入键盘状态并屏蔽掉相应的位*/
				
	if (F == 0)
	{	KB_CCOUNT=0;			/*连续按键延时计数清0*/	
		return;	
	}					/*没有键按下,返回*/
	KB_COUNT++;
	if (KB_COUNT<2)				/*判断是否第一次延时*/
	{       KB_DATBAK=F;			/*记录第一次按键值*/
		return;
	}
	
	if (KB_COUNT>10)			/*是否延时20ms*/
	{	KB_COUNT=0;
		if((KB_DATBAK==F)return;	/*判断是否于上一次按键一致*/
		if ((KB_CCOUNT&0XFFE0)!=0)KB_CCOUNT++;	/*连续计数20*32=780ms ,或者0*/
			else 
			{	KB_CCOUNT=1;
				KB_DAT=F;
			}
	}		
	
	asm("	nop	");
	asm("	nop	");
	asm("	nop	");
}


void KB_OO(void)		/*人机接口处理*/
{		/*停止读取时钟*/
	switch (KB_DAT)		/*取键值判断转到分支*/
	{
		case 0x40 : A_M=0;DSPLAY_1();	break;	/*左*/
		case 0x20 : M_NS_A(1);		break;	/*上*/
		case 0x10 : ENTER_M();		break;	/*确定键,进行整定*/
		case 0x08 : A_M=1;DSPLAY_1();	break;	/*右*/
		case 0x04 : M_NS_A(-1);		break;	/*下*/
		case 0x02 :			break;	/*返回*/
		case 0x01 : JJ_N();		break;	/*复归*/
		default	  :			break;	/*ERROR*/
	}
	EXIT=0;					/*读取时钟*/
}


	

⌨️ 快捷键说明

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