📄 key.c
字号:
unsigned int KB_COUNT=0; /*按键延时计数*/
unsigned int KB_CCOUNT=0; /*连续按键延时计数*/
unsigned int KB_DAT=0; /*键盘读取值*/
unsigned int KB_DATBAK=0; /*键盘读取值备份*/
ioport unsigned port2;
void KEYSACN(); /*调用键盘采集函数*/
int KEYSCAN( )
{
unsigned int F,I; /* 定义局部变量*/
F=~port2; /*读键值*/
F=F & 0x7f; /* 读入键盘状态并屏蔽掉相应的位*/
if (F == 0)
{ KB_CCOUNT=0; /*连续按键延时计数清0*/
return;
} /*没有键按下,返回*/
KB_COUNT++;
if (KB_COUNT<2) /*判断是否第一次延时*/
{ KB_DATBAK=F; /*记录第一次按键值*/
return;
}
if (KB_COUNT>10) /*是否延时20ms*/
{ KB_COUNT=0;
if((KB_DATBAK==F)return; /*判断是否于上一次按键一致*/
if ((KB_CCOUNT&0XFFE0)!=0)KB_CCOUNT++; /*连续计数20*32=780ms ,或者0*/
else
{ KB_CCOUNT=1;
KB_DAT=F;
}
}
asm(" nop ");
asm(" nop ");
asm(" nop ");
}
void KB_OO(void) /*人机接口处理*/
{ /*停止读取时钟*/
switch (KB_DAT) /*取键值判断转到分支*/
{
case 0x40 : A_M=0;DSPLAY_1(); break; /*左*/
case 0x20 : M_NS_A(1); break; /*上*/
case 0x10 : ENTER_M(); break; /*确定键,进行整定*/
case 0x08 : A_M=1;DSPLAY_1(); break; /*右*/
case 0x04 : M_NS_A(-1); break; /*下*/
case 0x02 : break; /*返回*/
case 0x01 : JJ_N(); break; /*复归*/
default : break; /*ERROR*/
}
EXIT=0; /*读取时钟*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -