AVR按键扫描程序

来源:互联网 发布:结构的刚度矩阵怎么求 编辑:程序博客网 时间:2024/05/22 08:24
uchar key_press()//判断是否有按键按下 {    uchar i;    DDRA=0XFF;//把PA口作为输出    PORTA=0XF0;    DDRA=0X0F;    i=PINA;//读取端口引脚    if(i==0XF0)    {      DDRA=0XFF;//把PA口作为输出      return 0; }    else   {      DDRA=0XFF;//把PA口作为输出      return 1;     }  }  uchar key_scan()//扫描按键 {     uchar key,i=0x7F,j;     delay_ms(10);//键盘消抖     if(key_press())     {   do   {   i=(i<<1|i>>7); //这个地方很巧妙   PORTA=i;   DDRA=0X0F;//高四位为输入,低四位为输出   key=PINA;   j=key&0xF0;   }while(j==0xF0);   while(key_press());   switch(key)   {   case 0XE7: key=0X0;break;   case 0XEB: key=0X1;break;   case 0XEC: key=0X2;break;   case 0XEE: key=0X3;break;   case 0XD7: key=0X4;break;   case 0XDB: key=0X5;break;   case 0XDD: key=0X6;break;   case 0XDE: key=0X7;break;   case 0XB7: key=0X8;break;   case 0XBB: key=0X9;break;   case 0XBD: key=0XA;break;   case 0XBE: key=0XB;break;   case 0X77: key=0XC;break;   case 0X7B: key=0XD;break;   case 0X7D: key=0XE;break;   case 0X7E: key=0XF;break;   default:         key=16;   }      } else    key=16;return key; }

原创粉丝点击