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

📄 key.c

📁 在tmsf2812下
💻 C
字号:
#define KEY_FUNC

#include "..\include\DSP281x_Device.h" // DSP281x Headerfile Include File
#include "..\include\LEU_Master_Test.h" //SelfDefine Headerfile Include File
#include "..\include\KEY.h"


void delayms(Uint16 x)
{
	Uint16 i,j;
	for(j=0;j<=x;j++)
	{
		for(i=0;i<=1500;i++);
	}
}
void delayus(Uint16 x)
{
	Uint16 i,j;
	for(j=0;j<=x;j++)
	{		for(i=0;i<=150;i++);
	}
}

uchar key_read(void)
{
	uchar keytemp1=0;
	uchar keytemp2=0;
	uchar keyavil=0;
	EALLOW;
	KEY_DIR=0xff00 & KEY_DIR;//as input 取前八位
	EDIS;
	delayus(50);
	EALLOW;
	KEY_DIR=KEY_DIR | 0x000f;//low 4bit as out 先取低四位
	EDIS;
	KEY_CLEAR=0x000f;//out low level
	delayus(10);
	keytemp1=KEY_DAT & 0x00f0;//read high 4bit
	EALLOW;
	KEY_DIR=0xff00 & KEY_DIR;//as input
	EDIS;
	delayus(50);
	EALLOW;
	KEY_DIR=KEY_DIR|0x00f0;//high 4bit as out
	EDIS;
	KEY_CLEAR=0x00f0;//out low level
	delayus(10);
	keytemp1+=KEY_DAT & 0x000f;//read low 4bit
	switch(keytemp1)
	{
		case NUM1:
		case NUM2:
		case NUM3:
		case NUM4:
		case NUM5:	
		case NUM6:
		case NUM7:
		case NUM8:
		case NUM9:
		case NUM0:
		case UP:
		case DOWN:
		case LEFT:
		case RIGHT:
		case OK:
		case ESC:
		    delayms(10);
		//	TSK_sleep(10);
			EALLOW;
			KEY_DIR=0xff00 & KEY_DIR;//as input
			EDIS;
			delayus(50);
			EALLOW;
			KEY_DIR=KEY_DIR | 0x000f;//low 4bit as out
			EDIS;
			KEY_CLEAR=0x000f;//out low level
			delayus(10);
			keytemp2=KEY_DAT & 0x00f0;//read high 4bit
			EALLOW;
			KEY_DIR=0xff00 & KEY_DIR;//as input
			EDIS;
			delayus(50);
			EALLOW;
			KEY_DIR=KEY_DIR|0x00f0;//high 4bit as out
			EDIS;
			KEY_CLEAR=0x00f0;//out low level
			delayus(10);
			keytemp2+=KEY_DAT & 0x000f;//read low 4bit
			if(keytemp1==keytemp2)
			{
				while((KEY_DAT & 0x000f)!=0x000f);
				delayms(10);
				//TSK_sleep(10);
				while((KEY_DAT & 0x000f)!=0x000f);
				keyavil=1;
			}
			else
			keyavil=0;
		break;
		default:
			keyavil=0;
		break;
		
	}
	
	EALLOW;
	KEY_DIR=0xff00 & KEY_DIR;//as input
	EDIS;
	if(keyavil==1)
	return keytemp1;
	else
	return 0;	
}

uchar key_testnumber(void)
  {
   uchar keynumber,keynum;
   keynumber = key_read();
   
  switch(keynumber)
	{
		case NUM1: keynum=1;break;
		case NUM2: keynum=2;break;
		case NUM3: keynum=3;break;
		case NUM4: keynum=4;break;
		case NUM5: keynum=5;break;	
		case NUM6: keynum=6;break;
		case NUM7: keynum=7;break;
		case NUM8: keynum=8;break;
		case NUM9: keynum=9;break;
		case NUM0: keynum=0;break;
		case UP:   keynum=11;break;
		case DOWN: keynum=12;break;
		case LEFT: keynum=13;break;
		case RIGHT:keynum=14;break;
		case OK:   keynum=15;break;
		case ESC:  keynum=16;break;
     }
        return keynum;
  }

⌨️ 快捷键说明

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