打印

一个矩阵键盘扫描程序,有空帮忙看下,

[复制链接]
2007|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lwdaidai|  楼主 | 2009-6-28 09:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uchar keyscan()
{
    uchar cord_h,cord_l;//行列值
    P3=0x0f; //没加这句,按键没反应,为什么??
    cord_l=P3&0x0f;  //
    if(cord_l!=0x0f)
    {
        debouncer(); //去抖
        if(cord_l!=0x0f)
        {
            cord_l=P3&0x0f;  //列值
            P3=cord_l|0xf0;   //
            cord_h=P3&0xf0;   //行值
            return(cord_h+cord_l);   
        }
    }
    return(0xff);
}

不明白这句    P3=0x0f; //
这样一赋值后那在后面当中P3岂不是一直为 0f,,那在下面取行值时  
P3=cord_l|0xf0;   //
cord_h=P3&0xf0;   //行值

p3高四位在上面已经为0了,,这两句有何用??高四位不是还是0吗?又怎能取的行值??

请多多指教啊,,

相关帖子

沙发
沈洁| | 2009-6-28 11:21 | 只看该作者

来个电路吧,否则也不方便帮你啊是不是啊?

使用特权

评论回复
板凳
5_0_5| | 2009-6-28 11:41 | 只看该作者

P3=cord_l|0xf0;已经把高4位置"1"了,

同时低位有键位为0

使用特权

评论回复
地板
gaohq| | 2009-6-28 13:37 | 只看该作者

当P3口作输入用时首先要把P3口置1,然后才能获得其外接

的口线的电平状态,
这是单片机的基础知识,难道LZ和我一样是个新手?

使用特权

评论回复
5
ayb_ice| | 2009-6-28 18:08 | 只看该作者

扫键是基础了

使用特权

评论回复
6
lj3269091| | 2009-6-28 18:21 | 只看该作者

如果是4x4

使用特权

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

本版积分规则

2

主题

2

帖子

0

粉丝