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

Change the offset for the interrupt vector

Hi
I working with 89c669 and want to change the program start address to 0x016000h.
But when I try to change the Interrupt vector to that address I get
"Invalid Interrupt Vector Address !"
Why can't i use a Address greater than 0xffff?

Parents
  • The CSEG statement defines and selects a CODE segment (similar to myseg segment code at address, rseg myseg). The CODE area is limited to 64K. That's why you get the errors you do. You'll need to use the SEGMENT and RSEG statements to create an ECODE segment.

    However, a not-so-obvious problem is that the reset vector is at address 0 and the first interrupt is at address 3. You probably don't want to overwrite the interrupt vector with an EJMP instruction (required for JMPs to ECODE). So, you should probably create an LJMP to a code segment and then from there EJMP to the actual program.

    Jon

Reply
  • The CSEG statement defines and selects a CODE segment (similar to myseg segment code at address, rseg myseg). The CODE area is limited to 64K. That's why you get the errors you do. You'll need to use the SEGMENT and RSEG statements to create an ECODE segment.

    However, a not-so-obvious problem is that the reset vector is at address 0 and the first interrupt is at address 3. You probably don't want to overwrite the interrupt vector with an EJMP instruction (required for JMPs to ECODE). So, you should probably create an LJMP to a code segment and then from there EJMP to the actual program.

    Jon

Children