[PIC®/AVR®/dsPIC®产品] 换了位置就执行效果不同

[复制链接]
611|13
 楼主| zhanghqi 发表于 2022-7-10 10:29 | 显示全部楼层 |阅读模式
本帖最后由 pzsh 于 2022-7-25 11:32 编辑

PIC16F877A的C语言代码逻辑与问题,换了位置就执行效果不同
stly 发表于 2022-7-10 10:34 | 显示全部楼层

什么意思?不是很明白你说的什么,能再解释一下这个现象吗
 楼主| zhanghqi 发表于 2022-7-10 10:38 | 显示全部楼层
单片机是PIC16F877A 用Proteus仿真 发现代码有这个问题
  if((output_var!=0x00)&&(output_var!=0x80))
  {

       RB1=~RB1;
  }
和  if((output_var!=0x80)&&(output_var!=0x00))
  {

       RB1=~RB1;
  }
两个代码有什么区别?第二种会执行RB1,编译器是MPLAB+PICC 谢谢!
难道是编译器优化了?
jiajs 发表于 2022-7-10 10:42 | 显示全部楼层
这两段代码逻辑是应该是一样的,除了运算顺序略有区别。
zwll 发表于 2022-7-10 10:45 | 显示全部楼层
编译器你应该给出版本和优化设置,其他也无法排出“破丢死”的问题,你也可以在MPLAB内sim一下看看
xxrs 发表于 2022-7-10 10:47 | 显示全部楼层
如果怀疑优化的问题,你最好贴出反汇编,菜单view,disassembly
jlyuan 发表于 2022-7-10 11:03 | 显示全部楼层
一模一样的,可能软件有问题
stly 发表于 2022-7-10 11:10 | 显示全部楼层

应该不至于吧
supernan 发表于 2022-7-10 11:12 | 显示全部楼层
不会的。Proteus的问题吧
xxrs 发表于 2022-7-10 11:12 | 显示全部楼层
是不是跟频率也有关系呢
 楼主| zhanghqi 发表于 2022-7-10 11:15 | 显示全部楼层
看起来没差别啊..
可以试试在X IDE用simulator软仿的方式来试试..
 楼主| zhanghqi 发表于 2022-7-10 11:17 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈        
pzsh 发表于 2022-7-25 11:33 | 显示全部楼层
Proteus还有这样的问题?
wziyi 发表于 2022-7-25 21:52 | 显示全部楼层
最好贴代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

852

主题

11757

帖子

5

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