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
Two things - what settings have you made in your project file where you inform the tools what memory you have?
Another thing - I don't work with your processor, but some of them requires specific configuration bits to be set to activate that XDATA memory since they may support multiple different mappings.
But one question - if you need an array of 500 elements, why do you then create an array with 501 elements?
And another thing - avoid using all-upper-case variable names. All upper-case is normally reserved for preprocessor symbols, to make a developer aware that a symbol as seen in the source code may represent something completely different for the actual compiler.
He didn't.