Hi I have the following array declared at the start of my program as global: int number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98}; 0 1 2 3 4 5 6 7 8 9 It is for a 7 segment display to display the numbers that I need, the array is from 0-9 in that order. My code to call the array is: P2 = number[4]; so in this case it should get the 4th number being 0x99 This works fine if i replace the 4 with 0,1 or 2 but anything greater than 2 all it does is return the data for 8 (80) If anyone can work out why this is doing this please let me know Thanks
May be a problem with the RAM in your target hardware. You should define it in ROM using the code memory type. Change definition to:
unsigned char code number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
while Reinhard did correct it, he did not mention your basic mistake in using int. While that supposedly would not make a difference, using int in lieu of char when char will do is an ugly PC habit that has no business in the uC world. Now, since you could not be bothered to select a toolset, I may be wrong since it could be that you referred to amemory rich chip in which case the above would be less important. Erik
erik Thanks for the little explination and reinhard thanks for the advice I didnt understand what you were saying about the memory stuff is there a link to that manual? If I just change the definition to what you suggested should it work?
Im using an 89LPC935.
View all questions in Keil forum