| 
 
| 我在仿真的时候发现一个问题:<br />unsigned char A,B;<br /><br />void test(void)<br />{<br />   unsigned char tmp;<br />   A=0;<br />   B=0;<br />   while(1){<br />      tmp = A - B;<br />      if(tmp > 12){<br />           //执行特殊功能<br />           //.....<br />           break;<br />      }<br />   }<br />}<br />我在中断程序中有对A进行不断加1的操作,可是永远进不去“执行特殊功能”执行并且跳出的功能,我看了汇编,似乎程序while(1)上面对A和B赋值为0后,tmp就定死是0了。中断对A的增加,在此处无效了。<br /><br />难道是被ADS编译优化掉了?搞了一天没有搞定。<br /><br />unsigned char BootPt(void)<br />{<br />   unsigned char tmp;<br />   tmp = A - B;<br />   return tmp;<br />}<br /><br />void test(void)<br />{<br />   unsigned char tmp;<br />   A=0;<br />   B=0;<br />   while(1){<br />      tmp = BootPt();<br />      if(tmp > 12){<br />           //执行特殊功能<br />           //.....<br />           break;<br />      }<br />   }<br />}<br />把程序变成这样,勉强可以使用。<br /><br />为什么会这样,求教了,急!!!!<br />在线等待中......<br /> | 
 |