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

[复制链接]
2608|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的第四位),知道检测出来,然后返回键值
。。。。。。。。。语文学的不好,可能表的不是很清楚
zebra0 发表于 2013-5-10 00:14 | 显示全部楼层
tem2 *= 2; //tem2 = tem2*2
相当于其中那个1左移

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

从第一行开始扫描,每次行扫描中,进行4列的扫描
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

141

主题

1431

帖子

6

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