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

📄 key.c

📁 ICETEK-LF2407-A-EDU的全部试验程序,非常适合DSP开发
💻 C
字号:
#include "2407c.h"                    

ioport unsigned char port8001;	
ioport unsigned char port8005;	

char ConvertScanToChar(unsigned char cScanCode);

unsigned char ledbuf[8],ledx[8];
unsigned char ledkey[16][8]=
{
	{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00},
	{0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00},	//1
	{0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00},	//2
	{0x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00},
	{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00},
	{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00},
	{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00},
	{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00},
	{0x00,0x00,0xF8,0x24,0x22,0x24,0xF8,0x00},
	{0x00,0x00,0xFE,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x7C,0x82,0x82,0x82,0x44,0x00},
	{0x00,0x00,0xFE,0x82,0x82,0x82,0x7C,0x00},
	{0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x00},
	{0x00,0x00,0xFE,0x12,0x12,0x12,0x12,0x00}
};

main()
{   char cKey=0;
	unsigned char nScanCode; 
	unsigned int uWork;
	int i,nKeyCode;
	
	for ( uWork=0;uWork<8;uWork++ )
	{
		ledbuf[uWork]=0x0ff;
		ledx[uWork]=1<<(uWork);
	}
	*WDCR=0x6f;
	*WDKEY=0x5555;
	*WDKEY=0xaaaa;    
	*SCSR1=0x81fe;   
	*IMR=0x0;
	*IFR=0xffff;    

	uWork=(*WSGR);
	uWork&=0x0fe3f;
	(*WSGR)=uWork;
	
	for(;;)
	{
		nScanCode=port8001;
		nScanCode&=0x0ff;
		if ( nScanCode!=0 )
		{
			cKey=ConvertScanToChar(nScanCode);
		}
		if ( nScanCode!=0 )
		{
			nKeyCode=( cKey>='0' && cKey<='9' )?(cKey-'0'):(cKey-'A'+10);
			for ( i=0;i<8;i++ )
				ledbuf[i]=~ledkey[nKeyCode][7-i];
		}
		for ( i=0;i<8;i++ )
		{
			port8005=ledx[i];
			port8005=ledbuf[i];
		}
	}
}               

char KeyLUT[16]={ '0','1','2','3', 
  			      '4','5','6','7',
				  '8','9','A','B',
				  'C','D','E','F'
				};
char ConvertScanToChar(unsigned char cScanCode)
{
	int nWork;
	unsigned int uWork1,uWork2;
	 
	uWork1=uWork2=cScanCode;
	uWork1>>=4;
	uWork2&=0x0f;
	switch ( uWork1 )
	{
		case 1: nWork=0; break;
		case 2: nWork=4; break;
		case 4: nWork=8; break;
		case 8: nWork=12; break;
	}
	switch ( uWork2 )
	{
		case 1: nWork+=3; break;
		case 2: nWork+=2; break;
		case 4: nWork+=1; break;
	}
	return KeyLUT[nWork];
}

⌨️ 快捷键说明

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