zoukankan      html  css  js  c++  java
  • 如何检测 51单片机IO口的下降沿

    下降沿检测,说白了就是满足这样一个逻辑,上次检测是1,这次检测是0,就是下降沿。
    从这个条件可知,要确保能够正确检测到一个下降沿,负脉冲的宽度,必须大于一个检测周期,当负脉冲宽度小于一个检测周期,就有可能产生漏检。另一方面,要正确检测逻辑1,同样要求高电平持续时间大于一个检测周期。
    如果检测是硬件的,比如INT0中断,一个检测周期是一个机器周期,比如1us,那么脉冲信号的宽度就必须保证高电平低电平都大于1us,所以说,检测上限是500K。
    

    如果检测是软件的,比如每1mS检测一次,检测上限就浊500Hz。

    sbit   inputPin = P1^0;
     
    void main(void )
    {
              bit savePinState = inputPin;
              while(1)
              {
                        delay_1T();    //    检测间隔
     
                        bit nowPinState = inputPin;
                        if (( savePinState == 1 ) && ( nowPinState == 0 ))
                        {
                              //    检测到下降沿
                        }
                      savePinState = nowPinState;    //    这句是重点,保存当前的状态,下次再检测这就是"上次状态"
             }
    }

  • 相关阅读:
    LVS DR模式的简单应用
    Linux新加硬盘如何识别 分区 持续挂载
    13周作业
    12周作业
    2次月考
    10周作业
    9周作业
    8周作业
    7周作业
    6周作业
  • 原文地址:https://www.cnblogs.com/alan666/p/8312382.html
Copyright © 2011-2022 走看看