I am having trouble understanding what happens in the 8051 Memory when numbers are stored as Char types. As I understand it when the letter A is store as a Char type the memory holds 0x41. When the number 191 is stored as a Char Type I would expect the memory to hold 3 Hex digits in a string starting with 0x31 for the number 1. This is not what happens.In fact 191 is stored as 0XBF which is the Hex value for 191. I don't understand why we bother using numbers as Char if they are stored the same way Int types are stored?? Can someone explain this??
Your question needs to be a bit more specific:
Do you mean if you have, say, the character '3', how to get the corresponding numeric value of three?
Or vice-versa?
Or what?
Let's say I wanted to store in Code Memory the Character String 1,2 as 0x31 and 0x32. How would you do this. If you store 12 in code memory as type CHAR you will save 0x0C.
[any segment or other attribute info] char my_str[] = "12",
Note that the above will store a third character too - a '\0' string termination.
[any segment or other attribute info] char my_array[2] = { '1','2' };
No termination character since no C string involved.
The only bit of that which is specific to C51 is the "CODE memory" part.
For C51-specific details, see the C51 manual:
http://www.keil.com/support/man/docs/c51/c51_le_memareas.htm
The rest is standard 'C'...
Note that the following are all equivalent:
char my_array[2] = { '1','2' };
char my_array[2] = { 0x31,0x32 };
char my_array[2] = { 49,50 };
char my_array[2] = { 061,062 };
char my_array[2] = { 0x31,'2' };
Great this makes sense now THANX