上面视频所使用的函数
/*IO口 连续按键次数截获函数,返回连续按键的次数
(测试环境:STC8A4K32S2A12 晶振12M)
调用示例:kp1=p10_Press(); if(kp1==8) { 写上要执行的程序片段 ;} */
sbit p10=P1^0; //设置IO口
unsigned int p10_Dn=0,p10_delay=0;//p10_Dn倒计时 ,p10_delay用于控制超过1秒未按键则次数清0
unsigned char p10_num=0,i;//记录连续按的次数
unsigned char p10_Press(){
if((p10==0)&&(p10_Dn==0)){p10_Dn=1111;p10_delay=0;p10_num++;return 0;} //p10_Dn=1111倒计防接触不好的误触
if((p10_Dn>0)&&(p10==1)) {p10_Dn--;} //当按键弹起后开始倒计时
if(p10_num==0) return 0; //未检测到按键不执行后面代码,节约CPU
//延时到了则返回连续按的次数 return i
if(p10_delay>50000) {i=p10_num;p10_num=0;return i;} //p10_delay根据芯片运算速度来调整合适的值
if(p10_delay<65535) p10_delay++;
return 0;
}
/*IO口 连续按键次数截获函数,返回连续按键的次数
(测试环境:STC8A4K32S2A12 晶振12M)
调用示例:kp1=p10_Press(); if(kp1==8) { 写上要执行的程序片段 ;} */
sbit p10=P1^0; //设置IO口
unsigned int p10_Dn=0,p10_delay=0;//p10_Dn倒计时 ,p10_delay用于控制超过1秒未按键则次数清0
unsigned char p10_num=0,i;//记录连续按的次数
unsigned char p10_Press(){
if((p10==0)&&(p10_Dn==0)){p10_Dn=1111;p10_delay=0;p10_num++;return 0;} //p10_Dn=1111倒计防接触不好的误触
if((p10_Dn>0)&&(p10==1)) {p10_Dn--;} //当按键弹起后开始倒计时
if(p10_num==0) return 0; //未检测到按键不执行后面代码,节约CPU
//延时到了则返回连续按的次数 return i
if(p10_delay>50000) {i=p10_num;p10_num=0;return i;} //p10_delay根据芯片运算速度来调整合适的值
if(p10_delay<65535) p10_delay++;
return 0;
}