打印
[PIC®/AVR®/dsPIC®产品]

中断双边沿检测按键动作

[复制链接]
1148|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuanhuanzi|  楼主 | 2023-9-14 16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://bbs.21ic.com/icview-3325360-1-1.html
参靠了上面的神贴思路,尝试了一下啊。
#include "mcc_generated_files/system/system.h"

bool SW_flag = 0; //记录是否发生了下降沿中断
bool SW_Button_active_flag =0; //有效按键激活标记


void SW_Button_Interrupt_Handle(void)
{
    if(SW_GetValue()==LOW)
    {
        SW_flag = 1;
    }
    else if( ( SW_GetValue()==HIGH ) && (SW_flag == 1) )
    {
        SW_Button_active_flag =1;
        SW_flag = 0;
    }
}


/*
    Main application
*/


int main(void)
{
    SYSTEM_Initialize();

    // If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts
    // If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global Interrupts
    // Use the following macros to:

    // Enable the Global Interrupts
    INTERRUPT_GlobalInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();

    SW_SetInterruptHandler(SW_Button_Interrupt_Handle);

    while(1)
    {
        if(SW_Button_active_flag == 1)
        {
            SW_Button_active_flag = 0;
            LED_Toggle();
        }
    }   
}
试了一下,效果很好

使用特权

评论回复
沙发
xuanhuanzi|  楼主 | 2023-9-14 16:33 | 只看该作者
根据帖子中的说明,如果按键使用一个104电容效果会更好更加稳定。

使用特权

评论回复
评论
xuanhuanzi 2023-9-16 21:39 回复TA
@forgot :手头不是都有单片机开发板吗,你试试看。 
xuanhuanzi 2023-9-16 21:38 回复TA
@forgot :不需要滤波啊,我没滤波,用的内置上拉电阻,发现很OK。 
forgot 2023-9-15 09:13 回复TA
滤波抗干扰吗 
板凳
xuanhuanzi|  楼主 | 2023-9-16 21:40 | 只看该作者
这个方法是很不错的,不过部分按键可能机械问题会导致按了没反应,那是按压力度不够。这个无妨。主要避免按一次触发多次的情况。

使用特权

评论回复
地板
tpgf| | 2023-10-12 16:29 | 只看该作者
这样的操作无形中就减少了误操作的几率

使用特权

评论回复
5
paotangsan| | 2023-10-12 16:46 | 只看该作者
xuanhuanzi 发表于 2023-9-14 16:33
根据帖子中的说明,如果按键使用一个104电容效果会更好更加稳定。

这种软件方式已经在一定程度上起到了滤波的作用了

使用特权

评论回复
6
wakayi| | 2023-10-12 17:03 | 只看该作者
频繁按压也不会频繁的相应了是吧

使用特权

评论回复
7
xiaoqizi| | 2023-10-12 18:33 | 只看该作者
采用这种方式的话  就不需要做延时防抖了

使用特权

评论回复
8
wowu| | 2023-10-12 19:07 | 只看该作者
这种方式充分利用了引脚的自我保护机制

使用特权

评论回复
9
renzheshengui| | 2023-10-12 19:41 | 只看该作者
xuanhuanzi 发表于 2023-9-16 21:40
这个方法是很不错的,不过部分按键可能机械问题会导致按了没反应,那是按压力度不够。这个无妨。主要避免按 ...

只要不是频繁按压 基本不会出现无法识别的现象

使用特权

评论回复
10
Bowclad| | 2023-11-23 16:22 | 只看该作者
加电容是为了消抖吧

使用特权

评论回复
11
xuanhuanzi|  楼主 | 2023-11-27 14:27 | 只看该作者
Bowclad 发表于 2023-11-23 16:22
加电容是为了消抖吧

是的,推荐加104电容,也就是0.1UF,效果嘎嘎好使。

使用特权

评论回复
12
Jacquetry| | 2023-11-27 14:28 | 只看该作者
自我保护机制是什么啊

使用特权

评论回复
13
AloneKaven| | 2023-11-28 10:45 | 只看该作者
加电容是不是容易坏啊

使用特权

评论回复
14
Stahan| | 2023-11-30 23:22 | 只看该作者
元件多了自然容易坏

使用特权

评论回复
15
星辰大海不退缩| | 2023-12-1 08:28 | 只看该作者
这样的操作减少了误操作的几率

使用特权

评论回复
16
Henryko| | 2023-12-4 11:30 | 只看该作者
硬件消抖比软件的好多了

使用特权

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

本版积分规则

173

主题

2211

帖子

3

粉丝