请教一下单片机的问题

程序如下,其中P3_0,P3_1是两个传感器,都对变量a有影响,请问程序要怎么改,使得如果P3_0,P3_1同时=0时a的值没有错,就是a++两次。if(P3_0==0)... 程序如下,其中P3_0,P3_1是两个传感器,都对变量a有影响,请问程序要怎么改,使得如果P3_0,P3_1同时=0时a的值没有错,就是a++两次。
if(P3_0==0)
{
delay(4900);
if(P3_0==0)
{
a++;
}
while(!P3_0);
delay(180000);
}
if(P3_1==0)
{
delay(4900);
if(P3_1==0)
{
a++;
}
while(!P3_1);
delay(180000);
}
展开
 我来答
天天奕想
2012-06-18 · TA获得超过744个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:215万
展开全部
程序仅供参考,没有编译过。还有很多细节没有完善,只是提供个思路
uchar KeyScan(void)
{
if(P3_0 && P3_1) //没有按键按下的情况
{
key_count = 0;
}
else if(!P3_0 && !P3_1) //两个按键按下的情况
{
key_count = 2;
}
else
{
key_count = 1; //一个按键按下的情况
}
}

void main(void)
{
while(1)
{
if(KeyScan() == 1)
{
a++;
while(KeyScan() != 0)
{
if(KeyScan() == 2) a++;
}
}
}
}还有,养成良好的编程习惯,你这个程序的排版相当的乱
更多追问追答
追问
还是没有解决啊,由于开关松开的检测存在,导致,如果3.0按下但是还没松开的时候,3.1按下是不会计数的啊
追答
3.0按下的时候,KeyScan() == 1,于是进入while(KeyScan() != 0)循环,在该循环里扫描是否第二个按键按下,若按下,KeyScan() == 2,于是再执行一次a++;可以的呐
起跑泡泡
2012-06-18 · TA获得超过113个赞
知道答主
回答量:144
采纳率:0%
帮助的人:72.7万
展开全部
有没有想过用“&&”?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琴柏涓6
2012-06-18 · TA获得超过213个赞
知道小有建树答主
回答量:474
采纳率:0%
帮助的人:106万
展开全部
分三种情况 用 逻辑&&

①3.0为0 && 3.1不为0
②3.0不为0 && 3.1为0
③3.0为0 && 3.1为0
追问
但是如果3.0为0,但是还没变为1的时候,3.1变成0了,那不就计数计少了吗?
追答
别折腾了

多给几个变量好了 a 和 b 总数 c=a+b ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沁芳萧然
2012-06-18 · TA获得超过837个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:224万
展开全部
if(P3_1||P3_2) //两者有一个或都不为0
{} //从大括号内再判断哪个为0.
else //两者都为0
{}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式