Binary to BCD conversion


Closed Thread
Results 1 to 9 of 9

Hybrid View

  1. #1


    Did you find this post helpful? Yes | No

    Default Re: Binary to BCD conversion

    How about


    shift right 4 times (thus losing bottom 4 bits and shifting 0 into top 4 bits)
    if 0-9 then add x30
    else add x37

    mask off the 4 msb's
    if 0-9 then add x30
    else add x37

    so for example 3A
    shifted becomes 3
    3 + x30 = x33 ASCII for "3"

    masked becomes x0A
    x0A + x37= x47 ASCII for "F"
    George

  2. #2
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: Binary to BCD conversion

    Well John, Here is the way I would do it. Assuming all 4, 8 bit counters are connected in series to get 32 bits:

    BIGNUM VAR LONG
    VALUE VAR BYTE
    JUNK VAR BYTE
    CHARPOS VAR BYTE
    DIGVALUE VAR BYTE

    MAIN:
    'THIS ASSUMES ALL 4, 8 BIT COUNTERS ARE IN SERIES ON SAME DATA AND CLOCK LINE
    'ADJUST DATA AND CLOCK LINE TO YOUR HARDWARE CONFIGURATION

    SHIFTIN REGDATAPIN,REGCLKPIN,MSBFIRST,[BIGNUM.BYTE3,BIGNUM.BYTE2,BIGNUM.BYTE1,BIGNUM.BYTE 0]

    '32 BIT VALUE IS CLOCKED IN TO LONG VARIABLE

    JUNK = 7 'SET DIGIT POINTER FOR 8 DIGITS TOTAL
    WHILE JUNK < 255
    VALUE = BIGNUM DIG(JUNK) 'VALUE OF DIGIT
    CHARPOS = JUNK + 1 'CALCULATED CHARACTER POSITION
    low load
    shiftout datapin,clockpin,MSBFIRST,[CHARPOS, VALUE] 'DATA SHIFTED TO DISPLAY
    high load
    JUNK = JUNK - 1 'NEXT DIGIT FROM MSBYTE TO LSBYTE
    WEND
    pause 1000
    goto main

    I hope this bit of code will help you.
    Dave Purola,
    N8NTA
    EN82fn

  3. #3


    Did you find this post helpful? Yes | No

    Default Re: Binary to BCD conversion

    Dave,

    Thank you for sharing this, your method does seem a lot simpler. I don't have LONGS available but imagine this could be worked around. I would be interested in having a go with something based on your method and see if there is much difference in the size of the compiled program.

    George,

    Thanks for your reply. I am a little confused though, does this convert to ASCII rather than BCD?

    John

  4. #4


    Did you find this post helpful? Yes | No

    Default Re: Binary to BCD conversion

    Thanks for your reply. I am a little confused though, does this convert to ASCII rather than BCD?
    I think I misunderstood the question, I thought BCD was a way of expressing a binary value as ASCII characters. So for example a byte would become two ASCII chars, a word 4 ASCII chars etc.
    George

  5. #5
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: Binary to BCD conversion

    John, If you limit the accumulated value to say 5 digits as in a word (65535 max) then you can use it without LONG's. I use this method to display MPH with 3 decimal places on a terminal thru a serial port by adding:

    TX_BYTES(TX_OUTPUT) = $30 + VALUE DIG JUNK 'Turn decimal value into ASCII
    Dave Purola,
    N8NTA
    EN82fn

  6. #6


    Did you find this post helpful? Yes | No

    Default Re: Binary to BCD conversion

    Dave,

    Interesting approach, seems like I got too bogged down in shifting and adding multiple times rather than using the more obvious arithmetic capabilities of PICBASIC.

    George,

    Thanks for the hint on conversion to ASCII, I'm sure it will come in useful at some stage.
    For info, BCD represents the decimal digits 0-9 using a nibble of data. With BCD only the states 0-9 are valid. 0xA to 0xF are forbidden. Its used for seven segment displays, real time clock modules, etc.

Similar Threads

  1. Trouble Reading Binary or BCD from a GPS
    By gavo in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 7th August 2011, 18:27
  2. Nice tutorial on BCD to Binary
    By lerameur in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 9th December 2010, 18:21
  3. PIC16F628 - Convert Binary to BCD?
    By steng in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 20th March 2009, 08:17
  4. BCD conversion
    By Macgman2000 in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 17th October 2005, 19:24
  5. HEX to BCD conversion
    By Don Mario in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 2nd February 2005, 14:39

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts