标题:
单片机按键长短按识别程序的问题
[打印本页]
作者:
daiya
时间:
2018-11-17 14:49
标题:
单片机按键长短按识别程序的问题
以下是一段识别按键长短按得单片机程序段,可是放到程序里却不能执行,请各位高手指导一下问题出在哪里?
void key_scan(void)
{
if(key == KEY_DOWN)
{
delay_ms(30);
for(keytime = 0; ((key == KEY_DOWN) && (keytime < LONG_KEY)); keytime++)
{
delay_ms(50);
}
if(keytime >= LONG_KEY)
{
led1 = LED_ON;
led2 = LED_OFF;
}
if((keytime > 0) && (keytime < LONG_KEY))
{
led1 = LED_OFF;
led2 = LED_ON;
}
}
}
作者:
红枫叶
时间:
2018-11-17 15:32
可以改一下延时
作者:
xiong2013
时间:
2018-11-17 17:56
可能for循环语句中当出现for循环过程中松开按键,没有及时跳出循环,用break跳出当前循环,有问题估计也就在循环体内
作者:
HC6800-ES-V2.0
时间:
2018-11-18 09:08
你这个程序的关键,就是for的循环时间,你确定你的长按时间是多少吗?如果你的长按时间没到,也就不会有你预计的结果了。
我是这样做的:
if (K1==0)
{
n=0;
while(~Agoto)
{
n++;
Delay10ms(1);
if (n>200)
{
break;
}
}
if (n>30)
{
LED=0xf0;
}
else
{
LED=0x0f;
}
}
我这个是已经实验成功了的。
作者:
zl2168
时间:
2018-11-18 15:44
本帖最后由 zl2168 于 2018-11-19 16:12 编辑
给你介绍几个按键长短按参考案例
实例
5
4种不同方式键控信号灯
先
Proteus
仿真一下,
确认有效。
实例5 不同方式键控灯.rar
(31.72 KB, 下载次数: 17)
2018-11-19 16:11 上传
点击文件名下载附件
4种不同方式键控信号灯.jpg
(161.52 KB, 下载次数: 27)
下载附件
2018-11-19 16:11 上传
以上摘自张志良编著《
80C51
单片机仿真设计实例教程——基于
Keil C
和
Proteus
》清华大学出版社
ISBN 978-7-302-41682-1.书中电路和程序设计有详细说明,程序语句条条有注解。
作者:
yong761228
时间:
2018-11-18 17:26
我也刚学单片机不久,是不是for循环语句应该这样写,for(keytime = 0; ((key == KEY_DOWN) && keytime < LONG_KEY); keytime++)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1