I have get what is going wrong. In floasc.inc from Microchip, it allocate something at 0x70, which is exactly where I was allocating status_temp & w_temp. Then my ISR make use the function define in floasc.inc. As a result, w & status were never restored correctly. Thank you very much to those who have response. I had less understanding about stack overflow and believe that it was the cause. With your explanation, I was able to rule out the possibility, and start looking at other. WH Tan -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu