This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Interrupt servicing after longjmp instruction

I'm using Keil compiler for 8051Warp uP.
I would like to make a jump from an interrupt
routine back to the main function, this way:

main ()
{
init_function();

if (setjmp(env)!=0)
{
// Recovery procedure here
...
}

while (1)
{
// body of my program
...
}

}

void irq (void) interrupt (12)
{
if (condition) longjmp (env,1);
}

void init_function()
{
IE = 0xA0;
IEN1 = 0xC4;
IP = 0x00;
IP1= 0x40;
}

I'm experiencing the following problem.
Right after the longjmp instruction, the execution actually
restarts at the setjmp instruction point (as i wish), but no more interrupt
can be serviced after this jump.
It looks like the IE.7 bit has been reset in some way. Anyway, even if i set
the IE / IE1 registers after the jump, no more interrupt are serviced
by the uP.
Somebody could help me? Thanx.