keypad.c

来自「lcd1286显示模块 EWB Quartus2编译 电子综合设计试验箱程序」· C语言 代码 · 共 48 行

C
48
字号
# include "keypad.h"
#include  "serial.h"
unsigned char KeypadScan(void)//得到4×4键盘的键值,没有按键时返回0xff
{
    unsigned char keycode=0xff,temp,i,tmp=0x07;
    KEYPAD_OUT=0x00;
	temp=KEYPAD_IN&0x0f; 
	if(temp!=0x0f)              //有键按下
	{
		//Delay(10);
		//PrintStr("key\n");
	    KEYPAD_OUT=0x07;
	    for(i=0;i<4;i++)
		{
			temp=KEYPAD_IN&0x0f;
            if(temp==0x07)
	        {    
			    keycode=i*4;
				break;
			}
	        else if(temp==0x0b)
			{
	            keycode=i*4+1;
				break;
			}
    	    else if(temp==0x0d)
			{
	            keycode=i*4+2;
				break;
			}
    	    else if(temp==0x0e)
			{
	            keycode=i*4+3;
				break;
			}
			tmp=(tmp>>1)|0x8;
			KEYPAD_OUT=tmp;
		}

	     while((KEYPAD_IN&0x0f)!=0x0f)   //等待释放
		 {
		     KEYPAD_OUT=0x00; 
		 }								             
	    
	 }
	 return keycode;
}

⌨️ 快捷键说明

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