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

uVision 4 compiler memory allocation

Hi All,

I am using DS89C450 MCU and writing my C code using uVision 4 compiler. In my DS89, I had a SRAM of 1kB and I would like to declare a 500 variable of unsigned char therefore I use

unsigned char xdata IR[500];

When I compiler with uVision 4, it show no error and therefore I burn the Hex code into my MCU. However, when I write and then read the IR[500], it give incorrect value

I therefore proceed to use debugger to troubleshoot my code and everything works fine in the debugger. My code does not have any problem.

Therefore I suspect uVision 4 had assign the IR[500] to non SRAM location and therefore the value is actually not written and read.

I would like to know how can I make sure uVision4 assign the SRAM location correctly and is there any setting I need to set before compiling?

Pls help. Thanks a lot

Parents
  • Hi All Expert,

    Thanks alot. I figure out that I need to set the PMR.1 to use the SRAM. As for the uVision, I already set to use internal RAM and now it works.

    A question is that I had 1kB of internal SRAM. Can I declare 2 x 500 bytes of buffer?

    e.g.

    unsigned char xdata data[499], data1[499];
    

    I run the compiler and it doesnt give any error but when I run the MCU again the result is abnormal again.

Reply
  • Hi All Expert,

    Thanks alot. I figure out that I need to set the PMR.1 to use the SRAM. As for the uVision, I already set to use internal RAM and now it works.

    A question is that I had 1kB of internal SRAM. Can I declare 2 x 500 bytes of buffer?

    e.g.

    unsigned char xdata data[499], data1[499];
    

    I run the compiler and it doesnt give any error but when I run the MCU again the result is abnormal again.

Children