# 24 bit math so I can read and write

Discussion in 'Electronic Basics' started by Randy, Mar 27, 2007.

1. ### RandyGuest

I am writing and reading to a microcontroller.
My largest allowable variables are 16 bit and 8 bit
How can I write a 24 bit value when I am limited by 16 and 8 bit
variables?

For instance I need to send a register value of HEX 200110 which is
configured for 24 bits.
This is equal to 2,097,424 in decimal format.
How do I divide this up into a 16 and 8 bit or 3 8-bit variable values
I can send it HEX or Binary.

Thanks

2. ### James BeckGuest

You hit on it below.
You read/write 3 8 bit pieces.
Well it kinda' depends.
How is the variables laid our in memory?
If it were an HC05 part I would know the variable is most likely stored
as three 8 bit values with the lowest address holding the upper byte
Other CPU/MCUs do it just the opposite.
Google "big endian" or "little endian"
Now, all you have to do is send those 3 bytes and you are done.
If you are using a high level language that supports INT24s then the
task is even easier. Just do shifts and mask off the byte you want to
send.

Jim

3. ### RandyGuest

Jim, I am using a Basic Stamp BS2.

4. ### Noway2Guest

If the platform you are using does not support numbers large enough for
your needs, then you need to roll your own routines. A while back, I
worked on an application that performed 24 bit arithmetic with an 8 bit
Motorola 65xx series processor. The math routines were modeled after
the grade school methods of long hand multiplication and division.

As far as transferring or storing data, it doesn't matter what format it
is in. To the computer it is all the same. You need to decide on the
protocol that will be used between the devices. The data doesn't
matter, the key is how it is interpreted.

5. ### James BeckGuest

OK, what are you sending this 24bit data to and how is it being sent
(uart, I2C, so on).

Jim

6. ### JohnGuest

You might want to check on the PICAXE forum
http://www.rev-ed.co.uk/picaxe/forum/forum.asp?forum_id=30&forum_title=PICAXE+Forum

There's been recent discussion on how to do 24 (and 32) bit
arithmetic. Since the PICAXE is programmed in a dialect of BASIC, the
conversion to Stamp should be relatively simple.

John

7. ### James BeckGuest

I might have been a bit slow, BUT I think he is trying to write to some
type of device's configuration register. If that is the case just hard
coding the three bytes into the code would be good enough to get by. I
think what threw me was the "math" word.

Jim