找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2264|回复: 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);
}
视频里说硬件响应需要时间,这里不明白为什么要加延时。

回复

使用道具 举报

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);  说的是延时时间量,视频里面还有说延时消抖,可能你没注意到,可以重新看看,就明白了
回复

使用道具 举报

ID:811494 发表于 2020-8-9 10:16 | 显示全部楼层
消抖用的.
因为按键按下后松开,电平其实是有高低波动的.
Delay(10)就是为了漏掉低的波动
回复

使用道具 举报

ID:548551 发表于 2020-8-9 11:48 | 显示全部楼层
为什么你非的用延时呢? 用定时不好么?   延时你只能在哪里傻等  定时还能做其他的啊
回复

使用道具 举报

ID:341833 发表于 2020-8-9 14:46 | 显示全部楼层
按键消抖,避免程序误操作。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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