[STC单片机] 按键扫描函数,自写,

[复制链接]
 楼主| 发表于 2015-4-12 11:18 | 显示全部楼层
AV693 发表于 2015-4-12 09:00
KEIL的switch编译有时候出现莫名奇妙的问题,试用
if()
{}

好,谢谢,我会试试的
 楼主| 发表于 2015-4-12 11:20 | 显示全部楼层
谭小健 发表于 2015-4-11 12:20
建议用状态机写按键扫描函数

状态机的优势在哪里呢?
 楼主| 发表于 2015-4-12 11:27 | 显示全部楼层
geqingsong2013 发表于 2015-4-11 14:29
首先要确保硬件是否正常。当单下按键之后对应管脚是否由高变低。
其次,你的delay_ms();函数是否大致准确呢 ...

硬件这一块可以确定没有问题,已经试过了,按下按键之后对应管脚是否由高变低,我会进行验证的,delay_ms();延迟函数如果过短的话会出现什么情况?
 楼主| 发表于 2015-4-12 11:29 | 显示全部楼层
xyz549040622 发表于 2015-4-11 09:06
没有按键,返回扫描到的初始键值,另外,建议放到定时器中,使用状态机。

求道兄,贴一个状态机的例子,本人对状态机不是很了解,
发表于 2015-4-13 10:51 | 显示全部楼层
利用中断,定时扫描。
发表于 2015-4-13 12:25 | 显示全部楼层
lgq_123 发表于 2015-4-12 11:20
状态机的优势在哪里呢?

相对延时消抖,状态机几乎不占用CPU。具体不能一两百字说清楚,到论坛和百度搜索状态机 按键 ,就有很多相关**,我也是看了几篇**才弄懂的,
发表于 2015-4-14 12:44 | 显示全部楼层
if(temp != 0xf0){  //再次确认按键是否被按下
                         temp = key_port
                         temp &= 0xf0;
                                     switch(temp){
switch前加这个要不一直在if函数里面

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表