按键长按的代码比较简单,不过经测可以使用,各位码友若有更好代码,欢迎评论区留言,有链接就行。
.H文件
#ifndef _INDEPENDENT_H_
#define _INDEPENDENT_H_
#include "STC15F2K60S2.h"
#include "delay.h"
extern unsigned char s7, s6, s5, s4;
extern unsigned char flagSMGScreen;
void key_scan();
#endif
.C文件
#include "Independent_key.h"
unsigned char s7=1, s6=0, s5=0, s4=0;
unsigned char flagSMGScreen;
unsigned char flag=0;
void key_scan()
{
if(P30==0) //S7
{
delay_5ms();
if(P30==0)
{
s7=~s7;
flagSMGScreen=0; //数码管显示界面0
}while(!P30);
}
if(P31==0) //S6
{
delay_5ms();
if(P31==0)
{
s6=1;
flagSMGScreen=1; //数码管显示界面1
}while(!P31);
}
if(P32==0) //S5
{
delay_5ms();
if(P32==0)
{
s5=1;
}while(!P32);
}
if(P33==0) //S4
{
delay_5ms();
if(P33==0)
{
s4++;
if(s4==4)
s4=0;
}//while(!P33); //此处不能有while检测
}
if(P33==0) //s4常按
{
Delay200ms();
if(P33==0)
{
flag=1;
flagSMGScreen=2; //数码管显示界面2_长按温度显示
}
}else
{
Delay5ms();
if(flag==1) //该标志位保证了没有长按s4时,
{ //flagSMGScreen=0只执行一次。
flag=0;
flagSMGScreen=0;
}
}
}
本文分享 CSDN - KGback。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。