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

Example code to read/write 0851 internal flash

Hello,

I can't find any example C code to read and/or write an 8051 internal flash memory.
I'm using a C8051F353 and the micro datasheet doesn't explain very well how to do it.
When the manual speaks about using the MOVX and MOVC instruction to respectively write and read is not clear.
My requests are:
1) how to put the assembler code inside the C code
2) how to read and write a specific byte memory, ex: 0x0800
3) is it possible to do it only with C code?

Regards,

Parents
  • The processor does not have any instructions to write to the code memory. But I assume this processor does what lots of other processors does - it allows a part of the XDATA address range to be mapped as overlapping the CODE memory region.

    This allows XDATA writes to copy new contents to the code flash.

    Obviously, the manual for the C compiler will tell you how you set up a pointer into code space (or an array), to allow reading of data from the flash using MOVC instructions. And the manual also contains information how to set up XDATA pointers (or an array), allowing you to write into XDATA using MOVX instructions.

    "how to read and write a specific byte memory, ex: 0x0800"

    This question can't be answered, since it assumes that there is one unique address 0x0800. But the existence for MOVX and MOVC is that the processor have multiple address ranges that are not overlapping, or in some situations just partially overlapping. So a "real" address for a 8051 chip must not only contain a numeric value but also the address space it relates to.

Reply
  • The processor does not have any instructions to write to the code memory. But I assume this processor does what lots of other processors does - it allows a part of the XDATA address range to be mapped as overlapping the CODE memory region.

    This allows XDATA writes to copy new contents to the code flash.

    Obviously, the manual for the C compiler will tell you how you set up a pointer into code space (or an array), to allow reading of data from the flash using MOVC instructions. And the manual also contains information how to set up XDATA pointers (or an array), allowing you to write into XDATA using MOVX instructions.

    "how to read and write a specific byte memory, ex: 0x0800"

    This question can't be answered, since it assumes that there is one unique address 0x0800. But the existence for MOVX and MOVC is that the processor have multiple address ranges that are not overlapping, or in some situations just partially overlapping. So a "real" address for a 8051 chip must not only contain a numeric value but also the address space it relates to.

Children
No data