[51单片机] 4*4矩阵键盘扫描问题

[复制链接]
1762|3
 楼主| yexinsuso 发表于 2013-12-2 22:21 | 显示全部楼层 |阅读模式
通常关于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口的值呢?求大家指点
vanshrinkzom 发表于 2013-12-2 22:25 | 显示全部楼层
看了两遍,还不知道你最终想问什么
ayb_ice 发表于 2013-12-3 08:11 | 显示全部楼层
P3是SFR不是普通的RAM,
什么叫SFR。。。
有缘于你 发表于 2013-12-3 09:09 | 显示全部楼层
每读取一次p3 判断一次, 不是每次都判断p3 用p3判断也行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

26

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部