标题:
STC89C52单片机四个按键定时器消抖 求思路
[打印本页]
作者:
许许许
时间:
2020-4-26 19:41
标题:
STC89C52单片机四个按键定时器消抖 求思路
请问四个按键定时器消抖如何实现,功能大概就是KEY1选择设置,KEY2增加,KEY3减少,KEY4运行。查了资料都是单个按键消抖,请各位大神指导
作者:
许许许
时间:
2020-4-26 21:05
void t0() interrupt 1 //1ms 用于按键去抖动。 { TH0=(65536-1000)/256; TL0=(65536-1000)%256; ms++; if(key==0)key_num++; if(ms==15) //15秒刷新一次 { if(key_num>10) //15秒钟如果低电平持续时间大于10秒就认为按键按下,而不是抖动 key_statue=1; //按键标识位置1 ms=0; key_num=0; } }
作者:
许许许
时间:
2020-4-26 21:06
一个按键原理懂,但是四个按键如何处理啊,初学者,请指导
作者:
dzbj
时间:
2020-4-26 22:28
简单的办法就是和1个按键一样 都单独防抖 一般防抖的时间也就15~30ms 不会影响其它按键
作者:
许许许
时间:
2020-4-26 22:47
dzbj 发表于 2020-4-26 22:28
简单的办法就是和1个按键一样 都单独防抖 一般防抖的时间也就15~30ms 不会影响其它按键
就是不想把程序搞得太长复杂,想问问有没有简洁一点的写法
作者:
liuyanchuan
时间:
2020-4-26 22:54
可以为定时中断设置一个按键识别码,在某一个键按下后,先设置该键的识别码,之后启动定时器,待定时时间到产生中断后,可以根据不同的按键识别码转向不同的按键处理程序。
作者:
xqleft
时间:
2020-4-27 00:30
兄弟 你想一个子程序把所有的按键都带进去哦?
作者:
wulin
时间:
2020-4-27 07:07
按键任务在主函数中处理
void t0() interrupt 1 //1ms 用于按键去抖动。
{
static unsigned char count=0; //计数变量
static bit key_sign=0; //按键自锁标志
unsigned char temp; //临时变量
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
temp=P1&0x0f;//P1.0~P1.3四个按键
if(temp!=0x0f)
{
if(++count>=15 && key_sign==0) //15毫秒刷新一次
{
key_sign=1;//按键自锁,防止重复响应
switch(temp)
{
case 0x0e: key_statue=1; break;//输出键值
case 0x0d: key_statue=2; break;
case 0x0b: key_statue=3; break;
case 0x07: key_statue=4; break;
}
}
}
else
{
key_sign=0;
count=0;
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1