Hello friends
i set x=0; in timer Interruption x=0; per 1ms
in my program i using this Code
x=1;
while(x);
in debug i see x is 0 but CPU Remaining in while(x)
but if my while have any command work right and exit from while!!
x=1;
while(x); not exit if x == 0
x=1;
while(x) {for example LCD_Clear();} // exit from this while if x == 0
Is this a law in IAR or this is bug ?
- - - Updated - - -
Answer
Possibly due to the compiler optimising the code. Is x declared volatile? It should be. If not, the compiler is free to assume that the value never changes, and will read it only once. Step through the assembler and see whether the variable is actually read on every iteration.