首页教程软件资讯正文

简述去抖程序的算法思路,Verilog的按键消抖与松手检测如何做到,求给个思路

发布时间:2024-04-29 09:37:55 来源:其它 作者:未知

1,Verilog的按键消抖与松手检测如何做到,求给个思路

1,Verilog的按键消抖与松手检测如何做到,求给个思路

上面就是一个简单的去抖动程序时钟的频率和去除抖动的时间自己根据产品实际确定程序的思路简而言之,如果输入电平改变,就开始计数器计数,只有到达一定时间才认为是真正的变化,这时候输出才随之变化;否则就认为是抖动,输出保持不变

松手我那个程序里也有啊,既有从高到低,也有从低到高的检测

亲,您的代码可以再简单点吗?给个思路就行啊!这代码看的有点头疼,太多变量这好像也只是个消抖的程序吧?我主要想了解一下怎么达到松手检测的目的也就是按下一次按键,只执行一次按键功能的目的

了解,就是连续检测192次都是低电平则是按下消除抖动一开始还没反应过来,

咱能说说思路吗?您这一堆代码一上来,让我很是头疼啊

2,51单片机软件方式按键消抖

2,51单片机软件方式按键消抖

原地等待10MS的话,会耽误你的程序运行如果你程序本身不在乎,那就为所谓但是,单片机都是死循环程序你完全可以利用程序本身一次循环的时间,来模糊计算延时

例如,程序本身循环一次要1MS,那么计数10次,就是10MS,就行了

编写消抖程序,我的思路是这样子的:使用定时器0延时10ms

程序在初始化之后,执行的就是判断p1.0引脚电平状态的指令,如果p1,0是低电平,那么就启动定时器0,开始计时,那么此时主程序应该干什么呢?

是原地等待还是继续检测p1.0的状态呢?

--P1.0,可以不检测了,因为已经启动了定时器

--可以检测其它接口

--如:串口,AD转换接口,温度检测,烟雾报警接口,红外输入接口...

--也可以输出,动态数码管显示...

定时时间到之后,在中断服务程序中检测p1.0的状态,如果是低电平,则说明按键按下了,就执行相应的子程序,执行完子程序之后呢?程序是否返回了中断服务程序的位置,继续执行呢?

--回到发生中断的地方

如果是高电平的话,就退出中断服务程序,那么退出之后怎么办?

--回到发生中断的地方

--没有了定时,应该继续执行检测p1.0状态

老师一般这样教.假设没有按键按下时是低电平,有按键按下是高电平.当程序读取到IO口为高电平时,延时一段时间,再一次读取IO口电平,如果还是高电平,则认为是有效按键,进入按键处理程序.

此时一般还有一个处理,即如果按键不松开,则不会再次处理.

你对自己设计的框架都不是非常清晰啊

开始计时,那么主程序应该干嘛这不是你自己要设计的内容嘛,我们怎么会知道你主程序里面要干嘛呢?

我建议你把设计的功能说清楚,要实现什么说明白一些,这样大家就好给你思路了

或者你把你的程序弄上来,大家帮你看看你的程序有什么样的缺陷

按照正常中断来说,退出中断后肯定是会继续往下执行任务的,这个不用怀疑,除非你的系统跑飞了,或者存在别的BUG

文章TAG: 思路 程序 松手 消抖 检测 按键 简述去抖程序的算法思路

还没有评论,快来抢沙发吧!

最新发现

相关资讯

新闻热榜

热门游戏

精彩专题