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

📄 keyscan.c

📁 607506ps2Test 607506ps2Test 607506ps2Test 607506ps2Test
💻 C
字号:
void KeyScan(void)                  /* 键盘扫描 */
{
	unsigned char i,j,kv0,kv1,kv2,kv3,kv4;

	i = 0;
	j = 0;
	P1 = 0xEF;
	kv0=P1;							/* 读入键值 */
	P1 = 0xDF;
	kv1=P1;
	P1 = 0xBF;
	kv2=P1;
	P1 = 0x7F;
	kv3=P1;
	P1 = 0xFF;
	kv4=P1;
 	kvn = 0;
	for(i=0; i<4; i++) {			/* 键值分析 */
		if((kv0&0x01)==0) {
			kvn = i*4 + 1;
			j++;
		}
		if((kv1&0x01)==0) {
			kvn = i*4 + 2;
			j++;
		}
		if((kv2&0x01)==0) {
			kvn = i*4 + 3;
			j++;
		}
		if((kv3&0x01)==0) {
			kvn = i*4 + 4;
			j++;
		}
		if((kv4&0x01)==0) {
			kvn = 17 + i;
			j++;
		}
		kv0 /= 2;
		kv1 /= 2;
		kv2 /= 2;
		kv3 /= 2;
		kv4 /= 2;
	}
	if(j>1) {
		kvn = 0;					/*  同时按下多键则键值无效 */
	}
	if(kvn==0) {
      kvc = 0;
      kvo = 0;
    }
	else {							/* 若键值有效  */
		if(kvn==kvo) {				/* 若键值与上次键值相同 */
			if(kvc<253)
				kvc++;				/* 同键值计数延时 */
			if(kvc>2)
				kvn=0;				/* 以前键值已有效,则本次无效 */
			if(kvo == CLEAR) {
				if(kvc==20)
					kvn = 0x55;		/* 连按清零键达 120*10ms 则置全清*/
			}
		}
		else {						/*  若键值与上次键值不同  */
			kvo = kvn;				/* 记下键值 */
			kvc = 1;
			kvn = 0;				/* 本次键值无效 */
		}
	}
	if(kvc==0) {
		kvn=0;
	}

	return;
}

⌨️ 快捷键说明

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