线反转法扫描矩阵程序

2020-01-13 18:23发布

uchar key(void)
{
    uchar key,key1,key2,k;
    P1=0XF0;
    k=0xff;
    if((P1&0XF0)!=0XF0)
    {
        delay();
        if((P1&0XF0)!=0XF0)
        key1=P1&0XF0;
        P1=0X0F;
        if((P1&0X0F)!=0X0F)
        {
            delay();
            if((P1&0X0F)!=0X0F)
            {
                key2=P1&0X0F;
                key=key1|key2;
                if(key!=0xff)
                {
                    switch(key)
                    {
                        case 0xee: k=0;break;                       
                        case 0xed: k=1;break;                        
                        case 0xeb: k=2;break;                       
                        case 0xe7: k=3; break;
                        case 0xde: k=4;break;                       
                        case 0xdd: k=5;break;                        
                        case 0xdb: k=6;break;                       
                        case 0xd7: k=7; break;
                         case 0xbe: k=8;break;                       
                        case 0xbd: k=9;break;                        
                        case 0xbb: k=10;break;                       
                        case 0xb7: k=11; break;
                         case 0x7e: k=12;break;                       
                        case 0x7d: k=13;break;                        
                        case 0x7b: k=14;break;                       
                        case 0x77: k=15; break;
                    }
                }
            }
        }
    }
    return(k);
}


只做了键盘扫描程序,说明问题,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
72条回答
28182900
1楼-- · 2020-01-18 04:42
回复【1楼】rainyss  
代码太多没必要,刚在另一帖子里回的,顺手复制过来吧, 假定4x4,使用p1口反转扫描法:
unsigned char keystatus;
//键扫描,大家真正关心的部分
keystatus = 0;
p1 = 0xf0; keystatus |= (p1&0x0f);
p1 = 0x0f; keystatus |= (p1&0xf0);

//以下是键处理,这部分与键扫描无关了.
switch(keystatus){
case 16种排列组合:~[1000,0100,0010,0001] * [1000,0100,0010,0001]  
}
键扫描为红 {MOD}部分,就这么几行而已.
-----------------------------------------------------------------------

mark,马克,马可,马科,吗可
ssmart
2楼-- · 2020-01-18 05:23
这个精简版本需要mark
ky51
3楼-- · 2020-01-18 09:19
comway
4楼-- · 2020-01-18 10:04
mark
l09046162
5楼-- · 2020-01-18 10:27
 精彩回答 2  元偷偷看……
renwocai
6楼-- · 2020-01-18 14:42
非常好的反转法,学习了!

一周热门 更多>