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

[复制链接]
3018|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汇编的时候也会报错的,但实际上没有。我确定没有这个问题的存在,所以说我是极其郁闷啊  呵呵 只能向前辈您们求助,看看有没有其他什么可能的因素,会导致这样的情况发生。再次说声谢谢
 楼主| cjmqgsx 发表于 2013-1-29 20:31 | 显示全部楼层
dirtwillfly 发表于 2013-1-29 09:34
楼上是正解,不仔细看还真看不出来。
上图中最下面一行中的“*/”应放到括号外。 ...

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

要是方便的话,还是把工程传上来吧。只看一段程序,是看不出来的。
 楼主| cjmqgsx 发表于 2013-1-29 21:06 | 显示全部楼层
dirtwillfly 发表于 2013-1-29 20:44
要是方便的话,还是把工程传上来吧。只看一段程序,是看不出来的。

程序我传了,但是超出范围了,这样吧,我传个附件上来
 楼主| cjmqgsx 发表于 2013-1-29 21:12 | 显示全部楼层
请前辈您看看,费心了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| cjmqgsx 发表于 2013-1-29 21:12 | 显示全部楼层
用keil打开就可以看到
sky大花猫 发表于 2013-1-29 21:26 | 显示全部楼层
楼主还有一种情况是程序跑偏了,从新建个工程再做一遍可能会好。。我编程经常碰到这种情况,明明正确的结果就是不出来,于是从新建立工程,马上就好,呵呵。。
 楼主| cjmqgsx 发表于 2013-1-29 21:35 | 显示全部楼层
sky大花猫 发表于 2013-1-29 21:26
楼主还有一种情况是程序跑偏了,从新建个工程再做一遍可能会好。。我编程经常碰到这种情况,明明正确的结果 ...

难道是因为这样吗?那改天我到客户那里去试一试,谢谢你提供宝贵经验:handshake
sky大花猫 发表于 2013-1-29 21:53 | 显示全部楼层
cjmqgsx 发表于 2013-1-29 21:35
难道是因为这样吗?那改天我到客户那里去试一试,谢谢你提供宝贵经验 ...

嗯,你试试吧,希望能好
xxlin1984 发表于 2013-1-30 09:42 | 显示全部楼层
本帖最后由 xxlin1984 于 2013-1-30 09:43 编辑

从程序看,少了这两句

DelayMS(800);
clr_lcd();
LZ看看800ms延时对自身时序,以及外部被测板有什么影响
dragon20100708 发表于 2013-1-30 13:47 | 显示全部楼层
xuxikfg 发表于 2013-1-30 14:04 | 显示全部楼层
路过看看
whxbluesky 发表于 2013-1-30 15:42 | 显示全部楼层
碰到这种情况,最好的办法就是分段局部屏蔽地检查
徐XX 发表于 2013-1-30 16:18 | 显示全部楼层
好久不编程
 楼主| cjmqgsx 发表于 2013-5-2 19:32 | 显示全部楼层
自己今天来结个尾,因为在今天一不小心看到一个例子的解答方法,有所启发,最终还找出了我发帖的正确答案,因为我用的是串口检测电压,用的是查询中断高低电平,但我又在前面有开了串口中断,却没有中断服务函数,因而发生错误(估计是堆栈值乱跳),解决方法有2个。1:加个中断服务函数,程序内容为空也行。2:关掉串口中断即可。
从根本解决问题感觉就是好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

1

主题

54

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部