MSP430按键与ADC采集代码整合出现的问题求助

2019-03-24 09:37发布



这是我参考别人按键程序修改的主程序:

下面的是ADC电压采集程序:

现在出现的问题是:在进行实验仿真时,程序是可以完全地运行,只是在运行过程中,只能使用按键一次,按键按下之后程序就只能输出一个方波,再另外按下另一个按键就没有反应。程序在
时,KEY的值就保持不变了,请问该如何修改程序,使程序能按下一个键就能输出一个方波,使它们自由转换呢?求助!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
qiushenghua
2019-03-25 08:57
如果是我来写这段程序,首先我就不会增加那么多的delay_ms函数。因为你这用的MSP430是低功耗MCU,所以我会用低功耗模式来实现ms级别的延时。

再说说处理按键,我会使用一个全局变量Key_State来储存当前按键按下的信息,使用静态变量Last_Key_State来记住上一按键状态信息。使用unsigned char类型,那么一个变量能储存8个按键的信息。

在采集按键前,将Key_State存进Last_Key_State,然后更新Key_State。如果Last_Key_State与Key_State的某位不同,说明该位代表的按键经历过变动。当然这个变动可能是按键按下也可能是按键弹起。

在消抖这件事情上,可以通过这样的方式来做:连续两个采样周期采集到的按键状态一致。如果满足这个条件,那么我们完全可以认为按键没有抖动。当然,两个按键采样周期之间的时间间隔需要大于10ms。


楼主不妨贴出完整的代码(文本而不是图片),和硬件连接等信息,这样我们可以在楼主代码基础上改动,也更容易找出问题所在。另外,我们尚且未知楼主的MCU的具体型号,很多判断均基于本版是MSP430版,既然楼主在本版发帖,那么使用的就是MSP430MCU这一假设做出,即便如此,MSP430不同系列不同型号之间也存在差异,仍可能存在判断不准确的情形。

一周热门 更多>

相关问题

    相关文章