关于矩阵键盘程序的问题

2019-07-16 02:28发布

在看郭天祥老师的视频的时候遇到了一个疑问,琢磨半天也没想明白,特来求教
视频:http://v.youku.com/v_show/id_XMjkxMTQ1ODky.html   现象发生时间是:110分10秒左右。
现象描述:按第一排第一个按键的时候,数码管显示0,按道理按第二个按键的时候应该显示1的,但是事实上按了没有反应,必须要重启下单片机,才能按第二个。

   P3=0xfe;
   temp=P3;
   temp=temp&0xf0;
   while(temp!=0xf0)
    {
     delay(5);
     temp=P3;
     temp=temp&0xf0;
     while(temp!=0xf0)               //郭老师貌似解释是跳不出这个循环吧,后来听一学生建议,就加了temp=P3 这句
     {
      temp=P3;                          //就是加了这句,就能在第一行正常工作了,说是加了这句就能跳出上面那个while循环了
     switch(temp)
      {
       case 0xee:num=1;
        break;
       case 0xde:num=2;
        break;
       case 0xbe:num=3;
        break;
       case 0x7e:num=4;
        break;
      }
     while(temp!=0xf0)
      {
       temp=P3;
       temp=temp&0xf0;
      }
     }
    }

我没明白的就是,为什么加了temp=P3这句,就能跳出小while循环呢?既然能跳出小的while循环,那和它条件一样的大while循环,应该也能跳出啊,最重要的是,为什么加了temp=P3就能跳出去,跳出去的条件是temp=0xf0,但是P3并不等于0xf0啊。
小弟在此实在是想不通了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
x97266067
1楼-- · 2019-07-16 19:59
本帖最后由 x97266067 于 2013-2-17 22:59 编辑

楼主复制的应该是他讲完课的源码吧,讲课时,他想把松手检测加上,但犹豫了,最后只是在switch选择前边加了个temp=P3,正好也可以不停响应按键,(就是发现一次有效按键后就执行一次对num赋值的操作,然后立马重新开始,再次形成有效按键,再次对num赋值(这时按键还没有松手,所以还是有效按键,另外虽然再次对num赋值但并没有改变num的值所以在按键时并不会感觉出它的变化))而不是检测出一次按键发生之后就一直停留在循环内,直到检测到松手,
这是两种不同的方法(加temp=P3)和(加松手检测)
只不过碰巧他在加完松手检测后没有回过头来把这个改回来,让你后来看错了,
其实,我把看这段代码中的那个temp=P3删掉,再把四个case值改成0xe0;0xd0;0xb0;0x70也可以。
这些代码是他在课堂上临时写的,很多地方都不是很完善,又是思路也很乱,所以他的代码只是参考而已。

不过安我的习惯,我习惯上喜欢把按键扫描写成一个带有uchar返回值的子函数,用返回值的十六位表示按键状态,再对状态进行处理分析。
东坡守月
2楼-- · 2019-07-17 01:22
我们的键盘还是8086的汇编写的  
ltrtt
3楼-- · 2019-07-17 07:19
x97266067 发表于 2013-2-17 22:55
楼主复制的应该是他讲完课的源码吧,讲课时,他想把松手检测加上,但犹豫了,最后只是在switch选择前边加了 ...

请问我最后那个猜想是对的吗?
wandianlei
4楼-- · 2019-07-17 12:02
呵呵呵,这代码。看着有点像。。多少个n年前玩的实验。。。记得那时候,我们老师不要求我们赶快出成品,他们提倡我们为了压缩51空间做大量实验,不停的实验。。到最后,出来的都是实验品。。,还叫我们想疯了自己的头去挖掘51核到底有多大的潜能。。真bt。现在的我们早都散了。。每次看到他们发布51产品时,哥就跟住激动。。也不知道激动个什么。。还有就是当年我们看的书籍,一本杨文龙的《单片机原理与应用》。一本二级c语言。。现在书也丢干了。。哎,真可惜。。不同的老师,提的思想不同。走的方向也不同。。想起那时候,哥就奔放。。
x97266067
5楼-- · 2019-07-17 17:09
 精彩回答 2  元偷偷看……
andyyau
6楼-- · 2019-07-17 20:58
楼上说的很清楚啊  那个和松手检测配合 我看这个视频和练习时 也遇到这个问题 但是我看明白了 没怎么去想 还是LZ用功 多看多想 这样才牢靠

一周热门 更多>