打印

请教一个问题

[复制链接]
1372|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dlyx108|  楼主 | 2009-3-19 23:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned int old,new,push,rel,temp;
unsigned char i;
void key(void){
  for(i=0x10;i!=0;i<<1)
    P1=P1&i;
    P1=P1|0x0f;
    new=(new<<4)|((~P1)&0x0f);
}
if((temp=new^old)>0{
   push=temp&new;
   release=temp&old;
   old=new;
} }
new新键值,old老的,P1.7-P1.4行,其余为列,1为低电平,0为高;
new=(new<<4)|((~P1)&0x0f);这句怎么理解?




相关帖子

沙发
dlyx108|  楼主 | 2009-3-19 23:20 | 只看该作者

我觉得应该(new&0xf0)|((~P1)&0x0f);

使用特权

评论回复
板凳
oumi| | 2009-3-20 11:20 | 只看该作者

re:楼上

它要把键值存到new里,你这样写的话不行的。

使用特权

评论回复
地板
oumi| | 2009-3-20 11:25 | 只看该作者

re:

就知道new=(new<<4)|((~P1)&0x0f);是把4个键值分别存到new里,其他的看不懂,不知道你电路怎么接的。

使用特权

评论回复
5
dlyx108|  楼主 | 2009-3-20 18:53 | 只看该作者

re

new新键值,old老的,P1.7-P1.4行,其余为列,1为低电平,0为高,才有~P1,
for循环是行扫描从0001到1000。 new=(new<<4)|((~P1)&0x0f);这一句是读取列值,保留行值,不懂new<<4为什么是保留new的高四位(行值);

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