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

📄 key.c

📁 我写的atmega16驱动的nrf24l01程序
💻 C
字号:
//--------------------------	  3		  2		  1		  0	
//------------------------- 4	dKey4	dKey8	dKeyC	dKeyG
//------------------------- 5	dKey3	dKey7	dKeyB	dKeyF
//------------------------- 6	dKey2	dKey6	dKeyA	dKeyE
//------------------------- 7	dKey1	dKey5	dKey9	dKeyD
//--------------------------76543210
#define		dKey1	1	//	01110111=77
#define		dKey2	2	//	10110111=b7
#define		dKey3	3	//	11010111=d7
#define		dKey4	4	//	11100111=e7
#define		dKey5	5	//	01111011=7b
#define		dKey6	6	//	10111011=bb
#define		dKey7	7	//	11011011=db
#define		dKey8	8	//	11101011=eb
#define		dKey9	9	//	01111101=7d
#define		dKeyA	10	//	10111101=bd
#define		dKeyB	11	//	11011101=dd
#define		dKeyC	12	//	11101101=ed
#define		dKeyD	13	//	01111110=7e
#define		dKeyE	14	//	10111110=be
#define		dKeyF	15	//	11011110=de
#define		dKey0	0	//	11101110=ee
const unsigned char KeycodeNum[]=
//dKey0,dKey1,dKey2,dKey3,dKey4,dKey5,dKey6,dKey7,dKey8,dKey9,dKeyA,dKeyB,dKeyC,dKeyD,dKeyE,dKeyF.
{ 0xee, 0x77, 0xb7, 0xd7, 0xe7, 0x7b, 0xbb, 0xdb, 0xeb, 0x7d, 0xbd, 0xed, 0x7e, 0xbe, 0xde, 0xee};
//
// ---------------------------------------------------------------------
void INT_KeyTest(void)							//键反转法检测键盘
{
unsigned char j,i,KeyCodeTemp,KeyCode;

	KeyPORT=0xf0;	
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	KeyDDR=0x0f;
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	j=(KeyPIN&0xf0);
	if (j==0xf0)
	{
		KeyBeforeCodeTemp=j;			//无键按下
		KeyDelayCou=0;
		bKeyPress=0;
		return;
	}
// -----------------------------------------------
// -----------------------------------------------
		
	KeyBeforeCodeTemp=j;
	if (bKeyPress!=0) return;	
	if (KeyDelayCou<0x40)	
	{
		KeyDelayCou++;
		return;
	}
	else {bKeyPress=0x55;KeyDelayCou=0;}		//键盘延迟是否足够

	if (bKeyGetted==dTrue)	return;				//键值取得,还未处理 返回

//	Led2FlashTimes=1;


	KeyPORT=0xf0;
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	KeyDDR=0x0f;
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	KeyCode=(KeyPIN&0xf0);				//取键代码
	
	KeyPORT=0x0f;
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	KeyDDR=0xf0;
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	_NOP();_NOP();_NOP();
	KeyCodeTemp=(KeyPIN&0x0f);

	KeyCode+=KeyCodeTemp;						//键盘行列代码合并
	
//Led2FlashTimes=KeyCode;
	for (i=0;i<16;)		//键值取得
	{
		if (KeyCode==KeycodeNum[i])
		{  	
			KeyValue=i;
			bKeyGetted=0x55;
			break;
		}
		i++;
	}
}

⌨️ 快捷键说明

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