单片机 独立键盘检测问题

2025-03-29 22:01:52
推荐回答(6个)
回答(1):

你好,程序中一共出现了两次temp=p3;temp=temp&0xf0;第一次出现的时候表示单片机检测到按键动作,但为了准确性,防止是无意识的出发,因此用一个delay函数,延时5MS。再次检测P3的状态!此时temp=p3;temp=temp&0xf0;说明的确是按键按下,而不是误触发!因此起到一个去抖动的作用!望采纳,谢谢!

回答(2):

第一个 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)

回答(3):

为了把低四位清零了!其实就是要读取P3口高四位的状态,
因为P3口的低四位的P3^0置0了,看电路,如果按键的另一端(一端与P3^0相连)也检测到低电平
这个按键就被按下,那时候temp就不等于0xf0了!!
看一下按键的用法就知道了!

回答(4):

按位求与,P3口是8位的IO口

回答(5):

书写规定吧

回答(6):

键盘防抖啊!很明显的嘛