急求C51单片机4X4矩阵键盘检测程序执行问题

部分一:P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;... 部分一:P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
.......
部分二:P3=0xfd;
temp=P3;
.......
部分三:P3=0xfb;
temp=P3;
......
请问若按下第二行第二列的按键时,此程序是否要执行部分一,若执行部分一,岂不是部分二的按键释放指令就没法执行了吗?希望回答的详细些,谢谢
展开
 我来答
做而论道
高能答主

2013-09-15 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
楼主给出的程序,看起来是《十天...》中的。
程序分成了四个部分。

本来,如果在第一部分检测到按键,程序,就应该结束了,
但是,他还要继续执行第二、第三、第四部分。
每一部分,还有单独的延时消抖、等待释放的环节。

这程序,逻辑上,错误很多,太垃圾了。

建议看看:
http://hi.baidu.com/do_sermon/item/1bcc07288bf4b2d0a517b695
http://zhidao.baidu.com/question/584760327.html
http://zhidao.baidu.com/question/586303033.html
更多追问追答
追问
你好,我只是想问下,按道理说若按下第二行第二列的按键,它所在的区域为程序第二部分,经过第一部分唯有switch作为空语句不会执行,为什么会直接跳到它所在的部分呢?
追答
若按下第二行第二列的按键:

部分一:P3=0xfe; --执行
temp=P3; --执行
temp=temp&0xf0; --执行
while(temp!=0xf0) --不执行,去执行部分二
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
.......
部分二:P3=0xfd;--执行
temp=P3;--执行
temp=temp&0xf0; --执行
while(temp!=0xf0) --执行
{
delay(5);--执行
temp=P3; --执行
temp=temp&0xf0;--执行
while(temp!=0xf0) --执行
{
temp=P3; --执行
switch(temp)--执行,在这里判断出来按键,之后,还要继续执行部分三、部分四。
……
匿名用户
2013-09-14
展开全部
若按下第二行第二列的按键时:只有第2部分的条件才会成立,所以你说的情况根本不会发生,
追问
你好,按道理说若按键按下,第一部分唯有switch作为空语句不会执行,为什么会直接跳到它所在的部分呢?
追答
C 规定了switch的语法如此,你如果要问为什么会进入指定的位置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式