请教一个问题

[复制链接]
2024|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里,其他的看不懂,不知道你电路怎么接的。
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部