打印
[PIC®/AVR®/dsPIC®产品]

换了位置就执行效果不同

[复制链接]
370|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 | 只看该作者
这两段代码逻辑是应该是一样的,除了运算顺序略有区别。

使用特权

评论回复
5
zwll| | 2022-7-10 10:45 | 只看该作者
编译器你应该给出版本和优化设置,其他也无法排出“破丢死”的问题,你也可以在MPLAB内sim一下看看

使用特权

评论回复
6
xxrs| | 2022-7-10 10:47 | 只看该作者
如果怀疑优化的问题,你最好贴出反汇编,菜单view,disassembly

使用特权

评论回复
7
jlyuan| | 2022-7-10 11:03 | 只看该作者
一模一样的,可能软件有问题

使用特权

评论回复
8
stly| | 2022-7-10 11:10 | 只看该作者

应该不至于吧

使用特权

评论回复
9
supernan| | 2022-7-10 11:12 | 只看该作者
不会的。Proteus的问题吧

使用特权

评论回复
10
xxrs| | 2022-7-10 11:12 | 只看该作者
是不是跟频率也有关系呢

使用特权

评论回复
11
zhanghqi|  楼主 | 2022-7-10 11:15 | 只看该作者
看起来没差别啊..
可以试试在X IDE用simulator软仿的方式来试试..

使用特权

评论回复
12
zhanghqi|  楼主 | 2022-7-10 11:17 | 只看该作者

好的,我明天去单位试一下,多谢各位大侠了哈        

使用特权

评论回复
13
pzsh| | 2022-7-25 11:33 | 只看该作者
Proteus还有这样的问题?

使用特权

评论回复
14
wziyi| | 2022-7-25 21:52 | 只看该作者
最好贴代码

使用特权

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

本版积分规则

852

主题

11757

帖子

5

粉丝