• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

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

8b6ffe166d34c398 2020-08-09 浏览量:768
以下是吴鉴鹰单片机课程里的按键扫描
unsigned char Key_Scan(void)
{
   uchar Key_TempScan_CodeTemp_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);
}
视频里说硬件响应需要时间,这里不明白为什么要加延时。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 延时,实际上就是消波形抖动。延时,其实加载前面和加载后面没啥区别。

    11.jpg

    你的程序延时加在后面,也就是一按键第一次触发为准。

    • 发布于 2020-08-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 不加延时会重复触发按键按下,也可能是扫描时间太快,延时只是降低扫描按键速度
    • 发布于2020-08-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 加延时应该是为了防止重复触发,将延时加到那个地方应该是无法消抖的
    • 发布于2020-08-13
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

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