这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 51单片机矩阵键盘

共2条 1/1 1 跳转至

51单片机矩阵键盘

菜鸟
2013-12-02 22:20:41     打赏

通常关于4*4矩阵键盘的扫描检测程序是这样的:

void keyscan()
{
     unsigned char temp,key;
     P3=0xfe;
     temp=P3;
     temp=temp&0xf0;
     if(temp!=0xf0)
     {
       delayms(10);
       temp=P3;
       temp=temp&0xf0;
       if(temp!=0xf0)
          {
             temp=P3;
            switch(temp)
              {
                  case 0xee:
                   key=0;
                   break;
          .........//省略其他扫描

         }
         while(temp!=0xf0)
         {
           temp=P3;
           temp=temp&0xf0;
         }
        display(key);
      }
    }

这里  if(temp!=0xf0) 这句话承担最终的检测判定角色,我不懂,按照C语言的规则,temp是个变量,跟P3应该不相关啊,P3把值赋给temp后,P3应该是不变的,之后temp的值应该跟P3就脱离关系了,但为什么这里把P3赋值给temp后,就可以根据temp的值来判定P3 I/O口的值呢?求大家指点


菜鸟
2013-12-08 21:56:48     打赏
2楼
就是普通的4*4键盘,16个按键,8条线接到一个I/O口

共2条 1/1 1 跳转至

回复

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