key.c

来自「应用电子密码锁」· C语言 代码 · 共 44 行

C
44
字号
#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

void delayms(void);

 
uchar kbscan(void)
{
	unsigned char sccode,recode;
	P2=0x0f;  //发0扫描,列线输入
	if ((P2 & 0x0f) != 0x0f)  //有键按下
	{
		delayms();   //延时去抖动
		if ((P2&0x0f)!= 0x0f)
		{
			sccode = 0xef;    //逐行扫描初值
			while((sccode&0x01)!=0)
			{
			    P2=sccode;
				if((P2&0x0f)!=0x0f)
				{
				    recode=(P2&0x0f)|0xf0;
					while((P2&0x0f)!=0x0f);//松开按键返回键值
					return((~sccode)+(~recode));
				 }
		        else
				sccode=(sccode<<1)|0x01;
			}
		}
	}
	return 0;  //无键按下,返回0
}


void delayms(void)
{
    unsigned char k,y;
	for (k=200; k>0; k--)
	for (y=50;y>0;y--);
}

⌨️ 快捷键说明

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