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