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
sorry it was a typo when i was writing it in the forum it is not NEVER DO THAT, ALWAYS use cut-and-paste
there has been several threads that went on for ages with no resolution because the posted code was not the code with the peoblem.
re your original question; have you heard of shift have you heard of union either will work
He has shifted - just that Keil don't do integer promotion...
yes i have heard of shift and would be using that method..
but how do i use a union in this scenario... can you explain with an example
what is integer promotion?
but how do i use a union in this scenario
He has never heard about Google, so the only way to get forward is by asking on the net.
That the answers have already been written and published, making Google searches a must faster route to progression, haven't sunk in yet...