郁闷,这个程序到底是怎么检测按键的?

[复制链接]
2933|12
 楼主| victorgaopeiqi 发表于 2012-2-6 22:35 | 显示全部楼层 |阅读模式
uchar key_scan(void)
{
uchar i,key;
uchar k=88;//k=88是什么意思呢?
P3=0xf0;
if(P1!=0xf0)
{
  P3=0xfe;//这又是为什么?
  for(i=0;i<4;i++)//为什么4次循环?
  {
   key=P1&0xf0;
   switch(key)
    {
  case 0xe0: k=i;break;
  case 0xd0: k=i+4;break;
  case 0xb0: k=i+8;break;
  case 0x70: k=i+12;break;
  default:;
  }
  P3=(P3<<1)+1;
  if(key!=88)break;
  }
  P3=0xf0;
  while(P3!=0xf0);
  return(k);
  }
  else return'0';
}
不明白k=88是什么作用啊。。。。呜呜呜
ayb_ice 发表于 2012-2-7 08:25 | 显示全部楼层
对着原理图分析你就明白了
jianghuoo00 发表于 2012-2-7 08:28 | 显示全部楼层
先分析功能实现什么,对着图联系整个程序分析,一段你能看出来什么啊
dqyubsh 发表于 2012-2-7 08:33 | 显示全部楼层
这种不加注释的程序就是折磨后人的,写这个程序的前辈一定留着一个带注释的版本。
mage心寒 发表于 2012-2-13 15:00 | 显示全部楼层
k随便定义的你可以定义0-128都可以的。。。蛋疼的程序。。。这里定义这个数可能是写这个代码的人喜欢这个数吧。反正后面可以检测嘛。。一般我们定义0或者不赋值。。感觉键盘扫描不用赋值。。4*4矩阵每行四个。。。推荐使用反转法,一次可以搞定16个。。
zjk103 发表于 2012-2-13 19:46 | 显示全部楼层
汗,这样的程序让人咋帮你分析
zj314995534 发表于 2012-2-13 20:17 | 显示全部楼层
蛋疼的程序。这个键扫程序不牢靠,相当不严谨。一看就是新手,或者学生编的。
mohanwei 发表于 2012-2-13 21:25 | 显示全部楼层
老手编的……
nbsmaps 发表于 2012-2-13 21:38 | 显示全部楼层
估计从原理图来表示的话,K=88,刚好为所有按键没按的数据.那么后继就可以判断是否有键按下.是否有效.
zj314995534 发表于 2012-2-14 10:32 | 显示全部楼层
10楼请回答:这个程序哪里体现严谨和一个老手编的如此不堪入目?
yan2626156 发表于 2012-2-14 11:45 | 显示全部楼层
老手和新手编的程序都不堪入目,其中的道理,出来混的人都懂得?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

18

帖子

1

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