scankey.c

来自「利用STC89C52制作一个万年历,文件包含原理图(Cadence-Allegr」· C语言 代码 · 共 39 行

C
39
字号

/******************键扫描子程序***************/
void	Scankey(void)				
{	
	uchar	aj;
	TOP = 1;						//读下行4健
	MID = 1;
	BOM = 0;				
	Delay_us(8);
	KEY1 = ((P2^0XF0)&0XF0); 		//求反,有键相应位1,并保存键值	
	KEY1 = KEY1>>4;	
	MID = 0;						//读中行4健
	BOM = 1;
	Delay_us(10);
	aj = ((P2^0XF0)&0XF0); 		//求反,有键相应位1,并保存键值
	KEY1 = KEY1+aj;
	TOP = 0;						//读上行4健
	MID = 1;
	Delay_us(10);
	KEY2 = ((P2^0XF0)&0XF0); 		//求反,有键相应位1,并保存键值
	KEY2 = KEY2>>4;
}

/*****************键后处理*******************/
void	Kprec(void)						
{	
	uint x,temp;
	temp=KEY2;				//键前沿检出
	x = KEY2^LKEY2;			//上次本次键不同为1
	KEY2 = x&KEY2;			//且本次为1即键前沿
	x = temp;				//本次键值替代上次
	LKEY2 = temp;
	temp = KEY1;
	x = KEY1^LKEY1;			//上次本次键不同为1
	KEY1 = x&KEY1;			//且本次为1即键前沿
	x = temp;				//本次键值替代上次
	LKEY1 = temp;
}

⌨️ 快捷键说明

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