Volatile – Variables Which Can Be Altered In Interrupts

Ensure these variables are declared with the 'volatile' keyword so the compiler knows the variable can be changed in an interrupt.  This can be a classic cause of very strange bugs where you can't understand why your release code seems to be getting locked up, say, on a while loop but its actually because the compiler has assumed a varaible you are testing cannot change outside of the local function and created the assemlber code in a way which ignores the change occuring in an interrupt.


volatile BYTE my_10ms_timer;
extern volatile BYTE my_10ms_timer;