你好,程序中一共出现了两次temp=p3;temp=temp&0xf0;第一次出现的时候表示单片机检测到按键动作,但为了准确性,防止是无意识的出发,因此用一个delay函数,延时5MS。再次检测P3的状态!此时temp=p3;temp=temp&0xf0;说明的确是按键按下,而不是误触发!因此起到一个去抖动的作用!望采纳,谢谢!
第一个 temp=p3;temp=temp&0xf0;
是给接下来while(temp!=0xf0) 这句赋初值,判断有没有按键按下。
第二个 temp=p3;temp=temp&0xf0;while(temp!=0xf0)
延迟消抖动。再次读取按键值,确认无误后再处理按键事件。
你可以直接改为 while ((P3&0xf0)!=0xf0), 就不用temp了。
程序可能有点问题,最下面的 temp=P3; switch(temp).还是要 &0xf0才对,
改为 switch (P3 & 0xf0) 或 temp=p3;temp=temp&0xf0; switch (temp &0xf0)
为了把低四位清零了!其实就是要读取P3口高四位的状态,
因为P3口的低四位的P3^0置0了,看电路,如果按键的另一端(一端与P3^0相连)也检测到低电平
这个按键就被按下,那时候temp就不等于0xf0了!!
看一下按键的用法就知道了!
按位求与,P3口是8位的IO口
书写规定吧
键盘防抖啊!很明显的嘛