打印

求大侠指导!!!急啊!

[复制链接]
楼主: wang074581
手机看帖
扫描二维码
随时随地手机跟帖
21
wang074581|  楼主 | 2014-3-24 14:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
版主 能指正下程序那里有问题吗? 应该怎么写呢?

使用特权

评论回复
22
wang074581|  楼主 | 2014-3-24 14:37 | 只看该作者
NE5532 发表于 2014-3-24 14:26
早饭午饭和晚饭的关系是平级关系还是嵌套关系?楼主没吃早饭,连午饭晚饭也不准吃了?? ...

版主 请问程序中那部分有问题呢? 麻烦帮忙看看好么?

使用特权

评论回复
23
天风立马| | 2014-3-24 19:57 | 只看该作者
进不去说明你没满足进去的条件。去找吧。

使用特权

评论回复
24
馒头弟| | 2014-3-24 20:43 | 只看该作者
呵呵哒,,这是做什么,,没明白

使用特权

评论回复
25
NE5532| | 2014-3-24 21:40 | 只看该作者
wang074581 发表于 2014-3-24 14:37
版主 请问程序中那部分有问题呢? 麻烦帮忙看看好么?

if (早饭时间)
吃早饭

if (午饭时间)
吃午饭

if (晚饭时间)
吃晚饭

这个就是楼主想要的。

使用特权

评论回复
26
ttlasong| | 2014-3-25 08:41 | 只看该作者
NE5532 发表于 2014-3-24 21:40
if (早饭时间)
吃早饭

版主已经找到症结了,

理解了这些,也就知道问题在哪里了

使用特权

