标题: 单片机按键扫描消抖经典算法实现以及Proteus实例仿真对比 [打印本页]

作者: perseverance51    时间: 2021-9-10 13:21
标题: 单片机按键扫描消抖经典算法实现以及Proteus实例仿真对比
按键扫描消抖经典算法实现以及Proteus实例仿真对比

  1. unsigned char Trg;
  2. unsigned char Cont;
  3. void KeyRead( void )
  4. {
  5.     unsigned char ReadData = P1^0xff;   // 注解1
  6.     Trg = ReadData & (ReadData ^ Cont);   // 注解2
  7.     Cont = ReadData;                      // 注解3
  8. }
复制代码



2. 第一次IO口按键按下的情况:
3. IO口按键按着不松(长按键)的情况:
Cont = ReadData = 0x01
  1.         ReadData = 0x01;
  2.         Trg = 0x00;
  3.         Cont = 0x01;
复制代码
因为现在按键是长按着,所以MCU会每个一定时间(20ms左右)不断的执行这个函数,那么下次执行的时候情况会是怎么样的呢?

4. 按键松开的情况:端口数据为0xff,ReadData读端口并且取反是 0x00 。
Proteus仿真




全部资料51hei附件下载:
按键扫描消抖算法实现.zip (61.47 KB, 下载次数: 33)


作者: dyx811    时间: 2021-9-11 19:12
楼主辛苦了,值得学习!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1