打印

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

[复制链接]
2134|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 | 只看该作者
这种不加注释的程序就是折磨后人的,写这个程序的前辈一定留着一个带注释的版本。

使用特权

评论回复
5
mage心寒| | 2012-2-13 15:00 | 只看该作者
k随便定义的你可以定义0-128都可以的。。。蛋疼的程序。。。这里定义这个数可能是写这个代码的人喜欢这个数吧。反正后面可以检测嘛。。一般我们定义0或者不赋值。。感觉键盘扫描不用赋值。。4*4矩阵每行四个。。。推荐使用反转法,一次可以搞定16个。。

使用特权

评论回复
6
zjk103| | 2012-2-13 19:46 | 只看该作者
汗,这样的程序让人咋帮你分析

使用特权

评论回复
7
zj314995534| | 2012-2-13 20:17 | 只看该作者
蛋疼的程序。这个键扫程序不牢靠,相当不严谨。一看就是新手,或者学生编的。

使用特权

评论回复
8
mohanwei| | 2012-2-13 21:25 | 只看该作者
老手编的……

使用特权

评论回复
9
nbsmaps| | 2012-2-13 21:38 | 只看该作者
估计从原理图来表示的话,K=88,刚好为所有按键没按的数据.那么后继就可以判断是否有键按下.是否有效.

使用特权

评论回复
10
zj314995534| | 2012-2-14 10:32 | 只看该作者
10楼请回答:这个程序哪里体现严谨和一个老手编的如此不堪入目?

使用特权

评论回复
11
yan2626156| | 2012-2-14 11:45 | 只看该作者
老手和新手编的程序都不堪入目,其中的道理,出来混的人都懂得?

使用特权

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

本版积分规则

0

主题

18

帖子

1

粉丝