评论回复
27
pang3dsa| | 2014-3-25 10:14 | 只看该作者
编译通过是因为没有语法错误,不代表你的程序是正确的。
你的问题出在判断语句上。
RD2=0;RD5=1;RD4=1;ys(); //执行完这行代码后,RB2,RB4,RB5对应的电平应该是RB2==1,RB4==0,RB5==0      
//if((!RB5)&&(RB4)&&(RB2)) //第一路判断//这里判断的是RB2==1,RB4==1,RB5==0;条件才为真,和上条指令执行完结果不一致,所以为假,报警
if((RB2)&&(!RB4)&&(!RB5)) //第一路判断//修改为判断RB2==1,RB4==0,RB5==0   
{
RD2=1;RD5=0;RD4=1;ys();//执行完这行代码后,RB2,RB4,RB5对应的电平应该是RB2==0,RB4==0,RB5==1
//if((RB5)&&(!RB4)&&(RB2)) //第二路判断//这里判断的是RB2==1,RB4==1,RB5==0;条件才为真,和上条指令执行完结果不一致,所以为假,报警
if((!RB2)&&(!RB4)&&(RB5)) //第二路判断//修改为判断RB2==0,RB4==0,RB5==1
{
RD2=1;RD5=1;RD4=0;ys();//执行完这行代码后,RB2,RB4,RB5对应的电平应该是RB2==0,RB4==1,RB5==0
//if((RB5)&&(RB4)&&(!RB2))//第三路判断//这里判断的是RB2==0,RB4==1,RB5==1;条件才为真,和上条指令执行完结果不一致,所以为假,报警
if((!RB2)&&(RB4)&&(!RB5)) //第三路判断//修改为判断RB2==0,RB4==1,RB5==0

使用特权

评论回复
28
wang074581|  楼主 | 2014-3-25 12:25 | 只看该作者
NE5532 发表于 2014-3-24 21:40
if (早饭时间)
吃早饭

呵呵 版主 你没看懂我的程序!! 我绝对用的是IF的嵌套! 你所写的确实不是IF的嵌套 而我写的就是IF的嵌套!

使用特权

评论回复
29
wang074581|  楼主 | 2014-3-25 12:38 | 只看该作者
pang3dsa 发表于 2014-3-25 10:14
编译通过是因为没有语法错误,不代表你的程序是正确的。
你的问题出在判断语句上。
RD2=0;RD5=1;RD4=1;ys() ...

很感谢你能够耐心的看了我的程序 说明你是真心想帮我!不过朋友可能没看仔细. 程序中RD2,RD5,RD4分别对应的RB5,RB4,RB2他们不是“一一对应”的关系,我的程序中
RD2=0;RD5=1;RD4=1;ys();            
if((!RB5)&&(RB4)&&(RB2))  
RD2=0那么导通三极管使RB5接地,有且仅有RB5接地,即RB5=0,RB4=1,RB2=1; 朋友你说的“RD2=0;RD5=1;RD4=1;ys(); //执行完这行代码后,RB2,RB4,RB5对应的电平应该是RB2==1,RB4==0,RB5==0” 朋友如果端口是一一对应的话且用的是NPN的三极管你的程序是对的  可惜不是一一对应的,也没用NPN的管子!

使用特权

评论回复
30
wang074581|  楼主 | 2014-3-25 12:45 | 只看该作者
ttlasong 发表于 2014-3-25 08:41
版主已经找到症结了,

理解了这些,也就知道问题在哪里了

if的嵌套2种(我知道的)

第一种:
if()
{}else{if()}
第二种
if()
{
  if()
   {

    }else
}else
我用的就是第二种! 我没明白为什么版主说我不是IF的嵌套。

使用特权

评论回复
31
wang074581|  楼主 | 2014-3-25 12:56 | 只看该作者
NE5532 发表于 2014-3-24 21:40
if (早饭时间)
吃早饭

吃早饭 吃午饭 吃晚饭 我想问问之间有关联吗? 没有关联吧 没有关联自然不是嵌套关系!

你坐地铁 从火车北站到升仙湖 你敢说不过天府广场站吗? 要过天府广场吧 既然要过天府广场 那么你敢说天府广场和升仙湖没有关联吗?你总不能天府广场那站你凭空消失了,升仙湖站你又蹦出来了吧  既然有关联自然是嵌套!
尊你一声前辈  前辈你好像没看仔细我的程序!
我程序中用的是
if()
{
   if()
    {
      }else;
}else;
你说是不是嵌套!

使用特权

评论回复
32
NE5532| | 2014-3-25 16:08 | 只看该作者
你的第一个判断是“三个端口都是低电平”,然后在这个条件之下判断“仅有某一个端口为低电平”,这两个条件不是矛盾的么?我不看程序,只看流程图,流程图对了,程序就对了。

使用特权

评论回复
33
wang074581|  楼主 | 2014-3-25 16:43 | 只看该作者
NE5532 发表于 2014-3-25 16:08
你的第一个判断是“三个端口都是低电平”,然后在这个条件之下判断“仅有某一个端口为低电平”,这两个条件 ...

源程序:
if((!RB5)&&(!RB4)&&(!RB2))                                  //通路判断   
{
RD2=0;RD5=1;RD4=1;ys();            
if((!RB5)&&(RB4)&&(RB2))   
我第一个判断是判断了3个为低, 判断之后我改动了RD口的电平变化,改动了RD口就相当于改变了RB口的电平(RB内置弱上拉),然后进入第二个判断,这时候RB口的电平已经发生了变化 我再给出了新的判断条件 这样做有问题? 就好比你已经进入第一个门 再进入第二个门难道必须要保证第一个门必须要开着的么?               

使用特权

评论回复
34
wang074581|  楼主 | 2014-3-25 16:54 | 只看该作者
NE5532 发表于 2014-3-25 16:08
你的第一个判断是“三个端口都是低电平”,然后在这个条件之下判断“仅有某一个端口为低电平”,这两个条件 ...

IF的嵌套!

图片1.png (13.66 KB )

IF嵌套

IF嵌套

使用特权

评论回复
35
NE5532| | 2014-3-25 17:12 | 只看该作者
倒不是必须回去,但是你的流程图,你的电路图都没有表达出“进入某个情况,进行了操作以后,会影响这3个端口的情况”。而且如果你是这样设计的,那么就要注意操作和判断之间是否存在“互锁”的关系,所以楼主需要细化自己的电路图和流程图来找问题,写语句我相信你没问题的,问题出在流程上。

使用特权

评论回复
36
wang074581|  楼主 | 2014-3-25 17:19 | 只看该作者
NE5532 发表于 2014-3-25 17:12
倒不是必须回去,但是你的流程图,你的电路图都没有表达出“进入某个情况,进行了操作以后,会影响这3个端 ...

前辈“那么就要注意操作和判断之间是否存在“互锁”的关系” 是什么意思? 不懂啊 我在网上看了了下互锁,但是:操作和判断之间是否存在“互锁”。是个什么意思呢?

使用特权

评论回复
37
NE5532| | 2014-3-26 09:51 | 只看该作者
wang074581 发表于 2014-3-25 17:19
前辈“那么就要注意操作和判断之间是否存在“互锁”的关系” 是什么意思? 不懂啊 我在网上看了了下互锁 ...

互锁就是你把你的房门钥匙锁在你女朋友家里,你女朋友把她的房门钥匙锁在你屋里,然后你们俩相互找钥匙开门,这门是不可能打开的。

因为你的程序里涉及“判断”、“操作”、“再判断”,操作是否正确,能否让流程继续下去,值得考虑。另外以你的建议是,多运算,少跳转。“运算”出一个唯一的结果,然后拿着这个结果去执行,而不是依赖程序执行的先后顺序去做。

使用特权

评论回复
38
wang074581|  楼主 | 2014-3-26 11:11 | 只看该作者
NE5532 发表于 2014-3-26 09:51
互锁就是你把你的房门钥匙锁在你女朋友家里,你女朋友把她的房门钥匙锁在你屋里,然后你们俩相互找钥匙开 ...

前辈,鄙人受教了!!! 佩服!! 不过我还有个语言上的问题想请教

if((!RB5)&&(!RB4)&&(!RB2)) 此语句中,&&的用法是不是正确的 我有点怀疑!! &&我记得是从左向右进行,但是适不适合2个以上的判断呢?

使用特权

评论回复
39
NE5532| | 2014-3-26 12:18 | 只看该作者
用法到是正确的,&&用于对逻辑变量进行运算,可以用于多个变量的运算,但是在你不确定的情况下,不如用简单方式来写

if (RB & ((1<<5) | (1<<4) | (1<<2)) == 0x00)

或者干脆直接写成

if ((RB & 0x1A) == 0x00)

就不用纠结这个问题啦。

使用特权

评论回复
40
wang074581|  楼主 | 2014-3-26 22:10 | 只看该作者
NE5532 发表于 2014-3-26 12:18
用法到是正确的,&&用于对逻辑变量进行运算,可以用于多个变量的运算,但是在你不确定的情况下,不如用简单 ...

前辈 我还想问个问题! PIC单片机 读取单个I/O口电平进行比较(就分别读取RB2 RB3进行比较嘛) 如何写? 我希望你能给我个标准的答案!我一直对这个比较迷糊。希望解答!!谢谢!

使用特权

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

本版积分规则