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
  • My questions is what do you have to do to produce a reset vector?

    you can't, THE '51 CAN NOT BE RESET 'BY VECTOR'

    If address 0 was interrupt 0 you could restart the processor, but the SFRs would not default.

    to reset the processor you can time out a watchdog, some derivatives have a SFR bit that will cause a reset, but just a jump to 0 will not do.

    Erik

Reply
  • My questions is what do you have to do to produce a reset vector?

    you can't, THE '51 CAN NOT BE RESET 'BY VECTOR'

    If address 0 was interrupt 0 you could restart the processor, but the SFRs would not default.

    to reset the processor you can time out a watchdog, some derivatives have a SFR bit that will cause a reset, but just a jump to 0 will not do.

    Erik

Children