OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4046|回复: 12

【分享】基于STM8L152C6的定时器消抖按键扫描程序

[复制链接]

55

主题

1231

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2624
金钱
2624
注册时间
2014-2-13
在线时间
514 小时
发表于 2015-11-2 09:42:59 | 显示全部楼层 |阅读模式
最近鼓捣STM8,性价比高,好用,爱不释手,特意来给大家分享下按键扫描这个程序,欢迎拍砖指导!!!
贴代码,编译平台:IAR FOR STM8
[mw_shl_code=c,true]/* 开发板硬件连接 |-------------| | KEY0-PC1 | |-------------| */ #include "key.h" BitStatus KeySta = SET; /************************************************************************* * 名称: Key_Init * 功能: 按键外设GPIO引脚初始化操作 * 形参: 无 * 返回: 无 * 说明: 无 ************************************************************************/ void KEY_Init(void) { GPIO_Init(GPIOC, GPIO_Pin_1, GPIO_Mode_In_PU_No_IT); } /************************************************************************ * 名称: Key_Driver * 功能: 按键驱动函数,检测按键动作,调度相应动作函数,需在主循环中调用 * 形参: 无 * 返回: 无 * 说明: 无 ************************************************************************/ void Key_Driver(void) { static BitStatus backup = SET; if (KeySta != backup) //当前值与前次值不相等说明此时按键有动作 { if (backup == RESET) //如果前次值为 0,则说明当前是弹起动作 { LED_Reverse(LED1); } backup = KeySta; //更新备份为当前值,以备进行下次比较 } } /*********************************************************************** * 名称: Key_Scan * 功能: 按键扫描函数,需在定时器中断里调用 * 形参: 无 * 返回: 无 * 说明: 无 **********************************************************************/ void Key_Scan(void) { static u8 keybuf = 0xff; if (KEY0 == RESET) { keybuf = keybuf << 1; } else { keybuf = keybuf<<1 | 0x01; } if (keybuf == 0x00) { //连续 8 次扫描值都为 0,即 16ms 内都只检测到按下状态时,可认为按键已按下 KeySta = RESET; } else if (keybuf == 0xFF) { //连续 8 次扫描值都为 1,即 16ms 内都只检测到弹起状态时,可认为按键已弹起 KeySta = SET; } else {} //其它情况则说明按键状态尚未稳定,则不对 KeySta 变量值进行更新 } [/mw_shl_code]

STM8L_KEY(基于库,定时器扫描消抖).zip

309.3 KB, 下载次数: 599

技术交流,Sell 中颖单片机,欢迎私信骚扰
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2015-11-2 09:47:47 | 显示全部楼层
顶一个!我也比较喜欢用iar平台
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-11-2 12:52:47 | 显示全部楼层
玩得很high嘛
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

55

主题

1231

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2624
金钱
2624
注册时间
2014-2-13
在线时间
514 小时
 楼主| 发表于 2015-11-2 13:12:56 | 显示全部楼层
回复【3楼】八度空间:
---------------------------------
做了板子,估计这两天到,调试调试,要不要玩一块,哈哈
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-11-2 17:21:05 | 显示全部楼层
回复【4楼】黑夜之狼:
---------------------------------
你做了多少啊?有的送?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

55

主题

1231

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2624
金钱
2624
注册时间
2014-2-13
在线时间
514 小时
 楼主| 发表于 2015-11-2 17:26:10 | 显示全部楼层
回复【5楼】八度空间:
---------------------------------
准备做淘宝的,调试好了之后就上架,看在你份上,送一块给八度大大又如何,哈哈哈哈哈
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-11-2 17:41:40 | 显示全部楼层
回复【6楼】黑夜之狼:
---------------------------------
荣幸喔,哈哈
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2015-11-2 20:21:52 | 显示全部楼层
不错,有点意思。谢谢分享~
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

0

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
483
金钱
483
注册时间
2014-2-9
在线时间
91 小时
发表于 2016-5-9 09:48:06 | 显示全部楼层
谢谢分享!刚好在学STM8
回复 支持 反对

使用道具 举报

39

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2276
金钱
2276
注册时间
2015-5-6
在线时间
247 小时
发表于 2016-5-22 13:46:08 | 显示全部楼层
static,在函数里面写和在函数外面写有什么区别?
回复 支持 反对

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6647
金钱
6647
注册时间
2016-5-29
在线时间
908 小时
发表于 2016-5-31 00:49:32 | 显示全部楼层
liaihua1997 发表于 2016-5-22 13:46
static,在函数里面写和在函数外面写有什么区别?

static 在函数里面,当然只有这个函数可以使用他后面的变量. 函数外的语句不可直接使用他的变量.
但可以通过指针指向他的变量间接来操作他的变量.写在函数外面 ,意思只有这个.C文件里面的语句可以操作他的变量,其它的.C不能操作.
回复 支持 反对

使用道具 举报

39

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2276
金钱
2276
注册时间
2015-5-6
在线时间
247 小时
发表于 2016-6-5 22:31:13 | 显示全部楼层
操作系统 发表于 2016-5-31 00:49
static 在函数里面,当然只有这个函数可以使用他后面的变量. 函数外的语句不可直接使用他的变量.
但可以 ...

非常感谢,
回复 支持 反对

使用道具 举报

55

主题

1231

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2624
金钱
2624
注册时间
2014-2-13
在线时间
514 小时
 楼主| 发表于 2016-6-11 23:52:18 | 显示全部楼层
blw_wangwei 发表于 2016-6-10 14:38
非常不错,谢谢分享!

你是在刷积分吗
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-30 02:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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