发新帖我要提问
12
返回列表
打印
[STC单片机]

按键扫描函数,自写,

[复制链接]
楼主: lgq_123
手机看帖
扫描二维码
随时随地手机跟帖
21
lgq_123|  楼主 | 2015-4-12 11:18 | 只看该作者 回帖奖励 |倒序浏览
AV693 发表于 2015-4-12 09:00
KEIL的switch编译有时候出现莫名奇妙的问题,试用
if()
{}

好,谢谢,我会试试的

使用特权

评论回复
22
lgq_123|  楼主 | 2015-4-12 11:20 | 只看该作者
谭小健 发表于 2015-4-11 12:20
建议用状态机写按键扫描函数

状态机的优势在哪里呢?

使用特权

评论回复
23
lgq_123|  楼主 | 2015-4-12 11:27 | 只看该作者
geqingsong2013 发表于 2015-4-11 14:29
首先要确保硬件是否正常。当单下按键之后对应管脚是否由高变低。
其次,你的delay_ms();函数是否大致准确呢 ...

硬件这一块可以确定没有问题,已经试过了,按下按键之后对应管脚是否由高变低,我会进行验证的,delay_ms();延迟函数如果过短的话会出现什么情况?

使用特权

评论回复
24
lgq_123|  楼主 | 2015-4-12 11:29 | 只看该作者
xyz549040622 发表于 2015-4-11 09:06
没有按键,返回扫描到的初始键值,另外,建议放到定时器中,使用状态机。

求道兄,贴一个状态机的例子,本人对状态机不是很了解,

使用特权

评论回复
25
yuanquan12345| | 2015-4-13 10:51 | 只看该作者
利用中断,定时扫描。

使用特权

评论回复
26
谭小健| | 2015-4-13 12:25 | 只看该作者
lgq_123 发表于 2015-4-12 11:20
状态机的优势在哪里呢?

相对延时消抖,状态机几乎不占用CPU。具体不能一两百字说清楚,到论坛和百度搜索状态机 按键 ,就有很多相关**,我也是看了几篇**才弄懂的,

使用特权

评论回复
27
hahaliangliang| | 2015-4-14 12:44 | 只看该作者
if(temp != 0xf0){  //再次确认按键是否被按下
                         temp = key_port
                         temp &= 0xf0;
                                     switch(temp){
switch前加这个要不一直在if函数里面

   

使用特权

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

本版积分规则