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

📄 keykk.c

📁 这里有很多我自己做的凌阳单片机源程序
💻 C
字号:
#include<spce061a_chf.h>
unsigned int a[4]={0x007f,0x00bf,0x00df,0x00ef};
unsigned int b[4]={0x0007,0x000b,0x000d,0x000e};
unsigned int key_scan(void);
unsigned int get_keyval(void);
//void display(unsigned int);
void Delay(void);

void main()
{
	unsigned int keyval;
	unsigned int keyflag;
	Set_IOA_Dir(0x00f0);//高四位为高电平输出,低四位为带上拉电阻的输入。
	Set_IOA_Attrib(0x00f0);
	Set_IOA_Data(0x00ff);
	
	Set_IOB_Dir(0x00ff);//同相高电平输出
	Set_IOB_Attrib(0x00ff);
	Set_IOB_Data(0x00ff);
	
	while(1)
	{
		
	keyflag=key_scan();
	if(keyflag)
	{
		keyval=get_keyval();
	    *P_IOB_Data=keyval;	    
	}
	}
}
unsigned int get_keyval(void)
{
	unsigned int value,keyval;
	unsigned int i,j;
	for(i=0;i<4;i++)
	{
	  *P_IOA_Data=a[i];
	  value=*P_IOA_Data;
	  value&=0x000f;
	  for(j=0;j<4;j++)
	  {
		if(value==b[j])
		{ keyval=i*4+j;
		  return keyval;
		  break;
		}
		else
		  continue;
	  }
	}
}
unsigned int key_scan()
{
	unsigned int scanval;//按键扫描值
	//unsigned int i;
	scanval=0x00f0;//
	*P_IOA_Data=scanval;
	if(scanval!=(*P_IOA_Data))//若不相等就有按键按下
	{
		Delay();//调用延时函数,延时5ms
	    *P_IOA_Data=scanval;
	    if(scanval!=(*P_IOA_Data))//若不相当说明有按键按下
	    {
	    	return 1;
	    
	    		}
	    		else 
	    		return 0;
	    	
	    }
	    return 0;
	}

//void display(unsigned int j)
//	
void Delay()
{
	unsigned int i,j;
	for(i=0;i<255;i++)
		for(j=0;j<255;j++);
	
}	


	
	
	
	

⌨️ 快捷键说明

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