|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
Code visionAVR用的真不爽,碰到这样的问题,前辈们过来看看 |
作者:leech42 栏目:单片机 |
if条件语句中不能进行算术运算,一用就程序执行不进去,也不知是咋回事,大家有碰到过吗? 比如 (1)、if(a != 0) { if((a--) == 0) { a = 200; b = true; } } (2)、if(a != 0) { a--; if(a == 0) { a = 200; b = true; } } 如上面的程序,(1)就进不了b=true那一段,而(2)就可以,但是我看编译好了后的汇编指令好像也是没什么错的。 还有就是我看到if((--a) == 0)这句的汇编指令是这样的 000092 944a DEC R4 000093 F419 BRNE _0x10 好像不大对吧??? 走过路过的能帮忙我解决一下!!!! |
2楼: | >>参与讨论 |
作者: zsmbj 于 2005/7/6 8:47:00 发布:
是你的程序的问题啦!和Code visionAVR没关系。 a--是先执行比较然后再减,这样你的b=true就无论如何都不能执行了。这是对的。 假设a=1,则不会执行b=true,然后a--=0,这样连第一个if语句都不会进入了。所以更不会执行b=true了。 这样写就行了。 if(a != 0) { if((--a) == 0) { a = 200; b = true; } } 幸亏Code visionAVR没有进入这个循环,否则它可就错大了。呵呵! |
3楼: | >>参与讨论 |
作者: leech42 于 2005/7/6 12:44:00 发布:
呵呵,大意了,没注意,基本常识错误! if((--a) == 0)编译出来是这样两条汇编指令 000092 944a DEC R4 000093 F419 BRNE _0x10 这两条的意思是不是就是当R4减1为0时则不跳? |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |