📄 keypross.c
字号:
//按键处理程序
/*变量说明
*frist 为1代表第一位未输入
*second 为1代表第二位未输入
*adflag 为一代表按下确定键,可以启动A/D转换,输出电压
*disisten 为一表示输入为最大值10
*point 为1代表有小数点
*
*/
//#include<include.h>
void keypross(unsigned char key)
{
switch(key)
{
case ZERO : //按键为0
if(first==1)
{
disbuff[0]=0;
first=0;
}
else if(second==1&&first==0&&point==1)
{
disbuff[1]=disbuff[0];
disbuff[0]=0;
second=0;
}
else if(second==1&&first==0&&point==0&&disbuff[0]==1) //若第一个按键为1,且无小数点则显示10
{
disbuff[1]=disbuff[0];
disbuff[0]=0;
second=0;
disisten=1;
}
break; //按键为1
case ONE :
if(first==1)
{
disbuff[0]=1;
first=0;
firstisone=1;
}
else if(second==1&&first==0&&point==1)
{
disbuff[1]=disbuff[0];
disbuff[0]=1;
second=0;
}
break;
case TWO : //按键为2
if(first==1)
{
disbuff[0]=2;
first=0;
}
break;
case THREE : //按键为3
if(first==1)
{
disbuff[0]=3;
first=0;
}
break;
case FOUR : //按键为4
if(first==1)
{
disbuff[0]=4;
first=0;
}
break;
case FIVE : //按键为5
if(first==1)
{
disbuff[0]=5;
first=0;
}
break;
case SIX : //按键为6
if(first==1)
{
disbuff[0]=6;
first=0;
}
break;
case SEVEN : //按键为7
if(first==1)
{
disbuff[0]=7;
first=0;
}
break;
case EIGHT : //按键为8
if(first==1)
{
disbuff[0]=8;
first=0;
}
break;
case NINE : //按键为8
if(first==1)
{
disbuff[0]=9;
first=0;
}
break;
case POINT: //按键为小数点
if(first==1&&second==1) //未按下任何键,则为0.?的模式
{
disbuff[1]=0;
disbuff[0]=BLACK;
point=1;
second=0;
}
else if(first==0&&second==1)//按下一数字键,则为?.?的模式
{
point=1;
disbuff[1]=disbuff[0];
disbuff[0]=BLACK;
first=1;
second=0;
}
break;
case ENTER: //按下确定键,
{
adflag=1; //置电压改变标志位
if(first==1&&second==1)
{
disbuff[0]=0;
disbuff[1]=BLACK;
}
if(first==0&&second==1) //第2位未输入的模式
{ if(disbuff[0]!=0)
disbuff[1]=disbuff[0];
disbuff[0]=0;
point=1;
}
if(second==0&&first==1) //第二位无输入的模式
{
disbuff[0]=0;
point=1;
first=0;
}
}
break;
case CLEAR: //按下清除健
{
first=1; //清除标志位
second=1;
point=0;
disisten=0;
adflag=0;
disbuff[0]=0; //第一位显示为0,第二位不显示
disbuff[1]=BLACK;
}
break;
case STEPUP: //按下步进,步进0.1V
if(count==0)
{
countflag=1;
if(first==1&&second==1)
{
disbuff[0]=-1;
disbuff[1]=0;
point=1;
second=0;
first=0;
}
if(first==1&&second==0) //第一位未输入的模式
{
disbuff[0]=0;
point=1;
first=0;
}
if(second==1&&first==0) //第二位无输入的模式
{ if(disbuff[0]!=0)
disbuff[1]=disbuff[0];
disbuff[0]=0;
point=1;
first=0;
second=0;
}
if(disisten==1) //在为最大值10V的模式下
{
disbuff[0]=-1;
disbuff[1]=0;
point=1;
disisten=0;
}
disbuff[0]=disbuff[0]+1; //步进处理
if(disbuff[0]==10)
{
disbuff[1]=disbuff[1]+1;
disbuff[0]=0;
if(disbuff[1]==10)
{
disbuff[1]=1;
point=0;
disbuff[0]=0;
disisten=1;
}
}
}
break;
case STEPDOWN: //步退键,步退0.1V
if(count==0)
{
countflag=1;
if(first==1&&second==1) //2位都没未输入的模式
{
disbuff[0]=1;
disbuff[1]=0;
point=1;
first=0;
second=0;
}
if(second==1&&first==0) //第二位无输入的模式
{ if(disbuff[0]!=0)
disbuff[1]=disbuff[0];
disbuff[0]=0;
point=1;
second=0;
first=0;
}
if(disisten==1) //在为最大值10V的模式下
{
disbuff[0]=10;
disbuff[1]=9;
disisten=0;
point=1;
}
disbuff[0]=disbuff[0]-1; //步退处理
if(disbuff[0]==0)
{
disbuff[1]=disbuff[1]-1;
disbuff[0]=9;
if(disbuff[1]==-1)
{
disbuff[1]=1;
disbuff[0]=0;
point=0;
disisten=1;
}
}
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -