PIC软仿进不去程序

[复制链接]
2044|6
 楼主| xyz549040622 发表于 2013-6-9 02:05 | 显示全部楼层 |阅读模式
如下面所示一小段代码,用MPLAB软仿的时候竟然进不去,提示不执行,什么原因?
  1. void AD5662_reg_write(unsigned int En_DA_Num, unsigned int Mode, unsigned int RegisterData)
  2. {
  3.     unsigned long ControlValue = 1;
  4. //    unsigned int i = 0;
  5.        
  6.         //Create the 24-bit
  7.         Mode = Mode + 0x01;
  8.             ControlValue++;

编译提示为_ControlValue" is not used,就是说没有执行
  1. Mode = Mode + 0x01;
  2. ControlValue++;
这两条语句,这是什么原因导致的呢?

弓长月月鸟 发表于 2013-6-9 07:44 | 显示全部楼层
建议版主在ControlValue++; 语句后面,增加一个if(ControlValue>=10) ControlValue=0;软件再编译一下进行软仿。我这两天也发现这个问题。后来这样试了试,这个变量就被用了。软仿也是没有问题的。版主不妨试试,希望能帮上您

评论

4.5,6楼说的有道理,估计是优化级别的问题  发表于 2013-6-12 16:26

评分

参与人数 1威望 +2 收起 理由
xyz549040622 + 2

查看全部评分

jlass 发表于 2013-6-9 09:15 | 显示全部楼层
把ControlValue++改成ControlValue=ControlValue+1试试。
yewuyi 发表于 2013-6-9 10:03 | 显示全部楼层
无意义代码。

ControlValue固定赋值为1,然后再加1,而且也没有实际意义的使用这个临时变量,对于编译器来说,就会被当成无效代码直接优化掉。

评分

参与人数 1威望 +2 收起 理由
xyz549040622 + 2

查看全部评分

llqjmy 发表于 2013-6-9 17:09 | 显示全部楼层
你是不是用的PICC?代码被优化了。用PICC进行仿真的时候,经常碰到这种问题的。

评分

参与人数 1威望 +2 收起 理由
xyz549040622 + 2 优化等级降到最低?

查看全部评分

Ryanhsiung 发表于 2013-6-10 19:15 | 显示全部楼层
可以将优化等级拉到最低,试一下看看

评分

参与人数 1威望 +2 收起 理由
xyz549040622 + 2

查看全部评分

 楼主| xyz549040622 发表于 2013-6-10 22:01 | 显示全部楼层
发现一件事情,PIC的形参无法直接进行运算,必须赋值给一个中间变量,再用中间变量运算才可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2841

主题

19330

帖子

110

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