这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 这个4*4键值是变化的吗?

共2条 1/1 1 跳转至

这个4*4键值是变化的吗?

院士
2006-09-17 18:14:16     打赏
这个4*4键值是变化的吗?



关键词: 这个     键值     变化    

院士
2006-12-22 22:43:00     打赏
2楼
1: 重新     电路如图所示,扫描算法如下:                          
                         
        P1=sccode;
         if ((P1&0x0f) != 0x0f)
               {
            recode = (P1&0x0f)|0xf0;
            return (~sccode)+(~recode);
            }
         sccode=(sccode<<1)|0x01;
         if(sccode==0xff)
sccode=0xef;

问题:按照以上算法,键1、2、3、4的键值是多少?
2: 图http://www.21icsearch.com/buzi/upimage/upfile/20051171023010.jpg
3: 呵呵。。。无人可问津? 4: 估计大家都懒的看1:00010000+0001=0x11
2:0x21
3:0x41
4:0x81
5:0x12
6:0x22
...
16:0x88
对吗? 5: 呵呵。。。 6: 呵呵。。。mailbert,不对啊估计大家都懒的看

1:00010000+0001=0x11
2:0x21
3:0x41
4:0x81
5:0x12
6:0x22
...
16:0x88
对吗?
-----------
mailbert兄,不总是对。
我试过,如果将sccode初始化为7Fh,键值又变了样。

郁闷!超级郁闷!


7: 无人能解? 8: 你是在哪儿给sccode赋值的?uint8 sccode;
main(void)
{
uint8 a;
sccode=0x7F;
while(1)
    {
    a=sCANkey(void);    //循环扫描
    }
}
uint8 sCANkey(void)
{P1=sccode;
         if ((P1&0x0f) != 0x0f)
               {
            recode = (P1&0x0f)|0xf0;
            return (~sccode)+(~recode);
            }
         sccode=(sccode<<1)|0x01;
         if(sccode==0xff)sccode=0xef;
return(0);
}
9: mailbert,我的算法和你的几乎完全一样(sccode赋初值7fh的话,要右循环),
这个算法仿真和理论结果一致,但实际运行结果却大出意料。
键4按下您能理解键值是0x11吗? 10: 图呢?图呢? 11: optec,图在这里http://www.21icsearch.com/buzi/upimage/upfile/20051171023010.jpg
12: 赋初值7F也是左移!既然是高四位循环移位,初值赋7F、BF、DF、EF没有区别!
13: 但实际运行就是不一致,郁闷。赋初值7F也是左移!

既然是高四位循环移位,初值赋7F、BF、DF、EF没有区别!
--------------
同意你的观点,而且端口的高四位做输入低四位做输出键值也应该一样。
但实际运行就是不一致,我想跳楼。
曾怀疑自己把线测错了,无数次反复测试按键通断,得出的结论一样。
很无奈,故发此贴求教。
14: 帮你顶用的什么单片机 15: mailbert,我用的很普遍的89s52,端口是P1。多说点,这是最近我做的一个项目。
而在此之前,这个键盘扫描算法在我另一个项目运行得很好。
如果我一直较真追究这个问题,项目是不能按期完成的。
我只得把项目做完先。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]