打印

我刚学51改的个矩阵键盘程序 现在看不懂了 求解

[复制链接]
2144|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
胡斯哲|  楼主 | 2013-5-9 21:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void key()
{
        uchar tem1,tem2,hang,line;
        tem1=0x01;
        for(hang=0;hang<4;hang++)
        {
                P1=~tem1;
                if((P1&0x0f)<0x0f)
                {
                        tem2=0x10;
                        for(line=0;line<4;line++)
                        {
                                if((P1&tem2)==0)
                                {keybroad=hang*4+line;}//keybroad为全局变量
                                tem2*=2;
                        }
                        tem1*=2;
                }
        }       
}:Q

相关帖子

沙发
胡斯哲|  楼主 | 2013-5-9 21:36 | 只看该作者

使用特权

评论回复
板凳
胡斯哲|  楼主 | 2013-5-9 22:13 | 只看该作者

使用特权

评论回复
地板
HaydnSyx| | 2013-5-9 23:49 | 只看该作者
这个很容易理解啊!就是先给P1口赋值,开始是0xfe,然后进行判断P1的状态是否发生改变,然后开始对P1的高4位进行测试(tem2就是为了进行对P1高四位测试的),测试出按键在本行的其中一列上,没有的话就转入下一行(tem1就是这个最用,也是针对P1的第四位),知道检测出来,然后返回键值
。。。。。。。。。语文学的不好,可能表的不是很清楚

使用特权

评论回复
5
zebra0| | 2013-5-10 00:14 | 只看该作者
tem2 *= 2; //tem2 = tem2*2
相当于其中那个1左移

P1口的低四位对应行,高四位对应列。

从第一行开始扫描,每次行扫描中,进行4列的扫描

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:读书喝茶,不争朝夕

141

主题

1431

帖子

6

粉丝