📄 key.c
字号:
#include "spce061a.h"
unsigned char KeyFlag=0,I_KeyBuf = 0 ,t ; //有键按下标识符 //保存键值
unsigned char i,n;
unsigned char KeyVal;
void delay(void)
{
unsigned char a=0;
for(a=0;a<1000;a++)
*P_Watchdog_Clear=1;
}
void keep_IOA_Data(unsigned int Data)
{
*P_IOA_Data=(*P_IOA_Data&0xff00)+Data;//写低位
}
void keep_IOA_Dir(unsigned int Dir)
{
*P_IOA_Dir=(*P_IOA_Dir&0xff00)+Dir;//写低位
}
void keep_IOA_Attrib(unsigned int Attrib)
{
*P_IOA_Attrib=(*P_IOA_Attrib&0xff00)+Attrib;//写低位
}
unsigned char scan_key(void)
{
keep_IOA_Data(0x00f0);//写操作-IOA的底8位
keep_IOA_Attrib(0x00f0);
keep_IOA_Dir(0x00f0);
*P_IOA_Data&=0x00ff;//低位保持掷为读
if(*P_IOA_Data==0x00f0)//无键值
{
I_KeyBuf=0;
KeyFlag=0;//读数
}
else KeyFlag=1;//有键值
if(KeyFlag==1)
{
keep_IOA_Data(0x0080);//扫描第一行
*P_IOA_Data&=0x00ff;
n=0x0080|(*P_IOA_Data&0x000f);
if(n!=0x0080)t=n;
keep_IOA_Data(0x0040);//扫描第二行
*P_IOA_Data&=0x00ff;
n=0x0040|(*P_IOA_Data&0x000f);
if(n!=0x0040)t=n;
keep_IOA_Data(0x0020);//扫描第三行
*P_IOA_Data=(*P_IOA_Data&0x00ff)+0x0a00;
n=0x0020|(*P_IOA_Data&0x000f);
if(n!=0x0020)t=n;
keep_IOA_Data(0x0010);//扫描第四行
*P_IOA_Data&=0x00ff;
n=0x0010|(*P_IOA_Data&0x000f);
if(n!=0x0010)t=n;
switch (t) //将按键码转换成键值
{
case 0x0011: return 0; break;
case 0x0021: return 1; break;
case 0x0041: return 2; break;
case 0x0081: return 3; break;
case 0x0012: return 4; break;
case 0x0022: return 5; break;
case 0x0042: return 6; break;
case 0x0082: return 7; break;
case 0x0014: return 8; break;
case 0x0024: return 9; break;
case 0x0044: return 10;break;
case 0x0084: return 11;break;
case 0x0018: return 12;break;
case 0x0028: return 13;break;
case 0x0048: return 14;break;
case 0x0088: return 15;break;
case 0x0000: return 16;break;
default : return 17;
}
*P_Watchdog_Clear=1;
}
}
unsigned char get_key(void)
{
unsigned char key;
key=scan_key();
if(key!=16)I_KeyBuf=key;
else return 0xffff;
if(I_KeyBuf==key)
{
return key;
}
}
main()
{
while(1)
{
KeyVal=get_key();
xianshi(0,KeyVal/10);
xianshi(1,KeyVal%10);
*P_Watchdog_Clear = 0x0001; //清看门狗操作
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -