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

📄 keysca.txt

📁 键盘扫描函数读取当前键盘的状态有按键值按键按下返回
💻 TXT
字号:
/*键盘扫描函数 读取当前键盘的状态 有按键按下返回相应按键值 无按键按下返回"0x00"*/
unsigned char key_read(void)
{ unsigned char i; 
      DDRA = 0x00;   /*获取列地址*/ 
      PORTA = 0x0F; 
      DDRA = 0xF0; 
      i = PINA;  
      DDRA = 0x00;  /*获取行地址*/ 
      PORTA = 0xF0;  
      DDRA = 0x0F; 
      i |= PINA; 
      DDRA = 0x00;   /*输出复位*/ 
      PORTA = 0xFF;  
  switch (i)
      {/*将按键码转换成键值*/  
           case  0x00: return 0x00; 
           case  0xEE: return '1';  
           case  0xDE: return '2'; 
           case  0xBE: return '3';  
           case  0x7E: return 'A';  
           case  0xED: return '4'; 
           case  0xDD: return '5'; 
           case  0xBD: return '6';  
           case  0x7D: return 'B'; 
           case  0xEB: return '7';  
           case  0xDB: return '8';  
           case  0xBB: return '9'; 
           case  0x7B: return 'C';  
           case  0xE7: return '*';  
           case  0xD7: return '0'; 
           case  0xB7: return '#';  
           case  0x77: return 'D'; 
             default : return 0x00;  
      }
 }

/*键盘读取函数 /*按键获取函数 获取按键信号,其中包含有状态记录及按键去颤抖。 有正确按键按下返回相应按键值 无正确按键按下返回"0x00"*/
unsigned char get_key(void)
{    unsigned char i;
     static unsigned char j;/*按键记录*/ 
     i = key_read(); 
  if (i == 0x00)
     {/*无有效按键按下*/ 
           j = 0x00;       /*清除按键记录*/ 
           return 0x00;    /*程序退出*/ 
     } 
  if (j == 0x00) 
     {/*为新按键*/ 
           j = i;           /*保存本次采样结果*/
           delay_ms(10);    /*去按键颤抖*/ 
           i = key_read();  
           if(i == j) 
             {   return i;   }  
     }
 return 0x00;
}

⌨️ 快捷键说明

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