修改后有20%的概率出现按键按下但没有响应

[复制链接]
471|17
手机看帖
扫描二维码
随时随地手机跟帖
huanghuac|  楼主 | 2017-12-16 15:04 | 显示全部楼层 |阅读模式
unsigned char key_scan(void)
{
static unsigned char key_state=0,key_old;
unsigned char key_press,key_return=KEY_NO;
key_press=PINE&0x07;
switch(key_state)
{
case key_state_0:
if(key_press!=KEY_NO) key_state=key_state_1;key_old=key_press;//key_old=key_press这句不要
break;
case key_state_1:
if(key_press==key_old)//这句改成if(key_press!=KEY_NO)
{
key_return=key_press;
key_state=key_state_2;
}
else
{
key_state=key_state_0;
}
break;
case key_state_2:
if(key_press==KEY_NO)
{
key_state=key_state_0;
}
break;
}
return key_return;
}



于扫描PE口的pe0~pe2的独立按键(10ms扫描一次)但是为啥在没有按键的情况下我用手碰(PE0~PE2)中的一个按键就误动作(修改不修改都是这样)的上拉电阻我已经开启了 修改后有20%的概率出现按键按下但没有响应不知道为啥希望大家帮帮忙
这两个本质的区别是什么呢
huwr| | 2017-12-16 15:09 | 显示全部楼层

注意break的使用、、、、、、、

使用特权

评论回复
huanghuac|  楼主 | 2017-12-16 15:11 | 显示全部楼层
break?  最后的一个  我感觉去和不去都一样呀

使用特权

评论回复
bqyj| | 2017-12-16 15:14 | 显示全部楼层

你的key_state和key_old都为局部变量,那么你的去抖就没有作用,等于没有去抖。

使用特权

评论回复
wenfen| | 2017-12-16 15:16 | 显示全部楼层

使用去抖程序吗?

使用特权

评论回复
zhuhuis| | 2017-12-16 15:18 | 显示全部楼层
或者使用硬件去抖电路应该也可以

使用特权

评论回复
huanghuac|  楼主 | 2017-12-16 15:20 | 显示全部楼层
哦,有道理啊

使用特权

评论回复
huwr| | 2017-12-16 15:24 | 显示全部楼层
硬件去抖怎么做啊

使用特权

评论回复
gongche| | 2017-12-16 15:27 | 显示全部楼层

case后边不用加{ }吗

使用特权

评论回复
chenho| | 2017-12-16 15:28 | 显示全部楼层

if(key_press==key_old)//这句改成if(key_press!=KEY_NO)
没明白这样改的意义

使用特权

评论回复
huanghuac|  楼主 | 2017-12-16 15:31 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
chenho| | 2017-12-16 15:35 | 显示全部楼层
小弟最近用51核的单片机,要使用keil 软件,但引导文件 .a51文件与keil 里面自带的不通用,所以必须知道里面详细设置该具体怎么设置,看自带的a51文件里面的一些语法我也不太明白,比如 ?B_MODE EQU 8 为什么带“?”,是什么意思呢?又比如:
IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
里面的 <> 是什么意思? 不等于吗?
百度了很久找到的都是一些很简单的说明而已,所以在这里求助各位!谢谢了!

使用特权

评论回复
gongche| | 2017-12-16 15:38 | 显示全部楼层
<>大于或小于的意思,其实就是不等于的意思

使用特权

评论回复
chenho| | 2017-12-16 15:42 | 显示全部楼层

除了楼上说的外,其它设置的一些详细设置说明有没有资料呢?谢谢!

使用特权

评论回复
wenfen| | 2017-12-16 15:47 | 显示全部楼层

?就是否定的意思

使用特权

评论回复
happy_10| | 2017-12-16 15:50 | 显示全部楼层

4楼朋友,似乎不是你说的意思吧? 比如  ?C_PBP 这个;

使用特权

评论回复
songqian17| | 2017-12-16 15:51 | 显示全部楼层
建议楼主找本C语言的书看看,可以看谭浩强的

使用特权

评论回复
huanghuac|  楼主 | 2017-12-16 15:53 | 显示全部楼层
其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

772

主题

8473

帖子

6

粉丝