thank you ! my friends!
You really should look at a 'C' book for the answer to this. However, in general, use volatile for any variable or pointer accessed both inside and outside an ISR. Use volatile for any variable which resides at a memory address whose contents could be changed by something outwith your program. Stefan