按键扫描只三行代码.docVIP

  • 47
  • 0
  • 约5.45千字
  • 约 8页
  • 2017-09-23 发布于浙江
  • 举报
核心算法: unsigned?char?Trg; unsigned?char?Cont; void?KeyRead(?void?) { ????unsigned?char?ReadData?=?PINB^0xff;??????//?1 ????Trg?=?ReadData??(ReadData?^?Cont);??????//?2 ????Cont?=?ReadData;?????????????????????????//?3 } 完了。有没有一种不可思议的感觉?当然,没有想懂之前会那样,想懂之后就会惊叹于这算法的精妙!! 下面是程序解释: Trg(triger)?代表的是触发,Cont(continue)代表的是连续按下。 1:读PORTB的端口数据,取反,然后送到ReadData?临时变量里面保存起来。 2:算法1,用来计算触发变量的。一个位与操作,一个异或操作,我想学过C语言都应该懂吧?Trg为全局变量,其它程序可以直接引用。 3:算法2,用来计算连续变量。 看到这里,有种“知其然,不知其所以然”的感觉吧?代码很简单,但是它到底是怎么样实现我们的目的的呢?好,下面就让我们绕开云雾看青天吧。 我们最常用的按键接法如下:AVR是有内部上拉功能的,但是为了说明问题,我是特意用外部上拉电阻。那么,按键没有按下的

文档评论(0)

1亿VIP精品文档

相关文档