Problem to read EEPROM memory

Status
Not open for further replies.

ecaits

Member level 4
Joined
Jan 16, 2014
Messages
76
Helped
0
Reputation
0
Reaction score
0
Trophy points
6
Visit site
Activity points
579
Dear Friends,

I have used EEPROM memory to store the character by keypad. I have used EEPROM memory from byte 0 to byte 1 and I have store one digit to each location as character (by 4x4 keypad). I am working on PIC16F877 using Hi-Tech C compiler.

Say,

Byte 0 = 1,
Byte 1 = 4,
Byte 2 = 6,
Byte 3 = 3,
Byte 4 = 1.

Now I want to make it integer, say total = 14631.

I have used following logic to do the task.

int Value, total=0, p=10000;

for(i=0; i<5; i++)
{
Value= eeprom_read(i); // To read the digit
Value= Value-48; // to make it integer
total = total+(Value*p); // to make total
p=p/10;
}

But it is not giving proper output.

Can anybody suggest other logic or where is the problem in above logic.

Thank you in advance,

Nirav
 

Try:
Code:
total = (eeprom_read(0) & 0x0f) * 10000;
total += (eeprom_read(1) & 0x0f) * 1000;
total += (eeprom_read(2) & 0x0f) * 100;
total += (eeprom_read(3) & 0x0f) * 10;
total += eeprom_read(4) & 0x0f;

I used ' & 0x0f' rather than '-48' to make ASCII into binary because it should use less compiler code and it also limits the range of values to 0 - F. Be careful with the range of numbers you use, you can't fit 99999 into an integer, even an unsigned one!

Brian.
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…