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 numbering

I have noticed that the Kiel compiler doesn't produce the correct interrupt vector if 8051 interrupt numbers are used. For example for external interrupt 0 (IE0), the interrupt number has to be 0, instead of 1 to produce a jump at location 1. Example:

void edge1 (void) interrupt 0{ /*produces correct code

while

void edge1 (void) interrupt 1{ /*produces wrong code

This is the case with all the interrupts I have used. My questions is what do you have to do to produce a reset vector? Reset is interrupt number 0 in 8051 numbering. Using -1 or 255 both produce a compile error.

Parents Reply Children
  • Another - possibly more fundamental difference - is that interrupts by definition interrupt normal program execution and return where they left off afterwards

    That describes the normal usage of an interrupt, but at the risk of getting into another intractable and pedantic discussion you might say that:

    "interrupts by definition interrupt normal program execution"

    and that:

    "the return from interrupt instruction by definition returns to where execution was interrupted by the last interrupt provided that there was no messing with the stack in the intervening period"

    I'm sure you'll now point me to some document that defines interrupt as precisely what you've written. above, though.

  • Now you're just being needlessly pedantic...!

    ;-)