📄 keykk.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 + -