This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Problem Splitting Integer Variable

hi everyone...

i am facing a problem in my college project...

i have a 16bit unsigned integer variable and i need to store it in the 24C02 EEPROM, but that saves 8bit variable at a time...

the number i need to save is in the form of a decimal integer, how do i split it into 2 unsigned char variables..

i am using the following method

unsigned int val;
unsigned char a,b;

a= (val & 0xFF00)>>8;
b=(val * 0x00FF);


is this code right?

and when i read it back i read it like this

unsigned int val;
val= (((a & 0x00FF)<<8) | (b & 0x00FF));

is this code right?
or is there any other way?

note: i obtain val initially from the user input by using this routine

unsigned int Temp2=0;
Temp2*=10;
Temp2+=Keypress-'0';

Keypress is the input obtained from the keyboard which is ASCII and in the range '0' to '9' and Temp2 is stored in the EEPROM using the Routine i tried


Error:

i tried saving 1234 and when i read it back i got 1024
6666 was read back as 6656
5555 was read back as 5376
1600 was read back as 1536

0