📄 key.c
字号:
#include"sga.h"
unsigned char key_t2(void)
{
static unsigned char NK=0,
PPK=111,
KZT,
YYK,
NKEY_n,
key_i=0;
unsigned char a,c, KEYIN,z,i;
z=0;
DDRC|=0X3E;//0011 1110 PC1,PC2,PC3,PC4,PC5设为输出
PC5_1;PC4_1;PC3_1; //PC3,PC4,PC5输出为1
NOP();NOP();NOP();NOP();NOP();NOP();
switch(key_i)
{
case 0:PC2_1;PC1_0; break;
case 1:PC2_0;PC1_1; break;
}
key_i++;
NOP();NOP();NOP();NOP();NOP();NOP();
if(key_i==2) key_i=0;
DDRC&=0XC7;//1100 0111
i=PORTC;
i=i&0x38;
if(i==0x18)//PC3,PC4,PC5中有一个为0
{
a=3;
}else
if(i==0x28)
{
a=4;
}else
if(i==0x30)
{
a=5;
}else
{
a=0;
}
a=a*10+key_i;
if(a<20)
{
NKEY_n++;
if(NKEY_n==4)
{
NKEY_n=0; z=1;
for(a=0;a!=14;a++)
KKEY_n[a]=0;
KEYIN=0; //返回空按钮键值
}
}else //A>20
{
NKEY_n=0;
switch(a)
{
case 31:KKEY_n[3]++;break; //UP 4
case 30:KKEY_n[8]++;break; //KS3 9
case 41:KKEY_n[1]++;break; // ADD 2
case 40:KKEY_n[0]++;break; //BEGIN 1
case 51:KKEY_n[12]++;break; // X6 13
case 50:KKEY_n[6]++;break; // MUSIC
}
for(a=0;a!=14;a++)
{
if(KKEY_n[a]==4)
{
KEYIN=a+1; z=1;
NKEY_n=0;
for(c=0;c!=14;c++) KKEY_n[c]=0;
break;
}
}
if(a==14) return(0); //有按钮,但还没有获得有效按钮
}
if(z==0) return(0);
if(KEYIN==0) //没有按键时的处理
{
if((++NK)>2)
{
NK=30; //强制赋值为20;以防止不断累加溢出
KEY=0;
// YYK=0;
// if(XIE_BEGIN==1) SENG=JIANG=1; //没有按键,停止升降
switch(PPK)
{
case SET:
KEY=PPK;
PPK=111;
if(YYK<16)
return(1);//若连击时间小于2s则认为是单击
break;
default:PPK=111;
}
YYK=0;
}
return(0);
}
NK=0;
if(PPK!=KEYIN)
{
PPK=KEYIN;
YYK=0;
KZT=1;
return(0);
}
if(YYK==200) return(0); //连续按住ok状态,不进行下面处理
++YYK;
switch(KZT)
{
case 1: if((PPK==SET && YYK>26))
{
YYK=200;
KEY=PPK;
return(2);
}
if ( PPK==BEGIN || PPK==END )//PPK==CLEAR ||
{
if(YYK!=1) return(0);
NOP();
KEY=PPK;
return(1);
}
/// ///
if(PPK==ADD || PPK==SUB ) // +.-
{
KEY=PPK;
KZT=2; YYK=0;
if(CHW==0) BIT_80|=0x80;//a.BEEP1=1;
return(1);
}
return(0);
case 2: if(YYK!=20 && (PPK==ADD || PPK==SUB ))
return(0);
YYK=0;
KEY=PPK;
KZT=3;
return(1);
case 3: if (YYK!=10) return(0);
YYK=0;
KEY=PPK;
return(1);
}
return 255;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -