i am trying to use code memory space to store some constants patterns. to do this, i have defined an array in code memory space as follows: unsigned char code A[]={0x00,0x3F,0x50,0x90,0x50,0x3F,0xAA}; it doesn't work at all or sometimes i get unpredicted results. but when i define the array in data memory and initialize the array as follows. can anyone help me? thanks A[1] = 0x00; A[2] = 0x3F; . A[6] = 0xAA
Note that
unsigned char code A[]={0x00,0x3F,0x50,0x90,0x50,0x3F,0xAA};
A[1] = 0x00; A[2] = 0x3F; : A[6] = 0xAA;
dear Andy Neil i am so thankful to youR attention, i checked startup.A51 to see if there is any option to manipulate the enternal code memory of 8051 for initialization, and there is no such option so far as i can see, so tell me if i am making a mistake, and then, this code is perfectly working well when i am initializing the array element by element in AT89C52 internal RAM, but because of the volume of data, i have no other option except using the code space. i even translated the C51 code i had written to assembly all by hand and it worked, but because of some complexities, it's not possible to wtire the entire code in assembly, i am looking forward to hear from you, thanKs.
You need to find out why the initialisation in the definition isn't working. See my previous replies: * Check your 'C' array indexing; * Use the simulator.
We cannot help you further unless you post the smallest complete program which shows the problem. Please copy and paste this from you editor - do not retype it.
have you ever tried to set the "code" definition in the first place. are you sure the array definition "A" is not defined elsewhere. Try out the following definition: code unsigned char MyArray[7]={0x00,0x3F,0x50,0x90,0x50,0x3F,0xAA};
thanks for your attention, and thanks foR your replay, actually there was nathing wrong with the code i had written, there was something wrong with the version of software i was using, i didn't know it was using a cracked one.