打印

一个小问题求解

[复制链接]
1883|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ningling_21|  楼主 | 2013-1-20 13:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4路AD值数码管显示;
4路拨码用来屏蔽显示;(拨到ON位置时禁止该路数据显示)
部分程序如下
........
disp_chn++;      //显示通道切换
if(disp_chn>3)
{
    disp_chn=0;
}

if(disp_chn==0 && dis_ch1==1)   //如果显示第1路,且第1路被屏蔽,则切换到下一路
{
    disp_chn=1;
}
if(disp_chn==1 && dis_ch2==1)   //如果显示第2路,且第2路被屏蔽,则切换到下一路
{
    disp_chn=2;
}

if(disp_chn==2 && dis_ch3==1)   //如果显示第3路,且第3路被屏蔽,则切换到下一路
{
    disp_chn=3;
}

if(disp_chn==3 && dis_ch2==1)   //如果显示第4路,且第4路被屏蔽,则切换到第一路
{
    disp_chn=0;
}


结果:当第1路被屏蔽时,第一路也能显示出来,求解...

相关帖子

沙发
NE5532| | 2013-1-20 13:55 | 只看该作者
没有看懂你的需求,但是提醒楼主,你这样写IF,所有的IF都会被顺次执行的,你是不是想写else if??

使用特权

评论回复
板凳
dirtwillfly| | 2013-1-20 16:03 | 只看该作者
这样写,不如用case了

使用特权

评论回复
地板
ningling_21|  楼主 | 2013-1-20 17:55 | 只看该作者
NE5532 发表于 2013-1-20 13:55
没有看懂你的需求,但是提醒楼主,你这样写IF,所有的IF都会被顺次执行的,你是不是想写else if?? ...

就是说,上面的程序会造成第一路屏蔽不掉.

使用特权

评论回复
5
周文家Asking| | 2013-1-20 19:14 | 只看该作者
if(disp_chn==3 && dis_ch2==1)   这是你的第四路    dis_ch2   跟第二路一样了。

使用特权

评论回复
6
NE5532| | 2013-1-20 20:17 | 只看该作者
ningling_21 发表于 2013-1-20 17:55
就是说,上面的程序会造成第一路屏蔽不掉.

看不懂你的程序,因为里面标志太多,但是直觉就是这样的if可能有问题,建议楼主画一下流程图。

使用特权

评论回复
7
ningling_21|  楼主 | 2013-1-21 08:00 | 只看该作者
NE5532 发表于 2013-1-20 20:17
看不懂你的程序,因为里面标志太多,但是直觉就是这样的if可能有问题,建议楼主画一下流程图。 ...

总共只有4个标志,分别代表4路的屏蔽情况,1表示已屏蔽,0表示未屏蔽。

使用特权

评论回复
8
qingx| | 2013-1-21 08:58 | 只看该作者
这个有点看不懂

使用特权

评论回复
9
nbsmaps| | 2013-1-21 09:35 | 只看该作者
在C51中设置编译优化级别,这种语句,很可能会被C优掉。也可写成:if((disp_chn==0) &&( dis_ch1==1)) 试试看吧

使用特权

评论回复
10
ningling_21|  楼主 | 2013-1-22 20:29 | 只看该作者
换方案,已解决!

使用特权

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

本版积分规则

5013

主题

17729

帖子

51

粉丝