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

📄 sys_keyboard.c

📁 μC/OS-II实验程序说明 软件版本:V1.0 日期:2005-05-25 多任务是指多个任务在操作系统的控制下同时运行
💻 C
字号:
/****************************************************************************
		Copyright (c) 深圳市民德电子科技有限公司  http://www.szminde.cn

  文件名称:sys_KeyBoard.c
  版本号:	1.0
  日期:	2005-05-25
  说明:	此文件包含对ES-TAD7100开发板上的键盘进行操作的函数。
  调用列表:--
  修改历史:--
****************************************************************************/

#include "44b.h"
#include "sys_KeyBoard.h"


/*延时函数*/
extern void Delay(int time);

/*对扫描键盘后结果进行转换的数组*/
U8 keyBoard_KeyMap[]={0,1,4,7,15,2,5,8,14,3,6,9,12,13,11,10};

U16 FunctionKey = 0xffff;


/****************************************************************************
  函数名称:GetScanKey()
  说明:	扫描键盘上有无键被按下。
  调用函数:Delay()
  输入参数:无
  输出参数:key 键盘扫描的结果
****************************************************************************/
U16 GetScanKey(void)
{
	U16 key;
	U32 i,temp;
	
	for(i=1;i<0x10;i<<=1)
	{
		rPDATE |= 0xf0;
		rPDATE &= ~(i<<4);
		key <<= 4;
		Delay(1);
		temp = rPDATC;
		key |= (temp&0xf);
	}
	return key;
}


/****************************************************************************
  函数名称:GetKey()
  说明:	取得键盘按键。
  调用函数:GetScanKey()
  			Delay()
  输入参数:无
  输出参数:当有键按下时,返回按键的值;当无键按下时,返回-1。
****************************************************************************/
S32 GetKey(void)
{
	int i=0;
	U16 key=0xffff,tempkey=1;
	static U16 oldkey=0xffff;
	static U8 keystatus=0;
	U8 keycnt=0;
	
	while(1)
	{
		key=0xffff;
		key=GetScanKey();
		if(((key&FunctionKey)==FunctionKey))	// 没有按键按下
		{
			return -1;
		}
		oldkey=0xffff;
		Delay(1500);
		if(key!=GetScanKey())
			continue;

		if(oldkey!=key)
			keystatus=0;
		
		if(keystatus==0)	// 第一次按下此键
		{						
			keycnt=0;
			keystatus=1;
		}
		else if(keystatus==1)	// 重复此键
		{					
			keycnt++;
			if(keycnt==20)
				keystatus=2;
			else
				continue;
		}
		
		oldkey=key;
		break;
	}
	
	for(i=0;i<16;i++)	// 查找按键
	{
		if((key&tempkey)==0 && (FunctionKey&tempkey)!=0)
				break;
		tempkey<<=1;
	}
	return keyBoard_KeyMap[i];
}

⌨️ 快捷键说明

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