这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 矩阵按键,组合键

共4条 1/1 1 跳转至

矩阵按键,组合键

助工
2014-05-14 17:34:53     打赏

unsigned char Key_Scan(void)
{
    unsigned char Scan_Code = 0, Read_Code = 0, Key_Value = 0;
   unsigned char Key_Temp = 0;
   DDRC   |= 0x0f;
   PORTC  &= 0xf0; // Row output Low
   DDRD  |= 0xf8; 
   PORTD  |= 0xf8;   // Column output High  
   DDRD  &= 0x07;
   Key_Temp = PIND & 0xf8;
   if( Key_Temp != 0xf8 )
   {      
    Delay_Ms(10);
    if( Key_Temp != 0xf8 )
    {
     Scan_Code = 0xfe; 
     while( Scan_Code != 0xff )
     {     
     PORTC = ( Scan_Code & 0x0f );
     Key_Temp = PIND & 0xf8; // 再读具体行
     if( Key_Temp != 0xf8 )
     {
      Read_Code = (Key_Temp & 0xf8) | 0x07;
      Key_Value |= ( ~Scan_Code ) + ( ~Read_Code );
     }
     Scan_Code = ( Scan_Code << 1 ) | 0x01;
     }
    }
   }
  PORTC  &= 0x0f;
  return ( Key_Value );      
}

 

 

 




关键词: 矩阵按键     组合键    

高工
2014-05-14 21:29:20     打赏
2楼
楼主配上注释就完美了

院士
2014-05-15 09:22:12     打赏
3楼
不错哦,得到夸奖了

专家
2014-05-18 16:46:43     打赏
4楼
楼主使用的飞思卡尔的xs128 MCU?很熟悉的寄存器

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]