Page 1 of 1
Decimal to BCD
Posted: Wed Mar 19, 2014 12:41 am
by MJU
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
by kersing
Use:
Code: Select all
bcd = (dec / 10) << 4 + (dec % 10)
Re: Decimal to BCD
Posted: Wed Mar 19, 2014 5:08 pm
by MJU
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
by hyperion007
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
by hyperion007
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
by Jordy101091
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
by hyperion007
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
by Jordy101091
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
by hyperion007
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
by MJU
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