目标:独立按键取反一个led灯
按键昰一种电子开关使用时轻轻按下开关按钮就可使开关接通,当松开手时,开关断开没按是高电平,按下就变低电平
按键一开始有两种状態: 初始不导通初始导通。当按键按下本来不导通的导通本来导通的变不导通。这4根线可以看成两组作为两个端口
比如按键导通的连個电视,按键按下就不导通就实现关闭功能
这是按键按下的电平变化,上面是理想的但往往现实和理想的丰满不同,下面的图体现了現实的骨感
既然现实骨感我们就要让它变理想,变理想的方式有两种:软件消抖硬件消抖
假如按下了,B处是低电平那么5处是低,74LS00是與非门所以有个0就是0,6处是0取反变1到2处是1,而1本来就是1所以输出是0,实现了消抖原来就1(A),输出就1
如果你按键不多还追求实时性嘚化,比如工业上的就用硬件消抖我还是推荐大家用软件消抖,可以节省材料还会减少不必要的麻烦
4根线,作为2个端口每个按键一個端口并联到地,另一个引出来按键按下接地导通实现关闭。
keyless函数是软件消抖if(k1==0)是为了判断按键是否按下,按下进入if语句延迟1ms,再来判斷下k1,其实那个延迟就实现了消抖就是把抖动的部分跳过,第二个if满足则led取反
while(!k)是k=0条件满足则一直在那循环,k是高电平就跳出用於检测按键是否松开,松开就高电平跳出这个函数就执行完了。这个函数还是有缺陷的如果你一直按着不放那么那么cpu一直在那循环耗資源,下篇会讲到怎么改进哟