是我疯了还是PICC疯了?

[复制链接]
3293|9
 楼主| hjh002 发表于 2008-8-8 15:52 | 显示全部楼层 |阅读模式
发现怪问题了,我用的PICC&nbsp;9.6&nbsp;,在一个发声子程序中钳入汇编,我们知道&nbsp;BTFSS&nbsp;f,b&nbsp;这条指令,只有当发生跳转的时候<br />才是两个周期,如果不发生跳转,接着执行紧跟着它的那条指令的话,是单周期的,今天我却碰到了相反的情况,看图:<br />
 楼主| hjh002 发表于 2008-8-8 15:53 | 显示全部楼层

另一个图

这是怎么回事呢?<br />说明一下,这条指令在这个子程序中多次出现,但是只有这个子程序中的最后这一条发生这样的情况,因为是用32K的晶<br /><br />体用来做发声程序,差了一个指令周期声音都变了,&nbsp;头大了.<br /><br /><br />
yewuyi 发表于 2008-8-8 17:09 | 显示全部楼层

请问一下,你是软件仿真还是带硬件仿真器的结果?

  
yewuyi 发表于 2008-8-8 17:19 | 显示全部楼层

最好能把项目打包后给有PICC9.60编译器的XD测试

呵呵,我只有PICC8.05,950版本一直不能用。。。
 楼主| hjh002 发表于 2008-8-8 17:28 | 显示全部楼层

是软件仿真的结果,烧到IC上运行结果也一样.

没有硬件仿真.
lanyong 发表于 2008-8-8 17:33 | 显示全部楼层

莫优化

优化后,有些程序段乱跑.<br /><br />不知道是否是这个问题哦.
 楼主| hjh002 发表于 2008-8-9 09:51 | 显示全部楼层

找到一半原因.

原来是编译器把这条指令改掉了,把BTFSS&nbsp;改成了BTFSC,但是为什么编译器会把它改掉,原因不明中,去掉优化也一样.呵呵,用PICC,不明原因的神奇事情几乎个个项目都会发生,且个个不同.<br />
yewuyi 发表于 2008-8-9 10:13 | 显示全部楼层

去掉优化不代表没有一点优化,除非你完全用汇编写

只要用C,即使去掉优化,在一些显而易见的问题上,编译器应该还是会做一些优化的,这种优化基本对你的代码没有影响。<br /><br />
 楼主| hjh002 发表于 2008-8-9 11:30 | 显示全部楼层

解决办法也有了

原来是RETURN指令在作怪,只需在RETRUN指令前随便插一条其他指令,比如NOP,编译器就不会把指令改掉了,看来RETURN指令前世一定是欠了PICC很多钱,或者是有负于PICC一片痴心,哈哈.
w321 发表于 2008-8-10 11:55 | 显示全部楼层

呵呵, 受教了

&nbsp;&nbsp;&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

120

帖子

0

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