标题:
单片机检测按键状态程序的请教
[打印本页]
作者:
callmesbplease
时间:
2019-9-8 10:22
标题:
单片机检测按键状态程序的请教
大家好,还是我,之前的问题已经解决了,现在我来问问P0&0x0f 这种代码,这个我明白是检测电平变化,但是我自己不懂得该怎么写,就是面对一个不熟悉的单片机时候,要怎么写这种类型的控制,我用KEY=P3_5这种写法然后if(key==0)来检测,一个个控制LED,发现很繁琐,所以想要学会这种比较简单的检测方式,请大家详细说明一下这个的用法的全部好吗?(ps:题主会进制)
193858u9bcprkcaapzzvaz.jpg
(522.86 KB, 下载次数: 58)
下载附件
2019-9-8 10:22 上传
作者:
tyrl800
时间:
2019-9-8 17:25
不同类型按键要采用不同的检测方法,你表达不清楚
作者:
baogang
时间:
2019-9-8 20:24
这个其实还是比较简单的。主要还是你没有习惯这种方法。
按照lz的意思,应该是这样的:
key = P0;
key = key & 0x0f;
然后是
if(key != 0x0f)
{
//执行语句
}
意思大致是:key先存储P0口的高低电平状态,然后和0x0f做“与”运算(不一定非要是0x0f)。然后得到“与”运算之后的结果,“与”运算的结果如果和0x0f不一致,则表明P0口的数据发生了变化,即按键按下之后,改变了P0的电平状态。如果数据一致,则表示P0电平未发生变化,按键没有被按下。
举个栗子:
若按键在P0.3,P0初始为0x0f,(0000 0111 b),按下按键之后,会变成0x07(0000 0111b),
若按键按下0x07(0000 0111) & 0x0f(0000 1111) = 0x07(0000 0111)不等于0x0f
此时,key的值会赋值给P2。
作者:
hantu
时间:
2019-9-8 22:17
学到矩阵按键的扫描时,最好能结合仿真软件比如proteus来看一下引脚的电平实际变化,会更容易理解的。
作者:
yzwzfyz
时间:
2019-9-9 01:12
用脑子想一下,你要区分三个不同的按键,即使用没有时序,它也有8种按键组合方式(不按、单按、双按、三按),你想如何简单呢?
简单与复杂与你的设计要求相关。
作者:
aking991
时间:
2019-9-9 08:27
P0&0x0f 这个只是表达屏蔽高4位,只取低4位作状态判断,也就是按键是接在低4位,用每次对应低4位状态值变化而判断即可
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1