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

📄 scankey.c

📁 C8051ucos源码
💻 C
字号:

#include "C8051F020.h" 
#include "CM240128.H"


idata unsigned char Shift;//0英文/1数值 切换 

code unsigned char KEYVAL[4][2][10]=
	{
		{
			"\x04., \x05\x06\x07\x08\x02\x03",
			"\x04:, \x05\x06\x07\x08\x02\x03",
		},
		{
			",MNBVCXZ\n\x01",
			":0987)(`\n\x01",
		},
		{
			"KJHGFDSA\xfL",
			"!#654+@\"\xf\0",
		},
		{
			"IUYTREWQPO",
			"/*321-&|?=",
		},
	};

unsigned char ScanKey(void)
{
idata unsigned int val[4];
static	idata  unsigned int oldval[4];
static  idata unsigned char sw;
unsigned char scanLoc;
unsigned char i,j;
	P74OUT=0x00;
	scanLoc=0x01;
	for(i=0;i<4;i++)
	{
		P6=0xff;P5=0xff;
		P5&=(~scanLoc);
		scanLoc<<=1;
		val[i] = ((P5<<2)&0x0300)+P6;
		val[i]=~val[i];
		val[i]&=0x03ff;
		P6=0xff;P5=0xff;
		j=200;while(j--);
	}
	if(val[0]==0&&val[1]==0&&val[2]==0&&val[3]==0)
	{
		oldval[0]=val[0];			
		oldval[1]=val[1];			
		oldval[2]=val[2];			
		oldval[3]=val[3];
		sw=0;
		return 0;
	}
	if(val[0]==oldval[0]&&val[1]==oldval[1]&&val[2]==oldval[2]&&val[3]==oldval[3])
	{
		if(sw==0)
		{
		sw=1;
			for(j=0;j<4;j++)
			{
				for(i=0;i<10;i++)
				{
					if(val[j]&0x0001)break;
					val[j]>>=1;	
				}
				if(i<10)
					return KEYVAL[j][Shift][i];
			}
		}
		return 0;
	}
	oldval[0]=val[0];			
	oldval[1]=val[1];			
	oldval[2]=val[2];			
	oldval[3]=val[3];
return 0;				
}

⌨️ 快捷键说明

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