单片机学习小组
直播中

h1654155275.5684

7年用户 174经验值
私信 关注

4*4的矩阵按键测量结果不对

新学习单片机,在使用矩阵按键编写程序,涉及到矩阵按键方面的一个问题,程序如下:
void keycan()
{
    uchar t,key;
    6 = 0xfe;
    t = P6;
    t = t & 0xf0;
    if(t != 0xf0)
    {
        WaitNms(10);
        t = P6;
        t = t&0xf0;
        if(t != 0xf0)
            {
                t = P6;
                switch(t)
                    {
                        case 0xee:
                        key=0;
                        break;
                        case 0xde:
                        key=1;
                        break;
                        case 0xbe:
                        key=2;
                        break;
                        case 0x7e:
                        key=3;
                        break;
                    }
                ShowNUMChar(0x90,0x30+key,0x0f);//显示半宽0~?数字标点
                WaitNms(100);//等待时间
            }
    }
}
现在的问题是给P6赋值用万用表测量是0xfe,但是按键按下之后,测量IO口,测量结果并不是0xee,是IO口配置的不对么?我是配置成推挽的

回帖(2)

李飞凤

2019-5-7 09:46:11
开始配置寄存器的时候XBR不是可以让Io弱上拉么?而且我看的范例里面也没有上拉电阻啊,感觉还是比较奇怪的
举报

人中狼

2019-5-7 10:26:18
IO口应该设置成双向的,如果你固定用端口低4位做输出的话,那高4位就是上拉输入,不设置成输入,如何读取引脚电平变化
举报

更多回帖

发帖
×
20
完善资料,
赚取积分