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

📄 key.c

📁 该程序用来测试89C51与IDE硬盘的接口
💻 C
字号:
//按键扫描驱动程序

unsigned char key,key_h,kpush;
unsigned int key_l;

//按键连接到p1.0、p1.1、p1.2

void int_t0(void) interrupt 1 {
	unsigned char dd,i;
	TL0=TL0+30;TH0=0xfb;	//800
	/*	按键判别	*/
	if ((P1&0x7)==0x7) {
		if ((key_l>30)&&(key_l<800)&&(key_h>30)) {		//释放按键,如果之前按键时间少于1秒,读入键值
			key=kpush;
		}
		if ((++key_h)>200) key_h=200;
		key_l=0;
		if (key>=0x80) key=0;							//如果之前的按键为长按1秒,清除键值
	} else {
		kpush=P1&0x7;
		key_l++;
		if ((key_l>800)&&(key_h>30)) {					//如果按键超过1秒,键值加0x80标志长按键
			key=kpush|0x80;
			key_h=0;
			key_l=0;
		}
	}
}
void main(void) {
	TMOD=0x1;TR0=1;ET0=1;EA=1;
	while (1) {
		while (!key) {}
		switch (key) {
		case 1:break;
		case 2:break;
		}
	}
}

//*************************************************
uchar kbscan(void)		//键盘扫描子程序
{	uchar sccode,recode;
	P2=0x0f;		

if ((P2&0x0f)!=0x0f)	//有键按下
 	     {sccode=0x7f;	//扫开始
 		   while ((sccode&0x08)!=0)	//xun huan sao miao 
			{P2=sccode;
			 if ((P2&0x0f)!=0x0f)		//ben hang you jian an xia
		{recode=(P2&0x0f)|0xf0;
		return ((~sccode)+(~recode));	//fan hui jian ma
		}
		else
		sccode=(sccode>>1)|0x80;	//zuo yi yi wei
			    }
		        }
else return (0);
}
//*************************************************




//*************************************************
uchar kbscan(void)		//键盘扫描子程序
{	uchar sccode,recode,p1,p;

	P1=0xe0;P2_7=1;P2_6=1;
	p1=P2&0xc0;	p=p1*0xff+P1;

if ((p&0x03e0)!=0x03e0)	//有键按下
 	     {sccode=0x03fe;	//扫开始
 		   while ((sccode&0x0020)!=0)	//xun huan sao miao 
			{p=sccode;
			 if ((p&0x03e0)!=0x03e0)		//ben hang you jian an xia
		{recode=(p&0x03e0)|0x001f;
		return ((~sccode)+(~recode));	//fan hui jian ma
		}
		else
		sccode=(sccode<<1)|0x0001;	//zuo yi yi wei
			    }
		        }
else return (0);
}
//*************************************************

⌨️ 快捷键说明

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