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

AT89C51ED2: Selecting external vs internal flash

I would like to set a (fuse?) bit to select the external Flash/PEROM as program memory instead of default Flash internal to the AT89C51. Is the BLJB bit the one I want to set? How do I set it?

Parents
  • Same topic, new problem:

    With the ~EA pin tied low, the processor will be accessing program memory on the external PEROM. OK.

    The BLBJ bit is (by default) 0. BSB is 0, SBV is FCh (default values). So the Atmel bootloader tries to run at address F800h.

    My understanding is that, at this point, the processor tries to execute instruction at address F800h on the external PEROM, thinking it's running the bootloader.

    My questions:
    1. Am I correct that this is what is happening?
    2. I want to execute at 0 on the external without programming/modifying the processor's hardware registers nor its pin connections. The only modification that can be made is to program memory (on the flash).

    I tried to follow the Keil directions for relocating code, to hard-wire a long-jump to 0 at F800h, but "CSEG AT F800h" gives an error ("Expression with forward reference not permitted").

    Is there an elegant solution?

Reply
  • Same topic, new problem:

    With the ~EA pin tied low, the processor will be accessing program memory on the external PEROM. OK.

    The BLBJ bit is (by default) 0. BSB is 0, SBV is FCh (default values). So the Atmel bootloader tries to run at address F800h.

    My understanding is that, at this point, the processor tries to execute instruction at address F800h on the external PEROM, thinking it's running the bootloader.

    My questions:
    1. Am I correct that this is what is happening?
    2. I want to execute at 0 on the external without programming/modifying the processor's hardware registers nor its pin connections. The only modification that can be made is to program memory (on the flash).

    I tried to follow the Keil directions for relocating code, to hard-wire a long-jump to 0 at F800h, but "CSEG AT F800h" gives an error ("Expression with forward reference not permitted").

    Is there an elegant solution?

Children