I have the following variable declaration:
float xdata voltage _at_ 0x08E2;
When I assign a value and try to print if I always get 0.0:
voltage = 25.5; printf( "Volatage: %#5.2f", voltage );
Ouptut
Voltage: 0.0
Is there a reason for this?
Thanks.
I think I found the possible cause.
If I keep all XDATA varibles between 0x0000 ~ 0x0400 I can access them.
Here is the question, though. Shouldn't I have access to all 32K of program memory if I don't declare any data flash memory? I'm new to the 8051 development environment so this is a little confusing.
You haven't mentioned what chip you use.
What do you mean by "data flash memory"? The application is normally stored in flash - a special version of PROM that allows quick erase of sectors (or full chip).
But flash memory is not for variables since you can't modify data in flash memory. You have to erase a full sector to be able to write a new value to a variable.
Another thing: The C51 procesors normally separate data and program memory spaces, so a data access instruction can not access program memory, and a code access instruction can not access variable memory. Some C51 processors can have flash memory accessible both ways, to allow storage of either application code or configuration data. But your XDATA variables are expected to be variables, i.e. to bestored in RAM, not in flash.
Have you spent time reading up on the C51 architecture?
Per,
Sorry, I'm using TI's MSC1210Y5. I miss understood the documentation. It states on-chip SRAM is from 0x0000~0x03FF, which makes sense why the variable was in accessible.
I have very limited resources when it comes to the C51 architecture. I know the net is a great one but I haven't had a chance to filter through the hundreds of pages on the subject. Can you suggest any good ones?
Thanks, Paul
when it comes to the C51 architecture. ... Can you suggest any good ones?
none better than "the bible"
Erik
here are the links to "the bible" Chapter 1 - 80C51 Family Architecture: www.nxp.com/.../80C51_FAM_ARCH_1.pdf
Chapter 2 - 80C51 Family Programmer’s Guide and Instruction Set: www.nxp.com/.../80C51_FAM_PROG_GUIDE_1.pdf
Chapter 3 - 80C51 Family Hardware Description: www.nxp.com/.../80C51_FAM_HARDWARE_1.pdf