‘壹’ 51单片机按键仿真反应迟钝,是怎么回事
给你个建议
1、有显示函数的
键按下?---含显示子函数循环等键放开---放开键后处理--
显示子函数即当延时函数用
2、51单片机常用低电平作有效信号
if(button4==0) //
‘贰’ 51单片机C程序:如何实现一个按键长按3秒进入程序,再长按3秒关机,短一次却换流水灯切换模式,共3种模式
长按3秒进入程序可以这样
while(1)
{
if(key==0)//按键按下
{
cnt++;
if(cnt>300)
{
cnt=0;//到3秒,退出本循环进入下一段程序
break;
}
dely(10);//延时10毫秒
}
}
while(1)
{
...//此为主程序段
}
‘叁’ 单片机设计的按键有时反应很慢,是不是必须得用中断设计按键 用中断是什么思路(有7个按键)求指点
没必要用中断,反应慢,你可以提高晶振频率,优化程序,可能是你按键等待的时间长了,减小等待按键弹起的时间试试看
‘肆’ 怎么让单片机按一下按键执行一个程序,再按一下执行另一个程序
loop:
call key
jmp loop
key:
jnb p3.0,rel
ret
rel:
call delay20MS
jnb p3.0,rel
第一次这里标志位为0,则执行,第一次按下功能。
第二次按下时,这里标志位为1,则跳过下边的程序,执行另一个程序了。执行完将这个标志位清零。
CLR FLAG.0
RET
第一次按下,会到这里,执行下功能
置起一个标志位。
如SETB FLAG.0
RET
这样就这实现了一键两功能,如果要更多,就设置一个寄存器,每次加1,对比。是那个执行那个程序,最多一个按键可以做到255种功能。当然你肯定用不了这么多。
满意给我加分吧,只能给你思路,给你完整程序是害你的。
‘伍’ 怎么让单片机按一下按键执行一个程序,再按一下马上执行另一个程序
call key
jmp loop
key:
jnb p3.0,rel
ret
rel:
call delay20MS
jnb p3.0,rel
第一次这里标志位为0,则执行,第一次按下功能。