打印

前辈们,看看这2个为啥有区别

[复制链接]
2445|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cjmqgsx|  楼主 | 2013-1-28 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

今天下午反复试验,就在单片机与7705联合起来测试电压的程序里面,我有一段程序用不上,需要屏蔽掉,于是发现以下情况,只要按照图中在每个if和else语句里面逐行屏蔽的话,是可以正常工作,不会出错的,但如果像第二张图,全段程序在开头与结尾只用用/*和*/包括起来,屏蔽一大段的话,整个程序就会陷入一个死循环里面,永远重复,极其纳闷,恳请各位前辈,列举一些最有可能原因,不胜感激,我是用的STC单片机


相关帖子

沙发
yucf2002| | 2013-1-29 09:22 | 只看该作者
呵呵,漏屏蔽"}".

使用特权

评论回复
板凳
dirtwillfly| | 2013-1-29 09:34 | 只看该作者
楼上是正解,不仔细看还真看不出来。
上图中最下面一行中的“*/”应放到括号外。

使用特权

评论回复
地板
cjmqgsx|  楼主 | 2013-1-29 20:25 | 只看该作者
yucf2002 发表于 2013-1-29 09:22
呵呵,漏屏蔽"}".

谢谢您费心检查看,不好意思啊,这个贴图是我昨晚为了传图才把程序临时改屏蔽的,可能不仔细,就像你说的,没有吧屏蔽符号“*/”放在“}”的外面,但实际上我在客户那里现场调试的时候,是放在结尾外面的,这个我翻阅了现场的程序,“*/”是没有放在“}”里面,是正确的,再说了,如果是这样的话,keil汇编的时候也会报错的,但实际上没有。我确定没有这个问题的存在,所以说我是极其郁闷啊  呵呵 只能向前辈您们求助,看看有没有其他什么可能的因素,会导致这样的情况发生。再次说声谢谢

使用特权

评论回复
5
cjmqgsx|  楼主 | 2013-1-29 20:31 | 只看该作者
dirtwillfly 发表于 2013-1-29 09:34
楼上是正解,不仔细看还真看不出来。
上图中最下面一行中的“*/”应放到括号外。 ...

前辈,我这个贴图程序是昨晚临时改的屏蔽,传上来的,可能临时屏蔽错了,但是在客户那里屏蔽程序没有出现这样子,我都是吧“/*”与“*/”放在{}外面的,汇编检查时候也没有报错,所以我是百思不得其解,很困惑,只是屏蔽的方式不同,为什么结果却截然不同?多谢前辈费心,非常感激

使用特权

评论回复
6
dirtwillfly| | 2013-1-29 20:44 | 只看该作者
cjmqgsx 发表于 2013-1-29 20:31
前辈,我这个贴图程序是昨晚临时改的屏蔽,传上来的,可能临时屏蔽错了,但是在客户那里屏蔽程序没有出现 ...

要是方便的话,还是把工程传上来吧。只看一段程序,是看不出来的。

使用特权

评论回复
7
cjmqgsx|  楼主 | 2013-1-29 21:06 | 只看该作者
dirtwillfly 发表于 2013-1-29 20:44
要是方便的话,还是把工程传上来吧。只看一段程序,是看不出来的。

程序我传了,但是超出范围了,这样吧,我传个附件上来

使用特权

评论回复
8
cjmqgsx|  楼主 | 2013-1-29 21:12 | 只看该作者
请前辈您看看,费心了

2个不同屏蔽程序.zip

8.69 KB

使用特权

评论回复
9
cjmqgsx|  楼主 | 2013-1-29 21:12 | 只看该作者
用keil打开就可以看到

使用特权

评论回复
10
sky大花猫| | 2013-1-29 21:26 | 只看该作者
楼主还有一种情况是程序跑偏了,从新建个工程再做一遍可能会好。。我编程经常碰到这种情况,明明正确的结果就是不出来,于是从新建立工程,马上就好,呵呵。。

使用特权

评论回复
11
cjmqgsx|  楼主 | 2013-1-29 21:35 | 只看该作者
sky大花猫 发表于 2013-1-29 21:26
楼主还有一种情况是程序跑偏了,从新建个工程再做一遍可能会好。。我编程经常碰到这种情况,明明正确的结果 ...

难道是因为这样吗?那改天我到客户那里去试一试,谢谢你提供宝贵经验:handshake

使用特权

评论回复
12
sky大花猫| | 2013-1-29 21:53 | 只看该作者
cjmqgsx 发表于 2013-1-29 21:35
难道是因为这样吗?那改天我到客户那里去试一试,谢谢你提供宝贵经验 ...

嗯,你试试吧,希望能好

使用特权

评论回复
13
xxlin1984| | 2013-1-30 09:42 | 只看该作者
本帖最后由 xxlin1984 于 2013-1-30 09:43 编辑

从程序看,少了这两句

DelayMS(800);
clr_lcd();
LZ看看800ms延时对自身时序,以及外部被测板有什么影响

使用特权

评论回复
14
dragon20100708| | 2013-1-30 13:47 | 只看该作者
learn

使用特权

评论回复
15
xuxikfg| | 2013-1-30 14:04 | 只看该作者
路过看看

使用特权

评论回复
16
whxbluesky| | 2013-1-30 15:42 | 只看该作者
碰到这种情况,最好的办法就是分段局部屏蔽地检查

使用特权

评论回复
17
徐XX| | 2013-1-30 16:18 | 只看该作者
好久不编程

使用特权

评论回复
18
cjmqgsx|  楼主 | 2013-5-2 19:32 | 只看该作者
自己今天来结个尾,因为在今天一不小心看到一个例子的解答方法,有所启发,最终还找出了我发帖的正确答案,因为我用的是串口检测电压,用的是查询中断高低电平,但我又在前面有开了串口中断,却没有中断服务函数,因而发生错误(估计是堆栈值乱跳),解决方法有2个。1:加个中断服务函数,程序内容为空也行。2:关掉串口中断即可。
从根本解决问题感觉就是好。

使用特权

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

本版积分规则

个人签名:登高者必自卑,行远者必自迩。

1

主题

54

帖子

0

粉丝