找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 2309|回复: 6
打印 上一主题 下一主题
收起左侧

请教单片机按键扫描延时问题

[复制链接]
跳转到指定楼层
楼主
ID:734017 发表于 2020-8-9 01:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是吴鉴鹰单片机课程里的按键扫描
unsigned char Key_Scan(void)
{
   uchar Key_Temp,Scan_Code,Temp_Code;
   P2 = 0XF0;
   Key_Temp = P2;
   if((Key_Temp&0xf0)^0xf0)     //0XE0 0b1110 0000 & 0b1111 0000  --0b1110 0000 ^0b1111 0000= 0b0001 0000
   {
       Scan_Code = 0xfe;  //0B1111 1110  
    while((Scan_Code&0x10) != 0x00) //0XFE = 0B1111 1110  0B1111 0111
    {
         P2 = Scan_Code;
   if((P2&0XF0)^0XF0)
   {
        Temp_Code = (P2&0XF0)|0X0F;//1101 0111 &0x f0 = 0b1101 0000 |0x0f = 0b1101 1111 ~0b0010 0000
     return((~Temp_Code)+(~Scan_Code));
   }
   else
   {
       Scan_Code = (Scan_Code<<1)|0X01;// 0b1111 1110 <<1 = 1111 1100 | 0000 0001 = 1111 1101
   }
   
      Delay(10);  这里不明白
     
    }     
   }
   return(0);
}
视频里说硬件响应需要时间,这里不明白为什么要加延时。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

举报

沙发
ID:94031 发表于 2020-8-9 07:24 | 只看该作者
为了可靠判断键是否按下。
回复

举报

板凳
ID:213173 发表于 2020-8-9 08:10 | 只看该作者
这段小延时在1T单片机才有意义,普通12T单片机就可有可无,不影响端口电平识别。
回复

举报

地板
ID:473159 发表于 2020-8-9 08:55 | 只看该作者
Delay(10);  说的是延时时间量,视频里面还有说延时消抖,可能你没注意到,可以重新看看,就明白了
回复

举报

5#
ID:811494 发表于 2020-8-9 10:16 | 只看该作者
消抖用的.
因为按键按下后松开,电平其实是有高低波动的.
Delay(10)就是为了漏掉低的波动
回复

举报

6#
ID:548551 发表于 2020-8-9 11:48 | 只看该作者
为什么你非的用延时呢? 用定时不好么?   延时你只能在哪里傻等  定时还能做其他的啊
回复

举报

7#
ID:341833 发表于 2020-8-9 14:46 | 只看该作者
按键消抖,避免程序误操作。
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表