Page 1 of 1

### Decimal to BCD

Posted: Wed Mar 19, 2014 12:41 am
Thanks to the great Medelec35 I know how to convert BCD to decimal:

But how can I convert decimal back to BCD?

I'm using a DS3231 (real time clock) and need to send the time and date in BCD to set the clock.
For instance the seconds are the four LSB from a byte, and the tenths of the seconds are bit 4/5/6 from the byte (bit 7 is not used in the range 0-59).

So if I want to set the seconds, how can I convert the decimal value to a BCD value?

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 1:33 am
Use:

Code: Select all

`bcd = (dec / 10) << 4 + (dec % 10)`

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 5:08 pm
kersing wrote:Use:

Code: Select all

`bcd = (dec / 10) << 4 + (dec % 10)`

Thanks, but it doesn't seem to work??

As a test I use a decimal value and convert it to BCD : bcd = (dec / 10) << 4 + (dec % 10)
Then I convert the BCD back to decimal: dec = (bcd >> 4) * 10 + (bcd & 15)
And I get a different result than the first value..

Am I doing something wrong?

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 8:15 pm
I have just made a program for the DS3231 that you can use if you want.
This RTC is really nice and I like it much more than the DS1307. So much so that I just ordered 50 of them

I have to modify the program first so I'll attach it here in a couple of minutes.

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 8:21 pm
Here is the program. I'm not the best at commenting my programming so hopefully you'll understand my programming anyway

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 10:08 pm
Maybe If you would like I can create a component for this DS3231 device.
Let me know If you are interested.

Regards Jordy

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 10:10 pm
I am
Would be so much simpler and neater. Feel free to use anything and everything you want from my program that I posted.

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 10:25 pm
I will start tomorrow,
First a need to take my granny to the mall, so that will take most of the day
When Im back I will start building, but since I don't have this device here at home you need to be my test person, to see if everything is working as it should.
Hope you don't mind .

Regards Jordy.

PS. will let you know by PM

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 10:38 pm
Sure, no problem.

If you can check the datasheet to see if there is any feature you can add to the component that would be great. The module I have does not have pins for the interrupt pins that the IC has for example, so maybe a function to set the two different alarms? maybe a function to enable one of the INT outputs to output a 1hz square wave? Could be useful in many cases I think, one could simulate the 1hz sq wave output from a GPS for example. I will be using a GPS to set the RTC in at least one of my projects.

### Re: Decimal to BCD

Posted: Wed Mar 19, 2014 11:46 pm
Thanks to hyperion007 I've found these conversions

Decimal to BCD.
bcd = ((dec / 10) << 4) + (dec MOD 10)

BCD to decimal.
dec = ((bcd >> 4) * 10) + (bcd & 15)

Maybe these could be of any help in the future for anyone..
If anyone got a nicer way of doing this?

tags: bcd dec conversion bcd decimal