月明Mo的博客_CSDN博客-蓝桥杯单片机,Opencv,Proteus8领域博主
关键知识点:用状态机键盘——长按S4显示数码管,松开不显示数码管
unsigned char()
{
u8 temp,val;
temp=P3&0x0f;
switch(temp) //1111 -8421
{
case 0x0e: val=7; break;
case 0x0d: val=6; break;
case 0x0b: val=5; break;
case 0x07: val=4; break;
default: val=0; break;
}
return val;
}
void scan_key() //每10ms扫描一次
{
u8 up,down,temp;
static u8 old=0;
temp=read_key();
down=temp&(old^temp);
up =~temp&(old^temp);
old=temp;
if(down)//按下执行
{ if(smg_mode==0&&temp==4) //按下s4,且当前界面在0,
smg_mode=3; //切换到界面3
}
if(up)//按下松开执行
{
if(smg_mode==3) //当前界面在3,
smg_mode=0; //切换到原来界面0
else keyval=up;
}
}