• 边沿触发和电平触发的区别


    边沿触发和电平触发的区别 
    当然不一样了
    电平触发是在高或低电平保持的时间内触发,
    而边沿触发是由高到低或由低到高这一瞬间触发
    追问:
    我总觉得都是在电平为某一值是而触发的。那边沿触发到底解决了电平触发哪点没有解决的问题呢?
    追答:
    边沿触发一般时间短,边沿触发一般时间都是us级的,响应要快的,而电平触发只须是高和低就可以了,没时间要求,比如10s 时间内总是低电平,那么它也是触发的,
    比如中断计时或计数,最好用边沿触发,用电平触发误差会很大,电平触发一般用于简单报警,开关一类(时间要求不高的)
    分类:
    电平触发,就是只有高电平的时候才做指定的事, 
    边沿触发,就是有高电平向低电平转换,或者翻过来转换,这个转换过程触发一个动作。 
    上升沿,顾名思义,就是低电平向高电平转换的瞬间,比如 
    _______ 
    ____/ ,这个图中,/部分就是上升沿, 

    ______ 
    \_____ ,这个图中,部分就是下降沿


    电平就是电压,高电平就是高电压,低电平就是低电压 
    高电平触发就是当电压为高就触发 
    边沿触发就是当电压由高变低或由低变高时触发 
    上升沿触发 就是当电压从低变高时触发 
    下降沿触发 就是当电压从高变低时触发


    边沿触发:上升沿和下降沿,这个在学数电时都学过的,简单说就是电平变化那一瞬间。

    电平触发:一般是指低电平,就是电平变为低了之后的全部时间里。

    如果是下降沿触发,当从高至低电平转变时,触发产生。低电平保持多久都只产生一次。

    如果是低电平触发,那么在低电平时间内中断一直有效。如果在电平没有恢复之前就退出中断程序,那么会在退出后又再次进入中断。只要不退出是不会重复触发的。我的做法是在退出前关闭中断,等后面有空时再打开。、

    如:外部中断1中断中来检测按键。

    void ISR_INT1(void) interrupt 2 
    {
    
    if(!INT1)    //INT1为外部中断1,INT1=P3^3.
    {
    DelayMs(10);//在此处可以添加动程序,防止按键抖动造成错误
    if(!INT1)
    while(!INT1);//等待按键释放
    {
    L1=!L1; 
    }
    }

    来在外部中断中来检测按键。虽有一丢丢效果。
    但不建议用外部中断来检测按键。
    当你按下S2或S3时已经执行中断服务子程序去了,延时消抖是不可行的,只有采用硬件消抖。在实际应用中INT1和INT0接的应该是稳定数字数字信号,而不是按键产生有干扰的数字信号,有条件的话就用硬件消抖。

    外部中断是用来检测要求响应速度高(微秒级)的外设的,而按键的动作时间都大于40毫秒,你可以测试一下。
    虽然还是有很多做开发板的把按键做在中断上,但那只是验证是否好用,产品上尽量不要这样做。
    按键消抖也不要用延时10ms再检测一次的办法,延时的这10ms实在是浪费控制器的资源,要知道时间对微控制器来说是非常宝贵的。
    在做按键检测时,建议设置一个10ms的定时器中断作为时钟节拍,并在中断中设置标志。
    程序的主循环中检测时钟节拍标志,检测到标志后清除标志并扫描按键,记录当前按键状态并和上次检测的结果做比较,并记录相同的次数,连续三次检测到同一个按键按下,则确认按键按下。
    这样既可以消抖保证按键的准确,又较少的占用了微控制器的时间资源,稍微增加了点程序的空间,在单片机做的人机界面的系统中,应该是最合算的。

  • 相关阅读:
    如何自定义一个通信协议
    c++ 如何编写接口类(interface)
    QT国际化(中英转换)
    QT中文乱码与国际化支持
    frp官方中文文档
    K3 LEDE固件更改FRP客户端版本
    Linux下的tar压缩解压缩命令详解
    QT入门系列(3):控制台输出QString
    Delphi、Lazarus保留字、关键字详解
    使用TortoiseSVN的客户端钩子脚本触发Jenkins构建
  • 原文地址:https://www.cnblogs.com/isAndyWu/p/9917570.html
Copyright © 2020-2023  润新知