⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_check.c

📁 用于检测非自锁的按键
💻 C
字号:
idata UINT8 kkey;
idata UINT8 kc,kcount;
bit kready;   // true when kkey is valid

idata UINT8 key_hold,time_hold;
bit flag_key_hold;

/*void delay( long milisecond)
/* n mS delay 
{   UINT8 i;
    while(milisecond--)
      {   i=50;
          while(i--);
      }
}*/
void delay( long i)
{  
    while(i--);
  }

void beep(void)
{ BUZZER_POWER = 0;
  delay(50);
  BUZZER_POWER = 1;
}

void Keyboard_Check(void)
{
    static UINT8 key_input, key_input_last;
 //   if(kcount!=0)
 //     return;   // Wait until 20mS elapses, kcount is decreased in INT0 service routine.
    delay(20);
    P0=0xff;
    KEYBOARD_ENB = 0;
    KEYBOARD_ENB = 0;
    KEYBOARD_ENB = 0;
    key_input_last=key_input;
    key_input=P0;
	key_input &= 0x3f;
    KEYBOARD_ENB = 1;

    if(key_input_last==0x3f && key_input!=0x3f)             /* 有键按下 */
      { kkey=key_input;
        kready=1;
		beep();
      }
    if( key_input_last== key_input && key_input != 0x3f)   /* 按键按住 */
      { if(time_hold <100)
         time_hold++;
        if(time_hold == 100)
         { key_hold = key_input;
           flag_key_hold = 1;
           time_hold = 0;
         }
      }
    if(key_input==0xff && key_input_last!=0xff)           /* 按键释放 */
      { time_hold = 0;
      }
 //   kcount = 3;
}

void Keyboard_Wait_For_Enter(void)
{  kready = 0;
   while(1)
    {  Keyboard_Check(); 
       if( (kready ==1) && (kkey == KEY_ENTER) )
	    break;
	}    
   kready=0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -