打印
[51单片机]

4*4矩阵键盘扫描问题

[复制链接]
1542|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

粉丝