I'm trying to store data in the xdata memory location beginning at 0x000. What is wrong with my code?
typedef struct { unsigned int X1; unsigned int X2; unsigned int X3; }fordon; fordon xdata reg[10] _at_ 0x000; reg[0].X1 = 150; reg[0].X2 = 160; reg[0].X3 = 170; printf("X1 = %d, X2 = %d, X3 = %d",reg[0].X1,reg[0].X2,reg[0].X3);
"What is wrong with my code?" Nothing at all, as far as I can see. One small point - you should really use the %u format specifier for unsigned int but that wouldn't cause a problem with the values you have chosen.
Did you enable the on-chip XRAM using the startup code for this device?
I marked the "Use onchip Xdata" in the target dialog. Is this enought or do I have to implement the startupfile in some way? /Jonas Finell
As Keil support said you have to set up XRAM in the startup.A51(otherwise referred to as Start_AD.a51)
; On-chip XDATA RAM ; XRAMEN Val Description ; ------ --- ----------- XRAMEN EQU 1; 0 = disable on-chip XDATA RAM and access off-chip XDATA space ; ; 1 = enable on-chip XDATA RAM
View all questions in Keil forum